lk.zachem.info/app/Modules/Bitrix/Http/Controllers/BitrixApiController.php

85 lines
3.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Этот контроллер обеспечивает прием данных со стороны битрикса.
* На входе - обязательный параметр "action"
* и токен объекта, по которому определяется, с каким объектом продолжать работу.
* Метод index проверяет action и если нашел его среди констант класса,
* направляет в соответствующий обработчик.
* Если action не найден, то возвращает false.
* Если по токену не найден объект, то возвращает false.
*/
namespace Modules\Bitrix\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Modules\Main\Models\Deal\Deal;
use Modules\Main\Models\Deal\DealStatus;
use App\Notifications\UniqueContact;
use App\Notifications\NotUniqueContact;
use App\Notifications\Deal\DealUnique;
use App\Notifications\Deal\DealNotUnique;
use Modules\Bitrix\Models\BitrixId;
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): bool
{
if (!$bxId = BitrixId::where('token', $request->token)->first()) {
return false;
};
$object = $bxId->bitrixable;
switch ($request->action) {
case $this::ACTION_CONFIRM_DEAL:
return $this->confirmDeal($object, $request);
break;
case $this::ACTION_UPDATE_CONTRACT:
return $this->updateContract($object, $request);
break;
case $this::ACTION_CONFIRM_COMPANY:
return $this->confirmCompany($request, $object);
break;
}
return false;
}
public function confirmCompany(Request $request, $company)
{
$confirmer = new ConfirmCompanyController;
return $confirmer($request, $company);
}
public function confirmDeal(Deal $deal, Request $request)
{
$agent = $deal->agent;
$request->is_unique = json_decode($request->is_unique, true);//т.к. приходит в строке
if ($request->is_unique == true) {
$deal->status = DealStatus::UNIQUE;
if ($request->has('unique_until')) {
$deal->unique_until = $request->unique_until;
}
$agent->user->notify(new UniqueContact($deal));
} else {
$deal->status = DealStatus::NOT_UNIQUE;
$agent->user->notify(new NotUniqueContact($deal));
}
if (!$agent->bitrixId()) {
$agent->setBitrixId($request->agent_id);
}
$deal->save();
return true;
}
public function updateContract(Deal $deal, Request $request)
{
//print_r($request->all());die();
$contract = new ContractUpdateController;
return $contract($deal, $request);
}
}