From c01e47aff2caf942c4af070b9155c81bf9cc8f37 Mon Sep 17 00:00:00 2001 From: developer Date: Thu, 30 Apr 2026 12:03:47 +0800 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B3=D0=BB=D0=B0=D0=B2=D0=BD=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D0=B0=20=D0=B0=D0=B3?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Modules/Bitrix/Models/BitrixId.php | 87 +++++++++++----------- app/Modules/Bitrix/Models/BitrixSender.php | 1 - app/Modules/Bitrix/Traits/Bitrixable.php | 9 +++ resources/views/user/dashboard.blade.php | 2 +- 4 files changed, 53 insertions(+), 46 deletions(-) diff --git a/app/Modules/Bitrix/Models/BitrixId.php b/app/Modules/Bitrix/Models/BitrixId.php index 5987c3b..72cbb79 100644 --- a/app/Modules/Bitrix/Models/BitrixId.php +++ b/app/Modules/Bitrix/Models/BitrixId.php @@ -28,44 +28,45 @@ public function bitrixable(): MorphTo return $this->morphTo(); } + protected function getSender(BitrixId $bitrixId) + { + $object = false; + $sender = false; + switch ($bitrixId->bitrixable_type) { + case Deal::class: + $deal = Deal::findOrFail($bitrixId->bitrixable_id); + $sender = new SendDeal($deal); + $object = $deal; + break; + case Agent::class: + $agent = Agent::findOrFail($bitrixId->bitrixable_id); + $sender = new SendAgent($agent); + break; + case DealClients::class: + $dealClient = DealClients::findOrFail($bitrixId->bitrixable_id); + $client = $dealClient->client; + $sender = new SendClient($client); + $bitrixId->bitrixable_type = Client::class; + $bitrixId->bitrixable_id = $client->id; + $object = $client; + break; + case Company::class: + $company = Company::findOrFail($bitrixId->bitrixable_id); + $sender = new SendCompany($company); + $object = $company; + break; + } + return $sender; + } + protected static function booted() { - static::creating(function (BitrixId $bitrixId) - { - if ($bitrixId->bx_id) - { + static::creating(function (BitrixId $bitrixId) { + if ($bitrixId->bx_id) { return; } - $object = false; - $sender = new BitrixSender(); - switch ( $bitrixId->bitrixable_type ) - { - case Deal::class: - $deal = Deal::findOrFail($bitrixId->bitrixable_id); - $sender = new SendDeal($deal); - $object = $deal; - break; - case Agent::class: - $agent = Agent::findOrFail($bitrixId->bitrixable_id); - $sender = new SendAgent($agent); - break; - case DealClients::class: - $dealClient = DealClients::findOrFail($bitrixId->bitrixable_id); - $client = $dealClient->client; - $sender = new SendClient($client); - $bitrixId->bitrixable_type = Client::class; - $bitrixId->bitrixable_id = $client->id; - $object = $client; - break; - case Company::class: - $company = Company::findOrFail($bitrixId->bitrixable_id); - $sender = new SendCompany($company); - $object = $company; - break; - } - if ($sender) - { - //$bitrixId->token = Hash::make(json_encode([$object])); + $sender = $this->getSender($bitrixId); + if ($sender) { $bitrixId->token = hash('sha256', $bitrixId->bx_id . $bitrixId->bitrixable_id . $bitrixId->bitrixable_type); $sender->setCallbackUrl( route('api.bx.action', [ @@ -73,8 +74,7 @@ protected static function booted() ]) ); $result = $sender->send(); - if ($result) - { + if ($result) { $id = $sender->resultData['id']; $bitrixId->bx_id = $id; return; @@ -83,14 +83,14 @@ protected static function booted() throw new \Exception('Error of bitrix identifier getter for ' . $bitrixId->bitrixable_type . ' with id ' . $bitrixId->bitrixable_id); }); - static::created(function (BitrixId $bitrixId) - { - if (!$bitrixId->bx_id) - { + //Агентов и клиентов отправляю после создания, + //т.к. на стороне битрикса нужна связка сущностей + //по созданной сделке + static::created(function (BitrixId $bitrixId) { + if (!$bitrixId->bx_id) { return; } - switch ( $bitrixId->bitrixable_type ) - { + switch ($bitrixId->bitrixable_type) { case Deal::class: $deal = Deal::findOrFail($bitrixId->bitrixable_id); $agentAppender = new SendDealAgent($deal); @@ -98,8 +98,7 @@ protected static function booted() break; case Client::class: $client = Client::findOrFail($bitrixId->bitrixable_id); - if ($dealClient = DealClients::where('client_id', $client->id)->orderByDesc('id')->first()) - { + if ($dealClient = DealClients::where('client_id', $client->id)->orderByDesc('id')->first()) { $clientAppender = new SendDealClient(Deal::find($dealClient->deal_id), $client); $result = $clientAppender->send(); } diff --git a/app/Modules/Bitrix/Models/BitrixSender.php b/app/Modules/Bitrix/Models/BitrixSender.php index a1951ab..5bba093 100644 --- a/app/Modules/Bitrix/Models/BitrixSender.php +++ b/app/Modules/Bitrix/Models/BitrixSender.php @@ -66,7 +66,6 @@ public function send() $postdata = http_build_query( $this->data ); - //dd($this->data); $opts = array( 'ssl' => array( 'verify_peer' => true, diff --git a/app/Modules/Bitrix/Traits/Bitrixable.php b/app/Modules/Bitrix/Traits/Bitrixable.php index 27d3787..1e13d8c 100644 --- a/app/Modules/Bitrix/Traits/Bitrixable.php +++ b/app/Modules/Bitrix/Traits/Bitrixable.php @@ -78,6 +78,15 @@ public static function firstOrCreate($attributes = [], $values = []) } return true; } + + /*protected function save() { + if ($bitrixId = $this->bitrixy()) + { + $bitrixId = $bitrixId->bx_id; + + } + parent::save(); + }*/ } diff --git a/resources/views/user/dashboard.blade.php b/resources/views/user/dashboard.blade.php index 7dc2fdc..ec12f28 100644 --- a/resources/views/user/dashboard.blade.php +++ b/resources/views/user/dashboard.blade.php @@ -47,7 +47,7 @@ class="btn list-group-item list-group-item-action p-3 bg-white rounded border bo
-
+
Добавить клиента