morphTo(); } protected static function booted() { static::creating(function (BitrixId $bitrixId) { if ($bitrixId->bx_id) { return; } switch ( $bitrixId->bitrixable_type ) { case Deal::class: $deal = Deal::findOrFail($bitrixId->bitrixable_id); $sender = new SendDeal($deal); $result = $sender->send(); if ($result == true) { $id = $sender->resultData['id']; $bitrixId->bx_id = $id; return; } break; case Agent::class: $agent = Agent::findOrFail($bitrixId->bitrixable_id); $sender = new SendAgent($agent); $result = $sender->send(); if ($result == true) { $id = $sender->resultData['id']; $bitrixId->bx_id = $id; return; }; break; case DealClients::class: $dealClient = DealClients::findOrFail($bitrixId->bitrixable_id); $client = $dealClient->client; $sender = new SendClient($client); $result = $sender->send(); if ($result) { $id = $sender->resultData['id']; $bitrixId->bx_id = $id; $bitrixId->bitrixable_type = Client::class; $bitrixId->bitrixable_id = $client->id; return; }; break; case Company::class: $company = Company::findOrFail($bitrixId->bitrixable_id); $sender = new SendCompany($company); $result = $sender->send(); if ($result == true) { $id = $sender->resultData['id']; $bitrixId->bx_id = $id; return; }; break; } 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) { return; } switch ( $bitrixId->bitrixable_type ) { case Deal::class: $deal = Deal::findOrFail($bitrixId->bitrixable_id); $agentAppender = new SendDealAgent($deal); $agentAppender->send(); break; case Client::class: $client = Client::findOrFail($bitrixId->bitrixable_id); if ($dealClient = DealClients::where('client_id', $client->id)->orderByDesc('id')->first()) { $clientAppender = new SendDealClient(Deal::find($dealClient->deal_id), $client); $result = $clientAppender->send(); } break; } }); } }