lk.zachem.info/app/Http/Controllers/Bitrix/ClientsApiController.php

74 lines
2.0 KiB
PHP

<?php
namespace App\Http\Controllers\Bitrix;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Deal\Deal;
use App\Models\Deal\DealStatus;
use App\Notifications\UniqueContact;
use App\Notifications\NotUniqueContact;
use Illuminate\Support\Facades\Log;
class ClientsApiController extends Controller
{
public const ACTION_CONFIRM = 'confirm';
public const ACTION_UPDATE_CONTRACT = 'contract';
public function index(Request $request)
{
if ($deal = Deal::where('confirm_token', $request->hash)->first())
{
switch ( $request->action )
{
case $this::ACTION_CONFIRM:
$this->confirm($deal, $request);
break;
case $this::ACTION_UPDATE_CONTRACT:
$this->updateContract($deal, $request);
break;
}
return true;
}
return false;
}
public function confirm(Deal $deal, Request $request)
{
$agent = $deal->agent;
if ((bool) $request->is_unique)
{
$deal->status = DealStatus::UNIQUE;
$agent->user->notify(new UniqueContact($deal));
}
else
{
$deal->status = DealStatus::NOT_UNIQUE;
$agent->user->notify(new NotUniqueContact($deal));
}
Log::build([
'driver' => 'single',
'path' => storage_path('logs/bitrix.log'),
])->error(
json_encode(
[
'is_unique' => $request->is_unique,
'deal' => $deal->id,
'status' => $deal->status
]
)
);
$deal->save();
return $deal->id;
}
public function updateContract(Deal $deal, Request $request)
{
$contract = new ContractApiController;
$contract($deal, $request);
}
}