lk.zachem.info/app/Modules/Bitrix/Http/Controllers/BitrixApiController.php
developer 59bdd07bc0 Обновлен способ вывода главного меню.
Обновлена обработка проверки на уникальность из битрикса
2025-12-09 09:11:33 +08:00

89 lines
2.6 KiB
PHP

<?php
namespace Modules\Bitrix\Http\Controllers;
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 App\Notifications\Deal\DealUnique;
use App\Notifications\Deal\DealNotUnique;
use Illuminate\Support\Facades\Log;
class BitrixApiController extends Controller
{
public const ACTION_CONFIRM_DEAL = 'confirm_deal';
public const ACTION_UPDATE_CONTRACT = 'update_contract';
public const ACTION_CONFIRM_COMPANY = 'confirm_company';
public function index(Request $request)
{
switch ( $request->action )
{
case $this::ACTION_CONFIRM_DEAL:
$deal = Deal::where('confirm_token', $request->token)->first();
$this->confirmDeal($deal, $request);
break;
case $this::ACTION_UPDATE_CONTRACT:
$deal = Deal::where('confirm_token', $request->token)->first();
$this->updateContract($deal, $request);
break;
case $this::ACTION_CONFIRM_COMPANY:
$this->confirmCompany($request);
break;
}
return false;
}
public function confirmCompany(Request $request)
{
$confirmer = new ConfirmCompanyController;
$confirmer($request);
}
public function confirmDeal(Deal $deal, Request $request)
{
$agent = $deal->agent;
if ((bool) $request->is_unique == true)
{
$deal->status = DealStatus::UNIQUE;
$agent->user->notify(new UniqueContact($deal));
$deal->notify(new DealUnique());
}
else
{
$deal->status = DealStatus::NOT_UNIQUE;
$agent->user->notify(new NotUniqueContact($deal));
$deal->notify(new DealNotUnique());
}
if (!$agent->bitrixId())
{
$agent->setBitrixId($request->agent_id);
}
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 ContractUpdateController;
$contract($deal, $request);
}
}