diff --git a/app/Livewire/CreateClientForm.php b/app/Livewire/CreateClientForm.php index 9d95361..dc24942 100644 --- a/app/Livewire/CreateClientForm.php +++ b/app/Livewire/CreateClientForm.php @@ -176,6 +176,7 @@ public function sendToBitrix(Deal $deal) 'BROKER_SECOND_NAME' => $agentName['secondName'], 'BROKER_PHONE' => $agent->user->phone, 'BROKER_INN' => $agent->company->inn, + 'BROKER_CONTACT_ID' => $agent->bitrixId(), 'OBJECT_NAME' => Complex::find($this->client['complexId'])->name, 'CALLBACK_URL' => route('api.client', ['hash' => $deal->confirmToken]), ]; diff --git a/app/Models/Deal/Deal.php b/app/Models/Deal/Deal.php index 5539156..cefb676 100644 --- a/app/Models/Deal/Deal.php +++ b/app/Models/Deal/Deal.php @@ -42,7 +42,6 @@ public function contract() protected static function booted(): void { - static::creating(function (Deal $deal) { $deal->confirm_token = hash('sha256', json_encode($deal->all())); @@ -58,11 +57,11 @@ protected static function booted(): void static::deleted(function (Deal $deal) { - /*UserRole::where([ - 'user_id' => $deal->client_id, - 'role_id' => Role::CLIENT - ])->delete();*/ + $deal->bitrixy()->delete(); + }); } + + } diff --git a/app/Modules/Admin/Http/Controllers/AdminBitrixController.php b/app/Modules/Admin/Http/Controllers/AdminBitrixController.php index 077893b..6976770 100644 --- a/app/Modules/Admin/Http/Controllers/AdminBitrixController.php +++ b/app/Modules/Admin/Http/Controllers/AdminBitrixController.php @@ -45,6 +45,7 @@ public function syncDeals(Agent $agent) foreach ($deals as $deal) { $inDeal = $deal['deal'];//входящие данные по сделке + if (count($deal['contacts']) == 0) { continue; @@ -70,7 +71,7 @@ public function syncDeals(Agent $agent) { $dealItem = Deal::create([ 'client_id' => $client->id, - 'complex_id' => $inDeal->complex_id, + 'complex_id' => $inDeal['complex_id'], 'agent_id' => $agent->id, 'status' => DealStatus::UNIQUE, ]); diff --git a/app/Modules/Admin/Http/Controllers/AdminBitrixWebhooksController.php b/app/Modules/Admin/Http/Controllers/AdminBitrixWebhooksController.php new file mode 100644 index 0000000..237a122 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/AdminBitrixWebhooksController.php @@ -0,0 +1,54 @@ +keyBy('name')->toArray(); + + return view('admin::bitrix.webhooks', [ + 'names' => $this->names, + 'webhooks' => $webhooks + ]); + } + + public function create(Request $request) + { + foreach ($this->names as $name) + { + if ($request->has($name) && $request->$name) + { + BitrixWebhooks::updateOrCreate( + ['name' => $name], + [ + 'name' => $name, + 'url' => $request->$name + ] + ); + } + } + return back(); + } + + public function delete($name) + { + BitrixWebhooks::where('name', $name)->delete(); + } +} \ No newline at end of file diff --git a/app/Modules/Admin/Routes/web.php b/app/Modules/Admin/Routes/web.php index 1532b76..a3511bc 100644 --- a/app/Modules/Admin/Routes/web.php +++ b/app/Modules/Admin/Routes/web.php @@ -61,4 +61,8 @@ Route::post('/admin/bitrix/agents/{agent}/set', [Modules\Admin\Http\Controllers\AdminBitrixController::class, 'setAgentId'])->name('admin.bitrix.agent.set'); Route::get('/admin/bitrix/agents/{agent}/deals/sync', [Modules\Admin\Http\Controllers\AdminBitrixController::class, 'syncDeals'])->name('admin.bitrix.agent.deals.sync'); + Route::get('/admin/bitrix/webhooks', [Modules\Admin\Http\Controllers\AdminBitrixWebhooksController::class, 'index'])->name('admin.bitrix.webhooks'); + Route::post('/admin/bitrix/webhooks', [Modules\Admin\Http\Controllers\AdminBitrixWebhooksController::class, 'create'])->name('admin.bitrix.webhooks.create'); + + }); \ No newline at end of file diff --git a/app/Modules/Admin/Views/bitrix/index.blade.php b/app/Modules/Admin/Views/bitrix/index.blade.php index d672a6d..b2ace4b 100644 --- a/app/Modules/Admin/Views/bitrix/index.blade.php +++ b/app/Modules/Admin/Views/bitrix/index.blade.php @@ -1,6 +1,17 @@ @php($title = 'Битрикс24') @extends('layouts.admin') @section('content') +
Создать вебхуки на стороне Битрикса и указать их в этом разделе +
+ Перейти +