From 087f22f8c9dd06e46a6693a4ff8ba08f76e19f20 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Mon, 17 Nov 2025 14:44:19 +0330 Subject: [PATCH 1/4] create new column for harim --- .../Dashboard/Harim/HarimOfficeController.php | 1 + .../HarimOffice/ComputingPaymentRequest.php | 2 ++ ...3_add_final_plan_space_to_harims_table.php | 30 +++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php diff --git a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php index b5fc58e9..db93216a 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/HarimOfficeController.php @@ -160,6 +160,7 @@ class HarimOfficeController extends Controller 'position' => $request->position, 'final_area_space' => $request->final_area_space, 'road_type' => $request->road_type, + 'final_plan_space' => $request->final_plan_space, 'payment_amount' => $request->payment_amount, ] ); diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php index f4dc8d67..0e51e601 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php @@ -5,6 +5,7 @@ namespace App\Http\Requests\V3\Dashboard\Harim\HarimOffice; use App\Enums\HarimStates; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Validator; class ComputingPaymentRequest extends FormRequest { @@ -29,6 +30,7 @@ class ComputingPaymentRequest extends FormRequest 'road_type' => 'required|numeric|decimal:0,1', 'position' => 'required|numeric|decimal:0,1', 'final_area_space' => 'required|numeric|decimal:0,2', + 'final_plan_space' => 'required|numeric|decimal:0,2', 'payment_amount' => 'required|numeric|decimal:0,2', 'expert_description' => 'required|string', ]; diff --git a/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php b/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php new file mode 100644 index 00000000..348d4924 --- /dev/null +++ b/database/migrations/2025_11_17_142433_add_final_plan_space_to_harims_table.php @@ -0,0 +1,30 @@ +decimal('final_plan_space')->nullable(); + + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('harims', function (Blueprint $table) { + $table->dropColumn('final_plan_space'); + }); + } +}; From d441ebd0b4f36cedff7c98cd71424ad3789cd8e5 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Tue, 18 Nov 2025 10:14:26 +0330 Subject: [PATCH 2/4] create new route --- routes/v3.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/routes/v3.php b/routes/v3.php index a06507fa..cc4486da 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -17,6 +17,7 @@ use App\Http\Controllers\V3\Dashboard\Mission\ControlUnitController; use App\Http\Controllers\V3\Dashboard\Mission\DetailController; use App\Http\Controllers\V3\Dashboard\Mission\RequestPortalController; use App\Http\Controllers\V3\Dashboard\Mission\TransportationUnitController; +use App\Http\Controllers\V3\Dashboard\Mission\ViolationManagementController; use App\Http\Controllers\V3\Dashboard\ObservedItemController; use App\Http\Controllers\V3\Dashboard\OtpManagementController; use App\Http\Controllers\V3\Dashboard\RoadMaintenanceStationController; @@ -520,7 +521,14 @@ Route::prefix('missions') Route::get('/machines/{mission}', 'machines')->name('machines'); Route::get('/rahdaran/{mission}', 'rahdaran')->name('rahdaran'); }); + Route::prefix('violation_management') + ->name('violationManagement.') + ->controller(ViolationManagementController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + }); }); + Route::prefix('harim') ->name('harim.') ->group(function () { From 5672c6eb0dea416510adcf54d9e73684c2fb88e9 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 19 Nov 2025 09:25:17 +0330 Subject: [PATCH 3/4] crate new project --- .../Commands/GetMachinesInfoListCommand.php | 10 ++++-- .../ConfirmGuaranteeLetterNeedListener.php | 19 +++++++++- .../Harim/ConfirmNoRoadAccessNeedListener.php | 19 +++++++++- .../ConfirmRoadAccessEditNeedListener.php | 19 +++++++++- .../Harim/ConfirmRoadAccessNeedListener.php | 19 +++++++++- .../Harim/PaymentExecutedListener.php | 19 +++++++++- .../Dashboard/Harim/RejectRequestListener.php | 19 +++++++++- app/Models/Harim.php | 7 ++++ .../SendAccessRoadStatusService.php | 20 ++--------- .../PanjarehVahed/SendPaymentInfoService.php | 20 ++--------- ...3636_add_column_to_cmms_machines_table.php | 35 +++++++++++++++++++ 11 files changed, 161 insertions(+), 45 deletions(-) create mode 100644 database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php diff --git a/app/Console/Commands/GetMachinesInfoListCommand.php b/app/Console/Commands/GetMachinesInfoListCommand.php index 4f01d45d..a11742cd 100644 --- a/app/Console/Commands/GetMachinesInfoListCommand.php +++ b/app/Console/Commands/GetMachinesInfoListCommand.php @@ -35,9 +35,9 @@ class GetMachinesInfoListCommand extends Command $updatedRows = 0; - if (isset($response['vw_MachBankFull'])) { + if (isset($response['vw_MachBankFull2'])) { - foreach ($response['vw_MachBankFull'] as $entry) { + foreach ($response['vw_MachBankFull2'] as $entry) { // Insert data into the database CMMSMachine::query()->updateOrCreate( [ @@ -54,8 +54,12 @@ class GetMachinesInfoListCommand extends Command 'car_id' => $entry['Id'], 'unit_group' => $entry['UnitGroup'] == [] ? null : $entry['UnitGroup'], 'plak_number' => $entry['PlakNumber'] ?? null, + 'province_id' => $entry['UnitGroupCode'] ?? null, + 'city_id' => $entry['UnitCode'] ?? null, + 'station_id' => $entry['Layer3Code'] ?? null, ]); - $updatedRows += 1; + + ++$updatedRows; } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php index 69dd473d..bcee0cf0 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmGuaranteeLetterNeedListener.php @@ -23,7 +23,24 @@ class ConfirmGuaranteeLetterNeedListener implements ShouldQueue */ public function handle(ConfirmGuaranteeLetterNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 1, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php index 6161f4bc..7c779d46 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmNoRoadAccessNeedListener.php @@ -23,7 +23,24 @@ class ConfirmNoRoadAccessNeedListener implements ShouldQueue */ public function handle(ConfirmNoRoadAccessNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 1, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php index 81844a0b..ad5903ab 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessEditNeedListener.php @@ -23,7 +23,24 @@ class ConfirmRoadAccessEditNeedListener implements ShouldQueue */ public function handle(ConfirmRoadAccessEditNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 1, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php index 60104829..fb8e1cc9 100644 --- a/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/ConfirmRoadAccessNeedListener.php @@ -3,6 +3,7 @@ namespace App\Listeners\V3\Dashboard\Harim; use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent; +use App\Models\Harim; use App\Services\PanjarehVahed\SendAccessRoadStatusService; use Exception; use Illuminate\Contracts\Queue\ShouldQueue; @@ -25,7 +26,23 @@ class ConfirmRoadAccessNeedListener implements ShouldQueue */ public function handle(ConfirmRoadAccessNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 1, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php b/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php index 69a5234c..e78975d9 100644 --- a/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php +++ b/app/Listeners/V3/Dashboard/Harim/PaymentExecutedListener.php @@ -24,7 +24,24 @@ class PaymentExecutedListener implements ShouldQueue */ public function handle(PaymentExecutedEvent $event, SendPaymentInfoService $sendPaymentInfoService): void { - $sendPaymentInfoService->makeInputParameters($event->harim->data); + + $arrayData = json_decode($event->harim->data, true); + + $sendPaymentInfoService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'warrantStatus' => $event->harim->need_payment , + 'amountPaid' => $arrayData['amountPaid'], + ], + + 'token' => $arrayData['token'], + ]); + $sendPaymentInfoService->run(); } } diff --git a/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php b/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php index 84534c51..6c1a148a 100644 --- a/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php +++ b/app/Listeners/V3/Dashboard/Harim/RejectRequestListener.php @@ -23,7 +23,24 @@ class RejectRequestListener implements ShouldQueue */ public function handle(RejectRequestEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void { - $sendAccessRoadStatusService->makeInputParameters($event->harim->data); + + $arrayData = json_decode($event->harim->data, true); + + $sendAccessRoadStatusService->makeInputParameters([ + 'data' => [ + 'actionId' => $arrayData['actionId'], + 'ruleId' => $arrayData['ruleId'], + 'activityId' => $arrayData['activityId'], + 'requestId' => $arrayData['requestId'], + 'taskId' => $arrayData['taskId'], + 'code' => $event->harim->id, + 'resultStatus' => 3, + 'Description' => $event->harim->last_description, + ], + + 'token' => $arrayData['token'], + ]); + $sendAccessRoadStatusService->run(); } } diff --git a/app/Models/Harim.php b/app/Models/Harim.php index 2af054c4..95f97ebf 100644 --- a/app/Models/Harim.php +++ b/app/Models/Harim.php @@ -62,4 +62,11 @@ class Harim extends Model }, ); } + + public function latestDescription() + { + return $this->hasMany(HarimHistory::class) + ->latestOfMany() + ->value('expert_description'); + } } diff --git a/app/Services/PanjarehVahed/SendAccessRoadStatusService.php b/app/Services/PanjarehVahed/SendAccessRoadStatusService.php index c9704dcd..0cdd351e 100644 --- a/app/Services/PanjarehVahed/SendAccessRoadStatusService.php +++ b/app/Services/PanjarehVahed/SendAccessRoadStatusService.php @@ -48,27 +48,11 @@ class SendAccessRoadStatusService ->json(); } - public function makeInputParameters($data): void + public function makeInputParameters($input): void { - $arrayData = json_decode($data, true); - - $inputParameters = [ - 'data' => [ - 'actionId' => $arrayData['actionId'], - 'ruleId' => $arrayData['ruleId'], - 'activityId' => $arrayData['activityId'], - 'requestId' => $arrayData['requestId'], - 'taskId' => $arrayData['taskId'], - 'code' => $arrayData['code'], - 'resultStatus' => $arrayData['resultStatus'], - 'Description' => $arrayData['Description'], - ], - 'token' => $arrayData['token'], - ]; - $key = config('harim_web_services.Harim_Info.key'); $iv = config('harim_web_services.Harim_Info.iv'); - $this->inputParameters = openssl_encrypt(json_encode($inputParameters), 'aes-256-cbc', $key, false, $iv); + $this->inputParameters = openssl_encrypt(json_encode($input), 'aes-256-cbc', $key, false, $iv); } } \ No newline at end of file diff --git a/app/Services/PanjarehVahed/SendPaymentInfoService.php b/app/Services/PanjarehVahed/SendPaymentInfoService.php index cfd09b97..2a591e2c 100644 --- a/app/Services/PanjarehVahed/SendPaymentInfoService.php +++ b/app/Services/PanjarehVahed/SendPaymentInfoService.php @@ -48,27 +48,11 @@ class SendPaymentInfoService ->json(); } - public function makeInputParameters($data): void + public function makeInputParameters($input): void { - $arrayData = json_decode($data, true); - - $inputParameters = [ - 'data' => [ - 'actionId' => $arrayData['actionId'], - 'ruleId' => $arrayData['ruleId'], - 'activityId' => $arrayData['activityId'], - 'requestId' => $arrayData['requestId'], - 'taskId' => $arrayData['taskId'], - 'code' => $arrayData['code'], - 'warrantStatus' => $arrayData['warrantStatus'], - 'amountPaid' => $arrayData['amountPaid'], - ], - 'token' => $arrayData['token'], - ]; - $key = config('harim_web_services.Harim_Info.key'); $iv = config('harim_web_services.Harim_Info.iv'); - $this->inputParameters = openssl_encrypt(json_encode($inputParameters), 'aes-256-cbc', $key, false, $iv); + $this->inputParameters = openssl_encrypt(json_encode($input), 'aes-256-cbc', $key, false, $iv); } } \ No newline at end of file diff --git a/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php b/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php new file mode 100644 index 00000000..970d867e --- /dev/null +++ b/database/migrations/2025_11_18_153636_add_column_to_cmms_machines_table.php @@ -0,0 +1,35 @@ +foreignId('province_id')->nullable()->constrained('provinces'); + $table->foreignId('city_id')->nullable()->constrained('cities'); + $table->foreignId('station_id')->nullable()->constrained('rahdari_points'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('cmms_machines', function (Blueprint $table) { + $table->dropForeign('cmms_machines_province_id_foreign'); + $table->dropForeign('cmms_machines_city_id_foreign'); + $table->dropForeign('cmms_machines_station_id_foreign'); + $table->dropColumn('province_id'); + $table->dropColumn('city_id'); + $table->dropColumn('station_id'); + }); + } +}; From f35dada874732f16c3251f2e2fc219e05ce9fb87 Mon Sep 17 00:00:00 2001 From: faezehzafarbakhsh Date: Wed, 19 Nov 2025 15:28:26 +0330 Subject: [PATCH 4/4] check calculater --- .env.example | 4 +- .../HarimOffice/ComputingPaymentRequest.php | 38 +++++++++++++++++-- config/harim_web_services.php | 4 ++ 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 5ce02157..994bd3e2 100644 --- a/.env.example +++ b/.env.example @@ -101,4 +101,6 @@ HARIM_ENCRYPTION_IV="1111000011110101" CHECKE_LIST_MACHINES_ACTIVITY_URL='fms.141.ir:7030/api/RMS/GetMovingVehicles', CHECKE_LIST_MACHINES_ACTIVITY_PASSWORD= -CHECKE_LIST_MACHINES_ACTIVITY_USERNAME= \ No newline at end of file +CHECKE_LIST_MACHINES_ACTIVITY_USERNAME= + +HARIM_AMOUNT_PER=1 \ No newline at end of file diff --git a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php index 0e51e601..63116bce 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/HarimOffice/ComputingPaymentRequest.php @@ -29,10 +29,42 @@ class ComputingPaymentRequest extends FormRequest 'traffic' => 'required|numeric|decimal:0,1', 'road_type' => 'required|numeric|decimal:0,1', 'position' => 'required|numeric|decimal:0,1', - 'final_area_space' => 'required|numeric|decimal:0,2', - 'final_plan_space' => 'required|numeric|decimal:0,2', - 'payment_amount' => 'required|numeric|decimal:0,2', + 'final_area_space' => 'required|numeric|decimal:0,2', //عرصه + 'final_plan_space' => 'required|numeric|decimal:0,2', // عیان + 'payment_amount' => 'required|numeric', 'expert_description' => 'required|string', ]; } + + public function after(): array + { + return [ + function () { + $fe = config('harim_web_services.Harim_Payment.per'); + $arse = ( + $this->traffic * + $this->road_type * + $this->position * + $fe* + $this->final_area_space + ); + $ayan =( + $this->traffic * + $this->road_type * + $this->position * + $fe* + $this->final_plan_space + ); + $result = floor($arse + $ayan); + + if ($result !== $this->payment_amount) { + $this->validator->errors()->add( + 'payment_amount', + 'payment_amount مقادیر بدست امده صحیح نمی باشد.' + ); + } + } + ]; + } + } diff --git a/config/harim_web_services.php b/config/harim_web_services.php index 437739e7..1b1e6f65 100644 --- a/config/harim_web_services.php +++ b/config/harim_web_services.php @@ -35,4 +35,8 @@ return [ 'key' => env('HARIM_ENCRYPTION_KEY'), 'iv' => env('HARIM_ENCRYPTION_IV'), ], + + 'Harim_Payment' => [ + 'per' => env('HARIM_AMOUNT_PER'), + ] ];