From 043653df9c1fa38c09190bbc5120a42c37e385b4 Mon Sep 17 00:00:00 2001 From: Thekindbull Date: Mon, 4 Aug 2025 01:04:03 +0800 Subject: [PATCH] fix of contracts --- .../Bitrix/ContractApiController.php | 3 +- .../Controllers/AdminBitrixController.php | 34 +++++++++++-------- app/Modules/Bitrix/Traits/Bitrixable.php | 15 ++++++++ ...d_plan_image_field_to_contracts_table.php} | 8 ++--- .../Http/Controllers/ContractsController.php | 14 ++++++++ app/Modules/Contracts/Models/Contract.php | 3 +- .../Contracts/Models/ContractStatus.php | 25 ++++++++++++-- app/Modules/Contracts/Routes/web.php | 2 ++ .../Views/livewire/table/index.blade.php | 11 +++--- lang/ru/contracts.php | 4 +-- .../views/clients/contract/index.blade.php | 29 ++++++++-------- 11 files changed, 105 insertions(+), 43 deletions(-) rename app/Modules/Contracts/Database/Migrations/{2025_06_18_020419_create_contracts_table.php => 2025_08_02_020419_add_plan_image_field_to_contracts_table.php} (63%) diff --git a/app/Http/Controllers/Bitrix/ContractApiController.php b/app/Http/Controllers/Bitrix/ContractApiController.php index 2485f50..9d2f5ef 100644 --- a/app/Http/Controllers/Bitrix/ContractApiController.php +++ b/app/Http/Controllers/Bitrix/ContractApiController.php @@ -27,7 +27,8 @@ public function __invoke(Deal $deal, Request $request) 'date' => $request->date,//дата ДДУ 'reg_date' => $request->reg_date,//Дата регистрации ДДУ 'payment_type' => $request->payment_type,//Вид оплаты - 'plan7_id' => $request->plan7_id + 'plan7_id' => $request->plan7_id, + 'base64_image' => $request->plan_image ] ); $agent = $deal->agent; diff --git a/app/Modules/Admin/Http/Controllers/AdminBitrixController.php b/app/Modules/Admin/Http/Controllers/AdminBitrixController.php index 66ad32b..98af25a 100644 --- a/app/Modules/Admin/Http/Controllers/AdminBitrixController.php +++ b/app/Modules/Admin/Http/Controllers/AdminBitrixController.php @@ -38,6 +38,7 @@ public function setAgentId(Request $request, Agent $agent) } public function syncDeals(Agent $agent) { + $importedCount = 0; $url = 'https://b24alfa.pro/channels/lk/getDealsOfContact?id=' . $agent->bitrixId(); $data = file_get_contents($url); $deals = json_decode($data, true); @@ -51,7 +52,7 @@ public function syncDeals(Agent $agent) //Загрузка контактов if ($deal['contacts'][0]['phone']) { - $client = User::createOrFirst( + $client = User::firstOrCreate( ['phone' => $deal['contacts'][0]['phone']], [ 'name' => $deal['contacts'][0]['name'], @@ -60,7 +61,7 @@ public function syncDeals(Agent $agent) ); } ; - $dealItem = false; + $dealItem = false; //собственный, не из битрикса $bitrixId = BitrixId::where('bx_id', $deal['deal']['deal_id']) ->where('bitrixable_type', Deal::class); //Загрузка сделок @@ -80,19 +81,24 @@ public function syncDeals(Agent $agent) $dealItem = Deal::find($bitrixId->bitrixable_id); } ; - $inDeal = $deal['deal']; - $contract = Contract::updateOrCreate( - ['deal_id' => $dealItem->id], - [ - 'price' => $inDeal['price'], - 'square' => $inDeal['square'], - 'floor' => $inDeal['floor'], - 'room' => $inDeal['room'], - 'plan7_id' => $inDeal['plan7_id'] - ] - ); - $this->sendDealToBitrix($dealItem); + $inDeal = $deal['deal'];//входящие данные по сделке + if ($dealItem) + { + $importedCount++; + $contract = Contract::updateOrCreate( + ['deal_id' => $dealItem->id], + [ + 'price' => $inDeal['price'], + 'square' => $inDeal['square'], + 'floor' => $inDeal['floor'], + 'room' => $inDeal['room'], + 'plan7_id' => $inDeal['plan7_id'] + ] + ); + $this->sendDealToBitrix($dealItem); + } } + return back()->with('success', 'Импортировано ' . $importedCount . ' сделок'); } function sendDealToBitrix(Deal $deal) diff --git a/app/Modules/Bitrix/Traits/Bitrixable.php b/app/Modules/Bitrix/Traits/Bitrixable.php index 9e021e3..0c99032 100644 --- a/app/Modules/Bitrix/Traits/Bitrixable.php +++ b/app/Modules/Bitrix/Traits/Bitrixable.php @@ -34,4 +34,19 @@ public function setBitrixId($id): bool } return false; } + + protected static function booted() + { + static::deleted(function ($bitrixableItem) + { + $this->bitrixable()->delete(); + }); + + static::forceDeleted(function ($bitrixableItem) + { + $this->bitrixable()->delete(); + }); + } } + + diff --git a/app/Modules/Contracts/Database/Migrations/2025_06_18_020419_create_contracts_table.php b/app/Modules/Contracts/Database/Migrations/2025_08_02_020419_add_plan_image_field_to_contracts_table.php similarity index 63% rename from app/Modules/Contracts/Database/Migrations/2025_06_18_020419_create_contracts_table.php rename to app/Modules/Contracts/Database/Migrations/2025_08_02_020419_add_plan_image_field_to_contracts_table.php index 5b27aff..a1fd9b7 100644 --- a/app/Modules/Contracts/Database/Migrations/2025_06_18_020419_create_contracts_table.php +++ b/app/Modules/Contracts/Database/Migrations/2025_08_02_020419_add_plan_image_field_to_contracts_table.php @@ -11,9 +11,9 @@ */ public function up(): void { - Schema::create('contracts', function (Blueprint $table) { - $table->id(); - $table->timestamps(); + Schema::table('client_contract', function (Blueprint $table) + { + $table->longText('base64_image')->nullable(); // Or not nullable if required }); } @@ -22,6 +22,6 @@ public function up(): void */ public function down(): void { - Schema::dropIfExists('contracts'); + //Schema::dropIfExists('contracts'); } }; diff --git a/app/Modules/Contracts/Http/Controllers/ContractsController.php b/app/Modules/Contracts/Http/Controllers/ContractsController.php index 926a1b7..a87369b 100644 --- a/app/Modules/Contracts/Http/Controllers/ContractsController.php +++ b/app/Modules/Contracts/Http/Controllers/ContractsController.php @@ -16,4 +16,18 @@ public function index() 'status' => 'all' ]); } + + public function delete(Contract $contract) + { + $deal = $contract->deal(); + if ($contract->delete()) + { + if ($deal->delete()) + { + return back()->with('success', 'Договор был успешно удален из базы данных'); + + } + } + return back()->withErrors('Не удалось корректно удалить договор и сделку. Попробуйте позже.'); + } } \ No newline at end of file diff --git a/app/Modules/Contracts/Models/Contract.php b/app/Modules/Contracts/Models/Contract.php index 427188c..374f135 100644 --- a/app/Modules/Contracts/Models/Contract.php +++ b/app/Modules/Contracts/Models/Contract.php @@ -25,7 +25,8 @@ class Contract extends Model 'date',//дата ДДУ 'reg_date',//Дата регистрации ДДУ 'payment_type',//Вид оплаты - 'plan7_id'//ид помещения из plan7 + 'plan7_id',//ид помещения из plan7 + 'base64_image' ]; public function deal() diff --git a/app/Modules/Contracts/Models/ContractStatus.php b/app/Modules/Contracts/Models/ContractStatus.php index 672428c..3cae631 100644 --- a/app/Modules/Contracts/Models/ContractStatus.php +++ b/app/Modules/Contracts/Models/ContractStatus.php @@ -3,9 +3,30 @@ class ContractStatus { const NEW = 'NEW'; - const TREATY = 'TREATY'; //переговоры + const TREATY = 'TREATY'; //Выплачено const RESERVATION = 'RESERVATION'; //бронь const SUCCESS = "SUCCESS"; const DECLINE = "DECLINE"; -} + public static function getName($status) + { + return __('contracts.status_' . $status); + } + public static function getHtmlColor($status) + { + switch ( $status ) + { + case self::NEW: + return '#ccc'; + case self::RESERVATION: + return '#4fb5e5'; + case self::TREATY: + return '#e3e54f'; + case self::SUCCESS: + return '#4fe576'; + case self::DECLINE: + return '#eb612c'; + } + return '#ccc'; + } +} \ No newline at end of file diff --git a/app/Modules/Contracts/Routes/web.php b/app/Modules/Contracts/Routes/web.php index 7d3ad78..e0c056b 100644 --- a/app/Modules/Contracts/Routes/web.php +++ b/app/Modules/Contracts/Routes/web.php @@ -6,4 +6,6 @@ Route::middleware(['auth'])->group(function () { Route::get('/contracts', [ContractsController::class, 'index'])->name('contracts'); + Route::post('/contracts/{contract}/delete', [ContractsController::class, 'delete'])->name('contract.delete'); + }); \ No newline at end of file diff --git a/app/Modules/Contracts/Views/livewire/table/index.blade.php b/app/Modules/Contracts/Views/livewire/table/index.blade.php index 17131ad..1f7360b 100644 --- a/app/Modules/Contracts/Views/livewire/table/index.blade.php +++ b/app/Modules/Contracts/Views/livewire/table/index.blade.php @@ -1,4 +1,4 @@ -@php($statuses = App\Models\Deal\ContractStatus::class) +@php($statuses = Modules\Contracts\Models\ContractStatus::class)
@@ -51,8 +51,8 @@ {!! $reward !!} @@ -65,10 +65,11 @@ diff --git a/lang/ru/contracts.php b/lang/ru/contracts.php index 6a7225c..6f639b1 100644 --- a/lang/ru/contracts.php +++ b/lang/ru/contracts.php @@ -2,8 +2,8 @@ return [ 'status_NEW' => 'Новый', 'status_TREATY' => 'Выплачено', - 'status_RESERVATION' => 'Забронировано', - 'status_SUSSCESS' => 'Успех', + 'status_RESERVATION' => 'Бронь', + 'status_SUCCESS' => 'Успех', 'status_DECLINE' => 'Отклонен' ]; \ No newline at end of file diff --git a/resources/views/clients/contract/index.blade.php b/resources/views/clients/contract/index.blade.php index de5f6cf..d8df266 100644 --- a/resources/views/clients/contract/index.blade.php +++ b/resources/views/clients/contract/index.blade.php @@ -37,20 +37,20 @@ class="bi bi-arrow-right" viewBox="0 0 16 16">
+ + + + + -->
@@ -107,7 +107,8 @@ class="bi bi-pen" viewBox="0 0 16 16">
-
+
-
+
{{ $statuses::getName($contract->status) }}