From 7eef833e441209d8d9056753b200964ed7d9a884 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Wed, 27 Aug 2025 17:07:32 +0330 Subject: [PATCH 01/26] write webservice for get answer when panjareh vahed get answer --- .../V3/Dashboard/Harim/PanjareVahedController.php | 10 +++++++--- .../Harim/PanjareVahed/GetAccessRoadRequest.php | 4 ++-- .../Cartables/SafetyAndPrivacy/OperatorService.php | 10 +++++----- routes/v3.php | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index f3272cf5..35eaf0c8 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -65,9 +65,13 @@ class PanjareVahedController extends Controller } public function getAccessRoad(GetAccessRoadRequest $request, Harim $harim) { - Harim::update([ - 'panjarevahed_id' => $request->panjarevahed_id, - 'polygon' => $request->polygon, + $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; + + $harim->update([ + 'state_id' => $state, + 'state_name' => HarimStates::name($state), + 'panjare_vahed_id' => $request->panjare_vahed_id, + 'access_road' => $request->access_road, ]); return $this->successResponse(); } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php index cc9a5dab..5c64b50c 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php @@ -23,8 +23,8 @@ class GetAccessRoadRequest extends FormRequest public function rules(): array { return [ - 'panjarevahed_id'=> 'required|string', - 'polygon' => 'required|string', + 'panjare_vahed_id' => 'required|string', + 'access_road' => 'required|string', ]; } } diff --git a/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php b/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php index 81b2ce82..39b86060 100644 --- a/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php +++ b/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php @@ -90,7 +90,7 @@ class OperatorService return DB::select(" WITH edareh_data AS ( SELECT - e.id AS edareh_id, + e.id AS edare_id, a.id AS axis_type_id, COALESCE(SUM(t.step = 1), 0) AS s1, COALESCE(SUM(t.step = 2), 0) AS s2, @@ -105,21 +105,21 @@ class OperatorService GROUP BY e.id, a.id ) SELECT - edareh_id, + edare_id, axis_type_id, s1, s2, s3, COALESCE( SUM(s1 + s2 + s3) - OVER (PARTITION BY edareh_id), 0 + OVER (PARTITION BY edare_id), 0 ) AS total_sum FROM edareh_data UNION ALL SELECT - -1 AS edareh_id, + -1 AS edare_id, axis_type_id, COALESCE(SUM(s1), 0) AS s1, COALESCE(SUM(s2), 0) AS s2, @@ -130,7 +130,7 @@ class OperatorService FROM edareh_data GROUP BY axis_type_id - ORDER BY edareh_id , axis_type_id + ORDER BY edare_id , axis_type_id ", [ 'provinceId' => $province_id, 'infoId' => $info_id, diff --git a/routes/v3.php b/routes/v3.php index 1dcb42c3..175f144e 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -565,7 +565,7 @@ Route::prefix('harim') ->name('panjarevahed.') ->controller(PanjarevahedController::class) ->group(function () { - Route::post('/get_access_road','getAccessRoad')->name('getAccessRoad'); + Route::post('/get_access_road/{harim}','getAccessRoad')->name('getAccessRoad'); }); }); From 7ccf6dfd8f0c427f8f4199f0aebb03ad308e4212 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Sat, 30 Aug 2025 10:23:45 +0330 Subject: [PATCH 02/26] fix webservice ant change the other part of code --- .../V3/Dashboard/Harim/PanjareVahedController.php | 8 +++++--- .../V3/Dashboard/RoadMaintenanceStationController.php | 11 ++++------- .../Harim/PanjareVahed/GetAccessRoadRequest.php | 2 +- routes/v3.php | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index 35eaf0c8..1629d876 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -63,16 +63,18 @@ class PanjareVahedController extends Controller 'province' => $city->province()->first()->name_fa, ]); } - public function getAccessRoad(GetAccessRoadRequest $request, Harim $harim) + public function getAccessRoad(GetAccessRoadRequest $request) { $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; - $harim->update([ + Harim::query() + ->firstWhere('panjare_vahed_id', '=', $request->panjare_vahed_id) + ->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), - 'panjare_vahed_id' => $request->panjare_vahed_id, 'access_road' => $request->access_road, ]); + return $this->successResponse(); } } diff --git a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php index dc14f995..35344404 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php @@ -24,10 +24,7 @@ class RoadMaintenanceStationController extends Controller public function index(Request $request): JsonResponse { $user = auth()->user(); - auth()->user()->addActivityComplete(1019); - - $allowedFilters = ['*']; - $allowedSortings = ['*']; + $user->addActivityComplete(1019); $province = $request->province; $status = $request->status; @@ -38,15 +35,15 @@ class RoadMaintenanceStationController extends Controller ->when($type, fn ($query, $type) => $query->where('type', $type)) ->when($province, fn($query, $province) => $query->where('province_id', $province)); - if ($user->hasPermissionTo('show-tollhouse-province')) { + if ($user->hasPermissionTo('show-tollhouse-province') && !$user->hasPermissionTo('show-tollhouse')) { $query->where('province_id', $user->province_id); } $data = DataTableFacade::run( $query, $request, - allowedFilters: $allowedFilters, - allowedSortings: $allowedSortings + allowedFilters: ['*'], + allowedSortings: ['*'] ); diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php index 5c64b50c..d10967e2 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php @@ -24,7 +24,7 @@ class GetAccessRoadRequest extends FormRequest { return [ 'panjare_vahed_id' => 'required|string', - 'access_road' => 'required|string', + 'access_road' => 'required', ]; } } diff --git a/routes/v3.php b/routes/v3.php index 175f144e..1dcb42c3 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -565,7 +565,7 @@ Route::prefix('harim') ->name('panjarevahed.') ->controller(PanjarevahedController::class) ->group(function () { - Route::post('/get_access_road/{harim}','getAccessRoad')->name('getAccessRoad'); + Route::post('/get_access_road','getAccessRoad')->name('getAccessRoad'); }); }); From bb8262b8960bf008fbba87d38b73360058de88c6 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 30 Aug 2025 14:07:37 +0330 Subject: [PATCH 03/26] debug the accident module --- .../Commands/ExtractGeometryForCities.php | 8 +- .../V3/AccidentReceipt/CountryReport.php | 18 ++- .../V3/AccidentReceipt/ProvinceReport.php | 15 +- .../AccidentReceiptReportController.php | 9 ++ composer.json | 3 +- composer.lock | 153 +++++++++++++++++- routes/v3.php | 5 + 7 files changed, 199 insertions(+), 12 deletions(-) diff --git a/app/Console/Commands/ExtractGeometryForCities.php b/app/Console/Commands/ExtractGeometryForCities.php index 42108fee..9706f477 100644 --- a/app/Console/Commands/ExtractGeometryForCities.php +++ b/app/Console/Commands/ExtractGeometryForCities.php @@ -4,6 +4,7 @@ namespace App\Console\Commands; use App\Models\City; use Illuminate\Console\Command; +use Illuminate\Contracts\Filesystem\FileNotFoundException; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Log; @@ -27,8 +28,9 @@ class ExtractGeometryForCities extends Command /** * Execute the console command. + * @throws FileNotFoundException */ - public function handle() + public function handle(): int { $jsonPath = $this->argument('jsonPath'); @@ -103,8 +105,6 @@ class ExtractGeometryForCities extends Command continue; } - - $query = City::query() ->find($cityId); @@ -122,8 +122,6 @@ class ExtractGeometryForCities extends Command { $this->error("Something went wrong: $th"); } - - } return parent::SUCCESS; diff --git a/app/Exports/V3/AccidentReceipt/CountryReport.php b/app/Exports/V3/AccidentReceipt/CountryReport.php index e05bdb64..caa93bb4 100644 --- a/app/Exports/V3/AccidentReceipt/CountryReport.php +++ b/app/Exports/V3/AccidentReceipt/CountryReport.php @@ -26,7 +26,8 @@ class CountryReport implements FromView, ShouldAutoSize, WithEvents, WithDrawing $country = array_search(-1, array_column($data['data'], 'province_id')); $activities[] = [ - 'name' => 'کل کشور', + 'province_id' => -1, + 'province_fa' => 'کل کشور', 'tedade' => $data['data'][$country]->tedade, 'police_rah' => $data['data'][$country]->police_rah, 'gozaresh_gasht' => $data['data'][$country]->gozaresh_gasht, @@ -35,6 +36,9 @@ class CountryReport implements FromView, ShouldAutoSize, WithEvents, WithDrawing 'vasel_shode_bimeh' => $data['data'][$country]->vasel_shode_bimeh ?? 0, 'vasel_shode_daghi' => $data['data'][$country]->vasel_shode_daghi ?? 0, 'vasel_shode_final' => $data['data'][$country]->vasel_shode_final ?? 0, + 'egdam' => $data['data'][$country]->egdam ?? 0, + 'khatm' => $data['data'][$country]->khatm ?? 0, + 'pardakht' => $data['data'][$country]->pardakht ?? 0, ]; foreach (Province::all() as $province) { @@ -43,7 +47,8 @@ class CountryReport implements FromView, ShouldAutoSize, WithEvents, WithDrawing if ($existingProvince) { $activities[] = [ - 'name' => $province->name_fa, + 'province_id' => $province->id, + 'province_fa' => $province->name_fa, 'tedade' => $data['data'][$existingProvince]->tedade, 'police_rah' => $data['data'][$existingProvince]->police_rah, 'gozaresh_gasht' => $data['data'][$existingProvince]->gozaresh_gasht, @@ -52,10 +57,14 @@ class CountryReport implements FromView, ShouldAutoSize, WithEvents, WithDrawing 'vasel_shode_bimeh' => $data['data'][$existingProvince]->vasel_shode_bimeh ?? 0, 'vasel_shode_daghi' => $data['data'][$existingProvince]->vasel_shode_daghi ?? 0, 'vasel_shode_final' => $data['data'][$existingProvince]->vasel_shode_final ?? 0, + 'egdam' => $data['data'][$country]->egdam ?? 0, + 'khatm' => $data['data'][$country]->khatm ?? 0, + 'pardakht' => $data['data'][$country]->pardakht ?? 0, ]; } else { $activities[] = [ - 'name' => $province->name_fa, + 'province_id' => $province->id, + 'province_fa' => $province->name_fa, 'tedade' => "", 'police_rah' => "", 'gozaresh_gasht' => "", @@ -64,6 +73,9 @@ class CountryReport implements FromView, ShouldAutoSize, WithEvents, WithDrawing 'vasel_shode_bimeh' => "", 'vasel_shode_daghi' => "", 'vasel_shode_final' => "", + 'egdam' => "", + 'khatm' => "", + 'pardakht' => "", ]; } } diff --git a/app/Exports/V3/AccidentReceipt/ProvinceReport.php b/app/Exports/V3/AccidentReceipt/ProvinceReport.php index ab63e7f6..7d9f7cd2 100644 --- a/app/Exports/V3/AccidentReceipt/ProvinceReport.php +++ b/app/Exports/V3/AccidentReceipt/ProvinceReport.php @@ -26,7 +26,8 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithEvents, WithDrawin $province = array_search(-1, array_column($reportData, 'province_id')); $activities[] = [ - 'name' => 'کل استان', + 'city_id' => -1, + 'city_fa' => 'کل استان', 'tedade' => $reportData['data'][$province]->tedade, 'police_rah' => $reportData['data'][$province]->police_rah, 'gozaresh_gasht' => $reportData['data'][$province]->gozaresh_gasht, @@ -35,6 +36,9 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithEvents, WithDrawin 'vasel_shode_bimeh' => $reportData['data'][$province]->vasel_shode_bimeh ?? 0, 'vasel_shode_daghi' => $reportData['data'][$province]->vasel_shode_daghi ?? 0, 'vasel_shode_final' => $reportData['data'][$province]->vasel_shode_final ?? 0, + 'egdam' => $reportData['data'][$province]->egdam ?? 0, + 'khatm' => $reportData['data'][$province]->khatm ?? 0, + 'pardakht' => $reportData['data'][$province]->pardakht ?? 0, ]; foreach ($inputData['cities'] as $city) { @@ -43,7 +47,8 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithEvents, WithDrawin if ($existingCity) { $activities[] = [ - 'name' => $city->name_fa, + 'city_id' => -1, + 'city_fa' => 'کل استان', 'tedade' => $reportData['data'][$existingCity]->tedade, 'police_rah' => $reportData['data'][$existingCity]->police_rah, 'gozaresh_gasht' => $reportData['data'][$existingCity]->gozaresh_gasht, @@ -52,6 +57,9 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithEvents, WithDrawin 'vasel_shode_bimeh' => $reportData['data'][$existingCity]->vasel_shode_bimeh ?? 0, 'vasel_shode_daghi' => $reportData['data'][$existingCity]->vasel_shode_daghi ?? 0, 'vasel_shode_final' => $reportData['data'][$existingCity]->vasel_shode_final ?? 0, + 'egdam' => $reportData['data'][$province]->egdam ?? 0, + 'khatm' => $reportData['data'][$province]->khatm ?? 0, + 'pardakht' => $reportData['data'][$province]->pardakht ?? 0, ]; } else { $activities[] = [ @@ -64,6 +72,9 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithEvents, WithDrawin 'vasel_shode_bimeh' => "", 'vasel_shode_daghi' => "", 'vasel_shode_final' => "", + 'egdam' => "", + 'khatm' => "", + 'pardakht' => "", ]; } } diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptReportController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptReportController.php index 6669bfed..1d4d8920 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptReportController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptReportController.php @@ -12,6 +12,7 @@ use App\Services\Cartables\AccidentReceiptTableService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; +use PhpOffice\PhpSpreadsheet\Exception; use Symfony\Component\HttpFoundation\BinaryFileResponse; class AccidentReceiptReportController extends Controller @@ -38,6 +39,10 @@ class AccidentReceiptReportController extends Controller ]); } + /** + * @throws Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + */ public function countryExcelReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): BinaryFileResponse { $data = $accidentReceiptTableService->countryReport($request); @@ -45,6 +50,10 @@ class AccidentReceiptReportController extends Controller return Excel::download(new CountryReport($data), $name); } + /** + * @throws Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + */ public function provinceExcelReport(Request $request, AccidentReceiptTableService $accidentReceiptTableService): BinaryFileResponse { $data = $accidentReceiptTableService->provinceReport($request); diff --git a/composer.json b/composer.json index a2345809..52962f74 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,8 @@ "laravel/ui": "^4.4", "maatwebsite/excel": "^3.1", "morilog/jalali": "3.*", - "spatie/laravel-permission": "^5.10" + "spatie/laravel-permission": "^5.10", + "usmanhalalit/laracsv": "^2.1" }, "require-dev": { "barryvdh/laravel-debugbar": "^3.9", diff --git a/composer.lock b/composer.lock index 2928ac05..21a177df 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "379d6ba4ded00ca7079f26aa5b12e04e", + "content-hash": "67bcaf1ce932d76ea3acb0bd4e2abf10", "packages": [ { "name": "beberlei/assert", @@ -2685,6 +2685,97 @@ ], "time": "2022-12-11T20:36:23+00:00" }, + { + "name": "league/csv", + "version": "9.24.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/csv.git", + "reference": "e0221a3f16aa2a823047d59fab5809d552e29bc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/e0221a3f16aa2a823047d59fab5809d552e29bc8", + "reference": "e0221a3f16aa2a823047d59fab5809d552e29bc8", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1.2" + }, + "require-dev": { + "ext-dom": "*", + "ext-xdebug": "*", + "friendsofphp/php-cs-fixer": "^3.75.0", + "phpbench/phpbench": "^1.4.1", + "phpstan/phpstan": "^1.12.27", + "phpstan/phpstan-deprecation-rules": "^1.2.1", + "phpstan/phpstan-phpunit": "^1.4.2", + "phpstan/phpstan-strict-rules": "^1.6.2", + "phpunit/phpunit": "^10.5.16 || ^11.5.22", + "symfony/var-dumper": "^6.4.8 || ^7.3.0" + }, + "suggest": { + "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", + "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters", + "ext-mbstring": "Needed to ease transcoding CSV using mb stream filters", + "ext-mysqli": "Requiered to use the package with the MySQLi extension", + "ext-pdo": "Required to use the package with the PDO extension", + "ext-pgsql": "Requiered to use the package with the PgSQL extension", + "ext-sqlite3": "Required to use the package with the SQLite3 extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "League\\Csv\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://github.com/nyamsprod/", + "role": "Developer" + } + ], + "description": "CSV data manipulation made easy in PHP", + "homepage": "https://csv.thephpleague.com", + "keywords": [ + "convert", + "csv", + "export", + "filter", + "import", + "read", + "transform", + "write" + ], + "support": { + "docs": "https://csv.thephpleague.com", + "issues": "https://github.com/thephpleague/csv/issues", + "rss": "https://github.com/thephpleague/csv/releases.atom", + "source": "https://github.com/thephpleague/csv" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2025-06-25T14:53:51+00:00" + }, { "name": "league/flysystem", "version": "3.23.1", @@ -7138,6 +7229,66 @@ }, "time": "2023-12-08T13:03:43+00:00" }, + { + "name": "usmanhalalit/laracsv", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/usmanhalalit/laracsv.git", + "reference": "98016abe4c55e7ed3c97a3e0b930cbac58374f57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/usmanhalalit/laracsv/zipball/98016abe4c55e7ed3c97a3e0b930cbac58374f57", + "reference": "98016abe4c55e7ed3c97a3e0b930cbac58374f57", + "shasum": "" + }, + "require": { + "illuminate/database": ">=5.2", + "league/csv": "^9.0", + "php": ">=7.1" + }, + "require-dev": { + "fzaninotto/faker": "^1.8", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laracsv\\": "src/Laracsv/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Muhammad Usman", + "email": "hi@usman.it", + "role": "Developer" + } + ], + "description": "A Laravel package to easily generate CSV files from Eloquent model.", + "homepage": "https://github.com/usmanhalalit/laracsv", + "keywords": [ + "csv", + "eloquent", + "export", + "laravel" + ], + "support": { + "issues": "https://github.com/usmanhalalit/laracsv/issues", + "source": "https://github.com/usmanhalalit/laracsv/tree/master" + }, + "funding": [ + { + "url": "https://github.com/usmanhalalit", + "type": "github" + } + ], + "time": "2020-06-19T09:31:32+00:00" + }, { "name": "vlucas/phpdotenv", "version": "v5.6.0", diff --git a/routes/v3.php b/routes/v3.php index 1dcb42c3..0d22bded 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -595,3 +595,8 @@ Route::prefix('user_management') Route::post('/change_password/{user}', 'changePassword')->name('changePassword'); Route::post('delete-role/{id}', 'deleteRole')->name('deleteRole'); }); + +Route::get('/test', function () { + $csvExporter = new \Laracsv\Export(); + $csvExporter->build(\App\Models\User::all(), ['id' => 'کد یکتا', 'username' => 'نام کاربری'])->download(); +}); \ No newline at end of file From 125baa7511f0faa9f04c27ba8d751b84792374cd Mon Sep 17 00:00:00 2001 From: joddyabott Date: Sat, 30 Aug 2025 14:07:53 +0330 Subject: [PATCH 04/26] create new migration and bug fix another code for safty and privacy --- .../Country/AccessRoadReport.php | 2 +- .../Country/ConstructionReport.php | 2 +- .../Country/UtilityPassingReport.php | 2 +- .../Province/AccessRoadReport.php | 2 +- .../Province/ConstructionReport.php | 2 +- .../Province/UtilityPassingReport.php | 2 +- .../Controllers/HomeContentController.php | 5 ++- .../Accident/AccidentReceiptController.php | 42 +++++++++++++------ ...027_add_paid_driver_to_accidents_table.php | 30 +++++++++++++ 9 files changed, 69 insertions(+), 20 deletions(-) create mode 100644 database/migrations/2025_08_30_110027_add_paid_driver_to_accidents_table.php diff --git a/app/Exports/V3/SafetyAndPrivacy/Country/AccessRoadReport.php b/app/Exports/V3/SafetyAndPrivacy/Country/AccessRoadReport.php index 37517385..ab5034ab 100644 --- a/app/Exports/V3/SafetyAndPrivacy/Country/AccessRoadReport.php +++ b/app/Exports/V3/SafetyAndPrivacy/Country/AccessRoadReport.php @@ -43,7 +43,7 @@ class AccessRoadReport implements FromView, WithEvents, ShouldAutoSize, WithDraw } } - return view('v3.Reports.SafetyAndPrivacy.Country.AccessRoadReport', [ + return view('v3.Reports.SafetyAndPrivacy.Country.AccessRoadActivityReport', [ 'data' => $data, ]); } diff --git a/app/Exports/V3/SafetyAndPrivacy/Country/ConstructionReport.php b/app/Exports/V3/SafetyAndPrivacy/Country/ConstructionReport.php index 3e64d0c8..52f57616 100644 --- a/app/Exports/V3/SafetyAndPrivacy/Country/ConstructionReport.php +++ b/app/Exports/V3/SafetyAndPrivacy/Country/ConstructionReport.php @@ -44,7 +44,7 @@ class ConstructionReport implements FromView, WithEvents, ShouldAutoSize, WithDr } } - return view('v3.Reports.SafetyAndPrivacy.Country.ConstructionReport', [ + return view('v3.Reports.SafetyAndPrivacy.Country.ConstructionActivityReport', [ 'data' => $data, ]); } diff --git a/app/Exports/V3/SafetyAndPrivacy/Country/UtilityPassingReport.php b/app/Exports/V3/SafetyAndPrivacy/Country/UtilityPassingReport.php index e44b14ac..1221ca07 100644 --- a/app/Exports/V3/SafetyAndPrivacy/Country/UtilityPassingReport.php +++ b/app/Exports/V3/SafetyAndPrivacy/Country/UtilityPassingReport.php @@ -44,7 +44,7 @@ class UtilityPassingReport implements FromView, WithEvents, ShouldAutoSize, With } } - return view('v3.Reports.SafetyAndPrivacy.Country.UtilityPassingReport', [ + return view('v3.Reports.SafetyAndPrivacy.Country.UtilityPassingActivityReport', [ 'data' => $data, ]); } diff --git a/app/Exports/V3/SafetyAndPrivacy/Province/AccessRoadReport.php b/app/Exports/V3/SafetyAndPrivacy/Province/AccessRoadReport.php index bc80b3a4..053de9b4 100644 --- a/app/Exports/V3/SafetyAndPrivacy/Province/AccessRoadReport.php +++ b/app/Exports/V3/SafetyAndPrivacy/Province/AccessRoadReport.php @@ -43,7 +43,7 @@ class AccessRoadReport implements FromView, WithEvents, ShouldAutoSize, WithDraw } } - return view('v3.Reports.SafetyAndPrivacy.Province.AccessRoadReport', [ + return view('v3.Reports.SafetyAndPrivacy.Province.AccessRoadActivityReport', [ 'data' => $data, ]); } diff --git a/app/Exports/V3/SafetyAndPrivacy/Province/ConstructionReport.php b/app/Exports/V3/SafetyAndPrivacy/Province/ConstructionReport.php index e6492019..07e2d138 100644 --- a/app/Exports/V3/SafetyAndPrivacy/Province/ConstructionReport.php +++ b/app/Exports/V3/SafetyAndPrivacy/Province/ConstructionReport.php @@ -43,7 +43,7 @@ class ConstructionReport implements FromView, WithEvents, ShouldAutoSize, WithDr } } - return view('v3.Reports.SafetyAndPrivacy.Province.ConstructionReport', [ + return view('v3.Reports.SafetyAndPrivacy.Province.ConstructionActivityReport', [ 'data' => $data, ]); } diff --git a/app/Exports/V3/SafetyAndPrivacy/Province/UtilityPassingReport.php b/app/Exports/V3/SafetyAndPrivacy/Province/UtilityPassingReport.php index d0f5f6a4..5c67b160 100644 --- a/app/Exports/V3/SafetyAndPrivacy/Province/UtilityPassingReport.php +++ b/app/Exports/V3/SafetyAndPrivacy/Province/UtilityPassingReport.php @@ -43,7 +43,7 @@ class UtilityPassingReport implements FromView, WithEvents, ShouldAutoSize, With } } - return view('v3.Reports.SafetyAndPrivacy.Province.UtilityPassingReport', [ + return view('v3.Reports.SafetyAndPrivacy.Province.UtilityPassingActivityReport', [ 'data' => $data, ]); } diff --git a/app/Http/Controllers/HomeContentController.php b/app/Http/Controllers/HomeContentController.php index 9df4af59..a42efa07 100644 --- a/app/Http/Controllers/HomeContentController.php +++ b/app/Http/Controllers/HomeContentController.php @@ -64,7 +64,10 @@ class HomeContentController extends Controller public function getAllCitiesByProvince($id) { - $cities = \App\Models\City::where('province_id', $id)->where('type_id', 1)->get(); + $cities = \App\Models\City::query() + ->where('province_id', $id) + ->where('type_id', 1) + ->get(['id', 'name_fa', 'province_id','center_lat','center_lng']); // $cities = \App\Models\City::where('province_id', $id)->get(); return response()->json([ diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php index f4a5900b..179c426b 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php @@ -23,9 +23,11 @@ use App\Services\PaymentService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Illuminate\Validation\ValidationException; use Maatwebsite\Excel\Facades\Excel; use Symfony\Component\HttpFoundation\BinaryFileResponse; use Throwable; +use function Laravel\Prompts\error; class AccidentReceiptController extends Controller { @@ -86,7 +88,7 @@ class AccidentReceiptController extends Controller 'status_fa' => AccidentStates::name(AccidentStates::BEDON_EGHDAM->value), ]; - $sum = 0; + $driver_share_amount = 0; $damageData = []; foreach ($request->damage_items as $key => $item) { @@ -96,14 +98,14 @@ class AccidentReceiptController extends Controller 'unit' => $damage->unit, 'amount' => $item['amount'], ]; - $sum += $item['amount']; + $driver_share_amount += $item['amount']; } - $ojrate_nasb = $sum/100*20; - $sum += $ojrate_nasb; + $ojrate_nasb = $driver_share_amount/100*20; + $driver_share_amount += $ojrate_nasb; $accidentData['ojrate_nasb'] = $ojrate_nasb; - $accidentData['sum'] = $sum; + $accidentData['driver_share_amount'] = $driver_share_amount; $accident = Accident::query()->create($accidentData); $accident->damage_picture1 = FileFacade::save($request->file('damage_picture1'), "receipts_files/{$accident->id}"); @@ -174,7 +176,7 @@ class AccidentReceiptController extends Controller $accidentData['damage_picture2'] = FileFacade::save($request->file('damage_picture2'), "receipts_files/{$accident->id}/"); } - $sum = 0; + $driver_share_amount = 0; $damageData = []; foreach ($request->damage_items as $key => $item) { @@ -184,14 +186,14 @@ class AccidentReceiptController extends Controller 'unit' => $damage->unit, 'amount' => $item['amount'], ]; - $sum += $item['amount']; + $driver_share_amount += $item['amount']; } - $ojrate_nasb = $sum/100*20; - $sum += $ojrate_nasb; + $ojrate_nasb = $driver_share_amount/100*20; + $driver_share_amount += $ojrate_nasb; $accidentData['ojrate_nasb'] = $ojrate_nasb; - $accidentData['sum'] = $sum; + $accidentData['driver_share_amount'] = $driver_share_amount; $accident->update($accidentData); @@ -246,14 +248,28 @@ class AccidentReceiptController extends Controller public function confirmPaymentInfo(ConfirmPaymentInfoRequest $request, Accident $accident): JsonResponse { DB::transaction(function () use ($request, $accident) { + $final_amount = $accident->driver_share_amount - ($request->deposit_insurance_amount + $request->deposit_daghi_amount); + if ($final_amount > 0) { + $status = AccidentStates::SABT_FISH->value; + $status_fa = AccidentStates::name($status); + } + elseif ($final_amount == 0) { + $status = AccidentStates::PARDAKHT_FACTOR->value; + $status_fa = AccidentStates::name($status); + } + else{ + throw ValidationException::withMessages([ + 'amounts' => 'مبالغ داغی و بیمه از مبلغ سهم راننده بیشتر است.', + ]); + } $accident->update([ 'deposit_insurance_image' => $request->has('deposit_insurance_image') ? FileFacade::save($request->deposit_insurance_image, "receipts_files/{$accident->id}/deposit_insurance") : null, 'deposit_insurance_amount' => $request->deposit_insurance_amount ?? 0, 'deposit_daghi_image' => $request->has('deposit_daghi_image') ? FileFacade::save($request->deposit_daghi_image, "receipts_files/{$accident->id}/deposit_daghi") : null, 'deposit_daghi_amount' => $request->deposit_daghi_amount ?? 0, - 'status' => AccidentStates::SABT_FISH->value, - 'status_fa' => AccidentStates::name(AccidentStates::SABT_FISH->value), + 'status' => $status, + 'status_fa' => $status_fa, ]); auth()->user()->addActivityComplete(1132); @@ -267,7 +283,7 @@ class AccidentReceiptController extends Controller */ public function submitInvoice(Accident $accident, PaymentService $paymentService): JsonResponse { - $final_amount = $accident->sum - ($accident->deposit_insurance_amount + $accident->deposit_daghi_amount); + $final_amount = $accident->driver_share_amount - ($accident->deposit_insurance_amount + $accident->deposit_daghi_amount); throw_if($final_amount < 0, new ProhibitedAction('مبالغ داغی و بیمه از مبلغ کل بیشتر می باشد.')); diff --git a/database/migrations/2025_08_30_110027_add_paid_driver_to_accidents_table.php b/database/migrations/2025_08_30_110027_add_paid_driver_to_accidents_table.php new file mode 100644 index 00000000..cb903027 --- /dev/null +++ b/database/migrations/2025_08_30_110027_add_paid_driver_to_accidents_table.php @@ -0,0 +1,30 @@ +unsignedBigInteger('driver_share_amount')->nullable(); + $table->unsignedBigInteger('driver_rate')->nullable(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('accidents', function (Blueprint $table) { + $table->dropColumn('driver_share_amount', 'driver_rate'); + }); + } +}; From 5ecb875a7c6a1bd08591795b8a6d7ac5c6baabcb Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 30 Aug 2025 14:10:43 +0330 Subject: [PATCH 05/26] rename the province --- .../views/v3/Reports/AccidentReceipt/CountryReport.blade.php | 2 +- .../views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/v3/Reports/AccidentReceipt/CountryReport.blade.php b/resources/views/v3/Reports/AccidentReceipt/CountryReport.blade.php index 6050d470..055f1e08 100644 --- a/resources/views/v3/Reports/AccidentReceipt/CountryReport.blade.php +++ b/resources/views/v3/Reports/AccidentReceipt/CountryReport.blade.php @@ -96,7 +96,7 @@ @foreach ($data as $road) - {{ $road['name'] }} + {{ $road['province_fa'] }} {{ $road['tedade'] }} diff --git a/resources/views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php b/resources/views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php index d48aef61..5b490ad6 100644 --- a/resources/views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php +++ b/resources/views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php @@ -97,7 +97,7 @@ @foreach ($data as $road) - {{ $road['name'] }} + {{ $road['city_fa'] }} {{ $road['tedade'] }} From 7ea75812fcaeb0caed919003d166e5d2eda6be74 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Sat, 30 Aug 2025 14:18:52 +0330 Subject: [PATCH 06/26] create new migration and bug fix another code for safty and privacy --- .../Accident/AccidentReceiptController.php | 58 +++++++++---------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php index 179c426b..bfe6a5a9 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php @@ -23,11 +23,9 @@ use App\Services\PaymentService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; -use Illuminate\Validation\ValidationException; use Maatwebsite\Excel\Facades\Excel; use Symfony\Component\HttpFoundation\BinaryFileResponse; use Throwable; -use function Laravel\Prompts\error; class AccidentReceiptController extends Controller { @@ -88,7 +86,7 @@ class AccidentReceiptController extends Controller 'status_fa' => AccidentStates::name(AccidentStates::BEDON_EGHDAM->value), ]; - $driver_share_amount = 0; + $sum = 0; $damageData = []; foreach ($request->damage_items as $key => $item) { @@ -98,14 +96,14 @@ class AccidentReceiptController extends Controller 'unit' => $damage->unit, 'amount' => $item['amount'], ]; - $driver_share_amount += $item['amount']; + $sum += $item['amount']; } - $ojrate_nasb = $driver_share_amount/100*20; - $driver_share_amount += $ojrate_nasb; + $ojrate_nasb = $sum/100*20; + $sum += $ojrate_nasb; $accidentData['ojrate_nasb'] = $ojrate_nasb; - $accidentData['driver_share_amount'] = $driver_share_amount; + $accidentData['driver_share_amount'] = $sum; $accident = Accident::query()->create($accidentData); $accident->damage_picture1 = FileFacade::save($request->file('damage_picture1'), "receipts_files/{$accident->id}"); @@ -176,7 +174,7 @@ class AccidentReceiptController extends Controller $accidentData['damage_picture2'] = FileFacade::save($request->file('damage_picture2'), "receipts_files/{$accident->id}/"); } - $driver_share_amount = 0; + $sum = 0; $damageData = []; foreach ($request->damage_items as $key => $item) { @@ -186,14 +184,14 @@ class AccidentReceiptController extends Controller 'unit' => $damage->unit, 'amount' => $item['amount'], ]; - $driver_share_amount += $item['amount']; + $sum += $item['amount']; } - $ojrate_nasb = $driver_share_amount/100*20; - $driver_share_amount += $ojrate_nasb; + $ojrate_nasb = $sum/100*20; + $sum += $ojrate_nasb; $accidentData['ojrate_nasb'] = $ojrate_nasb; - $accidentData['driver_share_amount'] = $driver_share_amount; + $accidentData['driver_share_amount'] = $sum; $accident->update($accidentData); @@ -248,28 +246,28 @@ class AccidentReceiptController extends Controller public function confirmPaymentInfo(ConfirmPaymentInfoRequest $request, Accident $accident): JsonResponse { DB::transaction(function () use ($request, $accident) { - $final_amount = $accident->driver_share_amount - ($request->deposit_insurance_amount + $request->deposit_daghi_amount); - - if ($final_amount > 0) { - $status = AccidentStates::SABT_FISH->value; - $status_fa = AccidentStates::name($status); - } - elseif ($final_amount == 0) { - $status = AccidentStates::PARDAKHT_FACTOR->value; - $status_fa = AccidentStates::name($status); - } - else{ - throw ValidationException::withMessages([ - 'amounts' => 'مبالغ داغی و بیمه از مبلغ سهم راننده بیشتر است.', - ]); - } +// $final_amount = $accident->driver_share_amount - ($request->deposit_insurance_amount + $request->deposit_daghi_amount); +// +// if ($final_amount > 0) { +// $status = AccidentStates::SABT_FISH->value; +// $status_fa = AccidentStates::name($status); +// } +// elseif ($final_amount == 0) { +// $status = AccidentStates::PARDAKHT_FACTOR->value; +// $status_fa = AccidentStates::name($status); +// } +// else{ +// throw ValidationException::withMessages([ +// 'amounts' => 'مبالغ داغی و بیمه از مبلغ سهم راننده بیشتر است.', +// ]); +// } $accident->update([ 'deposit_insurance_image' => $request->has('deposit_insurance_image') ? FileFacade::save($request->deposit_insurance_image, "receipts_files/{$accident->id}/deposit_insurance") : null, 'deposit_insurance_amount' => $request->deposit_insurance_amount ?? 0, 'deposit_daghi_image' => $request->has('deposit_daghi_image') ? FileFacade::save($request->deposit_daghi_image, "receipts_files/{$accident->id}/deposit_daghi") : null, 'deposit_daghi_amount' => $request->deposit_daghi_amount ?? 0, - 'status' => $status, - 'status_fa' => $status_fa, + 'status' => AccidentStates::SABT_FISH->value, + 'status_fa' => AccidentStates::name(AccidentStates::SABT_FISH->value), ]); auth()->user()->addActivityComplete(1132); @@ -283,7 +281,7 @@ class AccidentReceiptController extends Controller */ public function submitInvoice(Accident $accident, PaymentService $paymentService): JsonResponse { - $final_amount = $accident->driver_share_amount - ($accident->deposit_insurance_amount + $accident->deposit_daghi_amount); + $final_amount = $accident->sum - ($accident->deposit_insurance_amount + $accident->deposit_daghi_amount); throw_if($final_amount < 0, new ProhibitedAction('مبالغ داغی و بیمه از مبلغ کل بیشتر می باشد.')); From 761e2b77da8eb196d4d00d2010adf33eaa9e907f Mon Sep 17 00:00:00 2001 From: joddyabott Date: Sat, 30 Aug 2025 14:21:25 +0330 Subject: [PATCH 07/26] create new migration and bug fix another code for safty and privacy --- .../Accident/AccidentReceiptController.php | 23 ++++--------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php index bfe6a5a9..1a5e5555 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php @@ -103,7 +103,7 @@ class AccidentReceiptController extends Controller $sum += $ojrate_nasb; $accidentData['ojrate_nasb'] = $ojrate_nasb; - $accidentData['driver_share_amount'] = $sum; + $accidentData['sum'] = $sum; $accident = Accident::query()->create($accidentData); $accident->damage_picture1 = FileFacade::save($request->file('damage_picture1'), "receipts_files/{$accident->id}"); @@ -191,7 +191,7 @@ class AccidentReceiptController extends Controller $sum += $ojrate_nasb; $accidentData['ojrate_nasb'] = $ojrate_nasb; - $accidentData['driver_share_amount'] = $sum; + $accidentData['sum'] = $sum; $accident->update($accidentData); @@ -246,28 +246,13 @@ class AccidentReceiptController extends Controller public function confirmPaymentInfo(ConfirmPaymentInfoRequest $request, Accident $accident): JsonResponse { DB::transaction(function () use ($request, $accident) { -// $final_amount = $accident->driver_share_amount - ($request->deposit_insurance_amount + $request->deposit_daghi_amount); -// -// if ($final_amount > 0) { -// $status = AccidentStates::SABT_FISH->value; -// $status_fa = AccidentStates::name($status); -// } -// elseif ($final_amount == 0) { -// $status = AccidentStates::PARDAKHT_FACTOR->value; -// $status_fa = AccidentStates::name($status); -// } -// else{ -// throw ValidationException::withMessages([ -// 'amounts' => 'مبالغ داغی و بیمه از مبلغ سهم راننده بیشتر است.', -// ]); -// } $accident->update([ 'deposit_insurance_image' => $request->has('deposit_insurance_image') ? FileFacade::save($request->deposit_insurance_image, "receipts_files/{$accident->id}/deposit_insurance") : null, 'deposit_insurance_amount' => $request->deposit_insurance_amount ?? 0, 'deposit_daghi_image' => $request->has('deposit_daghi_image') ? FileFacade::save($request->deposit_daghi_image, "receipts_files/{$accident->id}/deposit_daghi") : null, 'deposit_daghi_amount' => $request->deposit_daghi_amount ?? 0, - 'status' => AccidentStates::SABT_FISH->value, - 'status_fa' => AccidentStates::name(AccidentStates::SABT_FISH->value), + 'status' => AccidentStates::SABT_FISH->value, + 'status_fa' => AccidentStates::name(AccidentStates::SABT_FISH->value), ]); auth()->user()->addActivityComplete(1132); From 3d4b5d4839362dd2c81029a25e02a3688b2d4fcd Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 30 Aug 2025 15:06:16 +0330 Subject: [PATCH 08/26] add city_fa name --- app/Exports/V3/AccidentReceipt/ProvinceReport.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Exports/V3/AccidentReceipt/ProvinceReport.php b/app/Exports/V3/AccidentReceipt/ProvinceReport.php index 7d9f7cd2..72a7e7cf 100644 --- a/app/Exports/V3/AccidentReceipt/ProvinceReport.php +++ b/app/Exports/V3/AccidentReceipt/ProvinceReport.php @@ -47,8 +47,8 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithEvents, WithDrawin if ($existingCity) { $activities[] = [ - 'city_id' => -1, - 'city_fa' => 'کل استان', + 'city_id' => $city->id, + 'city_fa' => $city->name_fa, 'tedade' => $reportData['data'][$existingCity]->tedade, 'police_rah' => $reportData['data'][$existingCity]->police_rah, 'gozaresh_gasht' => $reportData['data'][$existingCity]->gozaresh_gasht, @@ -63,7 +63,7 @@ class ProvinceReport implements FromView, ShouldAutoSize, WithEvents, WithDrawin ]; } else { $activities[] = [ - 'name' => $city->name_fa, + 'city_fa' => $city->name_fa, 'tedade' => "", 'police_rah' => "", 'gozaresh_gasht' => "", From 78706ac7661e0b5409bfcd6780bf1f0ea001d97b Mon Sep 17 00:00:00 2001 From: joddyabott Date: Sun, 31 Aug 2025 11:28:13 +0330 Subject: [PATCH 09/26] change export for safty proivecy --- .../Country/AccessRoadReport.php | 56 ++++--- .../Country/ConstructionReport.php | 61 +++++--- .../Country/UtilityPassingReport.php | 56 ++++--- .../Province/AccessRoadReport.php | 56 ++++--- .../Province/ConstructionReport.php | 58 +++++--- .../Province/UtilityPassingReport.php | 56 ++++--- .../Accident/AccidentReceiptController.php | 25 +++- .../ConstructionActivityController.php | 10 ++ .../V3/AccidentReceipt/StoreRequest.php | 1 + .../V3/AccidentReceipt/UpdateRequest.php | 1 + .../SafetyAndPrivacy/OperatorService.php | 6 + .../AccessRoadActivityReport.blade.php | 135 +++++------------ .../ConstructionActivityReport.blade.php | 133 +++++------------ .../UtilityPassingActivityReport.blade.php | 133 +++++------------ .../AccessRoadActivityReport.blade.php | 135 +++++------------ .../ConstructionActivityReport.blade.php | 137 +++++------------- .../UtilityPassingActivityReport.blade.php | 135 +++++------------ 17 files changed, 482 insertions(+), 712 deletions(-) diff --git a/app/Exports/V3/SafetyAndPrivacy/Country/AccessRoadReport.php b/app/Exports/V3/SafetyAndPrivacy/Country/AccessRoadReport.php index ab5034ab..5fa5c71c 100644 --- a/app/Exports/V3/SafetyAndPrivacy/Country/AccessRoadReport.php +++ b/app/Exports/V3/SafetyAndPrivacy/Country/AccessRoadReport.php @@ -21,30 +21,50 @@ class AccessRoadReport implements FromView, WithEvents, ShouldAutoSize, WithDraw public function view(): View { - $data = $this->data; - $existedProvinces = array_keys($data); + $axis = [ + 1 => 'آزادراه', + 2 => 'بزرگراه', + 3 => 'اصلی', + 4 => 'فرعی', + 5 => 'روستایی' + ]; + $grid = []; + $national = null; - foreach (Province::all() as $value) { - $provinceId = $value->id; + foreach ($this->data as $r) { + $pid = $r->province_id; + $name = $r->province_name; + $axisKey = $axis[$r->axis_type_id] ?? "axis_{$r->axis_type_id}"; - if (!array_key_exists($provinceId, $existedProvinces)) { - $data[] = (object) [ - 'province_id' => $provinceId, - 'name_fa' => $value->name_fa, - 'sum' => 0, - 'axis_data' => [ - 'آزادراه' => ['1' => 0, '2' => 0, '3' => 0], - 'بزرگراه' => ['1' => 0, '2' => 0, '3' => 0], - 'اصلی' => ['1' => 0, '2' => 0, '3' => 0], - 'فرعی' => ['1' => 0, '2' => 0, '3' => 0], - 'روستایی' => ['1' => 0, '2' => 0, '3' => 0], - ], - ]; + if ($pid === -1) { + $national ??= ['province_name' => $name, 'total' => 0]; + $national["{$axisKey}_1"] = $r->s1; + $national["{$axisKey}_2"] = $r->s2; + $national["{$axisKey}_3"] = $r->s3; + $national['total'] = $r->total_sum; + continue; } + + if (!isset($grid[$pid])) { + $grid[$pid] = ['province_name' => $name, 'total' => 0]; + } + $grid[$pid]["{$axisKey}_1"] = $r->s1; + $grid[$pid]["{$axisKey}_2"] = $r->s2; + $grid[$pid]["{$axisKey}_3"] = $r->s3; + $grid[$pid]['total'] = $r->total_sum; } + $exportRows = []; + if ($national) $exportRows[] = $national; + foreach ($grid as $row) { + $exportRows[] = $row; + } + + return view('v3.Reports.SafetyAndPrivacy.Country.AccessRoadActivityReport', [ - 'data' => $data, + 'rows' => $exportRows, + 'axis' => $axis, + 'axisOrder' => array_keys($axis), ]); } diff --git a/app/Exports/V3/SafetyAndPrivacy/Country/ConstructionReport.php b/app/Exports/V3/SafetyAndPrivacy/Country/ConstructionReport.php index 52f57616..537caa42 100644 --- a/app/Exports/V3/SafetyAndPrivacy/Country/ConstructionReport.php +++ b/app/Exports/V3/SafetyAndPrivacy/Country/ConstructionReport.php @@ -2,18 +2,13 @@ namespace App\Exports\V3\SafetyAndPrivacy\Country; -use App\Models\EdarateShahri; -use App\Models\Province; use Illuminate\Contracts\View\View; -use Illuminate\Database\Eloquent\Collection; -use Illuminate\Http\Request; use Maatwebsite\Excel\Concerns\FromView; use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithDrawings; use Maatwebsite\Excel\Concerns\WithEvents; use Maatwebsite\Excel\Events\AfterSheet; use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; -use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; class ConstructionReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings { @@ -22,30 +17,50 @@ class ConstructionReport implements FromView, WithEvents, ShouldAutoSize, WithDr public function view(): View { - $data = $this->data; - $existedProvinces = array_keys($data); + $axis = [ + 1 => 'آزادراه', + 2 => 'بزرگراه', + 3 => 'اصلی', + 4 => 'فرعی', + 5 => 'روستایی' + ]; + $grid = []; + $national = null; - foreach (Province::all() as $value) { - $provinceId = $value->id; + foreach ($this->data as $r) { + $pid = $r->province_id; + $name = $r->province_name; + $axisKey = $axis[$r->axis_type_id] ?? "axis_{$r->axis_type_id}"; - if (!array_key_exists($provinceId, $existedProvinces)) { - $data[] = (object) [ - 'province_id' => $provinceId, - 'name_fa' => $value->name_fa, - 'sum' => 0, - 'axis_data' => [ - 'آزادراه' => ['1' => 0, '2' => 0, '3' => 0], - 'بزرگراه' => ['1' => 0, '2' => 0, '3' => 0], - 'اصلی' => ['1' => 0, '2' => 0, '3' => 0], - 'فرعی' => ['1' => 0, '2' => 0, '3' => 0], - 'روستایی' => ['1' => 0, '2' => 0, '3' => 0], - ], - ]; + if ($pid === -1) { + $national ??= ['province_name' => $name, 'total' => 0]; + $national["{$axisKey}_1"] = $r->s1; + $national["{$axisKey}_2"] = $r->s2; + $national["{$axisKey}_3"] = $r->s3; + $national['total'] = $r->total_sum; + continue; } + + if (!isset($grid[$pid])) { + $grid[$pid] = ['province_name' => $name, 'total' => 0]; + } + $grid[$pid]["{$axisKey}_1"] = $r->s1; + $grid[$pid]["{$axisKey}_2"] = $r->s2; + $grid[$pid]["{$axisKey}_3"] = $r->s3; + $grid[$pid]['total'] = $r->total_sum; } + $exportRows = []; + if ($national) $exportRows[] = $national; + foreach ($grid as $row) { + $exportRows[] = $row; + } + + return view('v3.Reports.SafetyAndPrivacy.Country.ConstructionActivityReport', [ - 'data' => $data, + 'rows' => $exportRows, + 'axis' => $axis, + 'axisOrder' => array_keys($axis), ]); } diff --git a/app/Exports/V3/SafetyAndPrivacy/Country/UtilityPassingReport.php b/app/Exports/V3/SafetyAndPrivacy/Country/UtilityPassingReport.php index 1221ca07..c6566cda 100644 --- a/app/Exports/V3/SafetyAndPrivacy/Country/UtilityPassingReport.php +++ b/app/Exports/V3/SafetyAndPrivacy/Country/UtilityPassingReport.php @@ -22,30 +22,50 @@ class UtilityPassingReport implements FromView, WithEvents, ShouldAutoSize, With public function view(): View { - $data = $this->data; - $existedProvinces = array_keys($data); + $axis = [ + 1 => 'آزادراه', + 2 => 'بزرگراه', + 3 => 'اصلی', + 4 => 'فرعی', + 5 => 'روستایی' + ]; + $grid = []; + $national = null; - foreach (Province::all() as $value) { - $provinceId = $value->id; + foreach ($this->data as $r) { + $pid = $r->province_id; + $name = $r->province_name; + $axisKey = $axis[$r->axis_type_id] ?? "axis_{$r->axis_type_id}"; - if (!array_key_exists($provinceId, $existedProvinces)) { - $data[] = (object) [ - 'province_id' => $provinceId, - 'name_fa' => $value->name_fa, - 'sum' => 0, - 'axis_data' => [ - 'آزادراه' => ['1' => 0, '2' => 0, '3' => 0], - 'بزرگراه' => ['1' => 0, '2' => 0, '3' => 0], - 'اصلی' => ['1' => 0, '2' => 0, '3' => 0], - 'فرعی' => ['1' => 0, '2' => 0, '3' => 0], - 'روستایی' => ['1' => 0, '2' => 0, '3' => 0], - ], - ]; + if ($pid === -1) { + $national ??= ['province_name' => $name, 'total' => 0]; + $national["{$axisKey}_1"] = $r->s1; + $national["{$axisKey}_2"] = $r->s2; + $national["{$axisKey}_3"] = $r->s3; + $national['total'] = $r->total_sum; + continue; } + + if (!isset($grid[$pid])) { + $grid[$pid] = ['province_name' => $name, 'total' => 0]; + } + $grid[$pid]["{$axisKey}_1"] = $r->s1; + $grid[$pid]["{$axisKey}_2"] = $r->s2; + $grid[$pid]["{$axisKey}_3"] = $r->s3; + $grid[$pid]['total'] = $r->total_sum; } + $exportRows = []; + if ($national) $exportRows[] = $national; + foreach ($grid as $row) { + $exportRows[] = $row; + } + + return view('v3.Reports.SafetyAndPrivacy.Country.UtilityPassingActivityReport', [ - 'data' => $data, + 'rows' => $exportRows, + 'axis' => $axis, + 'axisOrder' => array_keys($axis), ]); } diff --git a/app/Exports/V3/SafetyAndPrivacy/Province/AccessRoadReport.php b/app/Exports/V3/SafetyAndPrivacy/Province/AccessRoadReport.php index 053de9b4..65fd8215 100644 --- a/app/Exports/V3/SafetyAndPrivacy/Province/AccessRoadReport.php +++ b/app/Exports/V3/SafetyAndPrivacy/Province/AccessRoadReport.php @@ -16,35 +16,51 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; class AccessRoadReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings { - public function __construct(private array $data, public Request $request){} + public function __construct(private array $data){} public function view(): View { - $data = $this->data; - $existedCities = array_keys($data); - $edarat = EdarateShahri::query()->where('province_id', '=', $this->request->province_id)->get(['id', 'name_fa']); + $axis = [ + 1 => 'آزادراه', + 2 => 'بزرگراه', + 3 => 'اصلی', + 4 => 'فرعی', + 5 => 'روستایی' + ]; + $grid = []; + $summary = null; // کل استان - foreach ($edarat as $value) { - $edareId = $value->id; + foreach ($this->data as $r) { + $eid = $r->edare_id; + $name = $r->edare_name; + $axisKey = $axis[$r->axis_type_id] ?? "axis_{$r->axis_type_id}"; - if (!array_key_exists($edareId, $existedCities)) { - $data[] = (object) [ - 'edare_shahri_id' => $edareId, - 'name_fa' => $value->name_fa, - 'sum' => 0, - 'axis_data' => [ - 'آزادراه' => ['1' => 0, '2' => 0, '3' => 0], - 'بزرگراه' => ['1' => 0, '2' => 0, '3' => 0], - 'اصلی' => ['1' => 0, '2' => 0, '3' => 0], - 'فرعی' => ['1' => 0, '2' => 0, '3' => 0], - 'روستایی' => ['1' => 0, '2' => 0, '3' => 0], - ], - ]; + if ($eid === -1) { + $summary ??= ['edare_name' => $name, 'total' => 0]; + $summary["{$axisKey}_1"] = $r->s1; + $summary["{$axisKey}_2"] = $r->s2; + $summary["{$axisKey}_3"] = $r->s3; + $summary['total'] = $r->total_sum; + continue; } + + if (!isset($grid[$eid])) { + $grid[$eid] = ['edare_name' => $name, 'total' => 0]; + } + $grid[$eid]["{$axisKey}_1"] = $r->s1; + $grid[$eid]["{$axisKey}_2"] = $r->s2; + $grid[$eid]["{$axisKey}_3"] = $r->s3; + $grid[$eid]['total'] = $r->total_sum; } + $exportRows = []; + if ($summary) $exportRows[] = $summary; + foreach ($grid as $row) $exportRows[] = $row; + return view('v3.Reports.SafetyAndPrivacy.Province.AccessRoadActivityReport', [ - 'data' => $data, + 'rows' => $exportRows, + 'axis' => $axis, + 'axisOrder' => array_keys($axis), ]); } diff --git a/app/Exports/V3/SafetyAndPrivacy/Province/ConstructionReport.php b/app/Exports/V3/SafetyAndPrivacy/Province/ConstructionReport.php index 07e2d138..fa2b578a 100644 --- a/app/Exports/V3/SafetyAndPrivacy/Province/ConstructionReport.php +++ b/app/Exports/V3/SafetyAndPrivacy/Province/ConstructionReport.php @@ -4,7 +4,6 @@ namespace App\Exports\V3\SafetyAndPrivacy\Province; use App\Models\EdarateShahri; use Illuminate\Contracts\View\View; -use Illuminate\Database\Eloquent\Collection; use Illuminate\Http\Request; use Maatwebsite\Excel\Concerns\FromView; use Maatwebsite\Excel\Concerns\ShouldAutoSize; @@ -12,39 +11,54 @@ use Maatwebsite\Excel\Concerns\WithDrawings; use Maatwebsite\Excel\Concerns\WithEvents; use Maatwebsite\Excel\Events\AfterSheet; use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; -use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; class ConstructionReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings { - public function __construct(private array $data, public Request $request){} + public function __construct(private array $data){} public function view(): View { - $data = $this->data; - $existedCities = array_keys($data); - $edarat = EdarateShahri::query()->where('province_id', '=', $this->request->province_id)->get(['id', 'name_fa']); + $axis = [ + 1 => 'آزادراه', + 2 => 'بزرگراه', + 3 => 'اصلی', + 4 => 'فرعی', + 5 => 'روستایی' + ]; + $grid = []; + $summary = null; // کل استان - foreach ($edarat as $value) { - $edareId = $value->id; + foreach ($this->data as $r) { + $eid = $r->edare_id; + $name = $r->edare_name; + $axisKey = $axis[$r->axis_type_id] ?? "axis_{$r->axis_type_id}"; - if (!array_key_exists($edareId, $existedCities)) { - $data[] = (object) [ - 'edare_shahri_id' => $edareId, - 'name_fa' => $value->name_fa, - 'sum' => 0, - 'axis_data' => [ - 'آزادراه' => ['1' => 0, '2' => 0, '3' => 0], - 'بزرگراه' => ['1' => 0, '2' => 0, '3' => 0], - 'اصلی' => ['1' => 0, '2' => 0, '3' => 0], - 'فرعی' => ['1' => 0, '2' => 0, '3' => 0], - 'روستایی' => ['1' => 0, '2' => 0, '3' => 0], - ], - ]; + if ($eid === -1) { + $summary ??= ['edare_name' => $name, 'total' => 0]; + $summary["{$axisKey}_1"] = $r->s1; + $summary["{$axisKey}_2"] = $r->s2; + $summary["{$axisKey}_3"] = $r->s3; + $summary['total'] = $r->total_sum; + continue; } + + if (!isset($grid[$eid])) { + $grid[$eid] = ['edare_name' => $name, 'total' => 0]; + } + $grid[$eid]["{$axisKey}_1"] = $r->s1; + $grid[$eid]["{$axisKey}_2"] = $r->s2; + $grid[$eid]["{$axisKey}_3"] = $r->s3; + $grid[$eid]['total'] = $r->total_sum; } + $exportRows = []; + if ($summary) $exportRows[] = $summary; + foreach ($grid as $row) $exportRows[] = $row; + return view('v3.Reports.SafetyAndPrivacy.Province.ConstructionActivityReport', [ - 'data' => $data, + 'rows' => $exportRows, + 'axis' => $axis, + 'axisOrder' => array_keys($axis), ]); } diff --git a/app/Exports/V3/SafetyAndPrivacy/Province/UtilityPassingReport.php b/app/Exports/V3/SafetyAndPrivacy/Province/UtilityPassingReport.php index 5c67b160..5ee033a6 100644 --- a/app/Exports/V3/SafetyAndPrivacy/Province/UtilityPassingReport.php +++ b/app/Exports/V3/SafetyAndPrivacy/Province/UtilityPassingReport.php @@ -16,35 +16,51 @@ use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; class UtilityPassingReport implements FromView, WithEvents, ShouldAutoSize, WithDrawings { - public function __construct(private array $data, public Request $request){} + public function __construct(private array $data){} public function view(): View { - $data = $this->data; - $existedCities = array_keys($data); - $edarat = EdarateShahri::query()->where('province_id', '=', $this->request->province_id)->get(['id', 'name_fa']); + $axis = [ + 1 => 'آزادراه', + 2 => 'بزرگراه', + 3 => 'اصلی', + 4 => 'فرعی', + 5 => 'روستایی' + ]; + $grid = []; + $summary = null; // کل استان - foreach ($edarat as $value) { - $edareId = $value->id; + foreach ($this->data as $r) { + $eid = $r->edare_id; + $name = $r->edare_name; + $axisKey = $axis[$r->axis_type_id] ?? "axis_{$r->axis_type_id}"; - if (!array_key_exists($edareId, $existedCities)) { - $data[] = (object) [ - 'edare_shahri_id' => $edareId, - 'name_fa' => $value->name_fa, - 'sum' => 0, - 'axis_data' => [ - 'آزادراه' => ['1' => 0, '2' => 0, '3' => 0], - 'بزرگراه' => ['1' => 0, '2' => 0, '3' => 0], - 'اصلی' => ['1' => 0, '2' => 0, '3' => 0], - 'فرعی' => ['1' => 0, '2' => 0, '3' => 0], - 'روستایی' => ['1' => 0, '2' => 0, '3' => 0], - ], - ]; + if ($eid === -1) { + $summary ??= ['edare_name' => $name, 'total' => 0]; + $summary["{$axisKey}_1"] = $r->s1; + $summary["{$axisKey}_2"] = $r->s2; + $summary["{$axisKey}_3"] = $r->s3; + $summary['total'] = $r->total_sum; + continue; } + + if (!isset($grid[$eid])) { + $grid[$eid] = ['edare_name' => $name, 'total' => 0]; + } + $grid[$eid]["{$axisKey}_1"] = $r->s1; + $grid[$eid]["{$axisKey}_2"] = $r->s2; + $grid[$eid]["{$axisKey}_3"] = $r->s3; + $grid[$eid]['total'] = $r->total_sum; } + $exportRows = []; + if ($summary) $exportRows[] = $summary; + foreach ($grid as $row) $exportRows[] = $row; + return view('v3.Reports.SafetyAndPrivacy.Province.UtilityPassingActivityReport', [ - 'data' => $data, + 'rows' => $exportRows, + 'axis' => $axis, + 'axisOrder' => array_keys($axis), ]); } diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php index 1a5e5555..86725e9e 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php @@ -84,6 +84,7 @@ class AccidentReceiptController extends Controller 'police_file_date' => $request->police_file_date ?? null, 'status' => AccidentStates::BEDON_EGHDAM->value, 'status_fa' => AccidentStates::name(AccidentStates::BEDON_EGHDAM->value), + 'driver_rate' => $request->driver_rate, ]; $sum = 0; @@ -104,6 +105,7 @@ class AccidentReceiptController extends Controller $accidentData['ojrate_nasb'] = $ojrate_nasb; $accidentData['sum'] = $sum; + $accidentData['driver_share_amount'] = ($request->sum * $request->driver_rate)/100; $accident = Accident::query()->create($accidentData); $accident->damage_picture1 = FileFacade::save($request->file('damage_picture1'), "receipts_files/{$accident->id}"); @@ -153,6 +155,7 @@ class AccidentReceiptController extends Controller 'report_base' => $request->report_base, 'police_serial' => $request->police_serial ?? null, 'police_file_date' => $request->police_file_date ?? null, + 'driver_rate' => $request->driver_rate, ]; if ($request->report_base && $accident->police_file) { @@ -192,6 +195,8 @@ class AccidentReceiptController extends Controller $accidentData['ojrate_nasb'] = $ojrate_nasb; $accidentData['sum'] = $sum; + $accidentData['driver_share_amount'] = ($request->sum * $request->driver_rate)/100; + $accident->update($accidentData); @@ -246,13 +251,25 @@ class AccidentReceiptController extends Controller public function confirmPaymentInfo(ConfirmPaymentInfoRequest $request, Accident $accident): JsonResponse { DB::transaction(function () use ($request, $accident) { - $accident->update([ + + $final_amount = $accident->driver_share_amount - ($accident->deposit_insurance_amount + $accident->deposit_daghi_amount); + + if ($final_amount > 0) { + $status = AccidentStates::SABT_FISH->value; + $status_fa = AccidentStates::name($status); + } + elseif ($final_amount == 0) { + $status = AccidentStates::PARDAKHT_FACTOR->value; + $status_fa = AccidentStates::name($status); + } + + $accident->update([ 'deposit_insurance_image' => $request->has('deposit_insurance_image') ? FileFacade::save($request->deposit_insurance_image, "receipts_files/{$accident->id}/deposit_insurance") : null, 'deposit_insurance_amount' => $request->deposit_insurance_amount ?? 0, 'deposit_daghi_image' => $request->has('deposit_daghi_image') ? FileFacade::save($request->deposit_daghi_image, "receipts_files/{$accident->id}/deposit_daghi") : null, 'deposit_daghi_amount' => $request->deposit_daghi_amount ?? 0, - 'status' => AccidentStates::SABT_FISH->value, - 'status_fa' => AccidentStates::name(AccidentStates::SABT_FISH->value), + 'status' => $status, + 'status_fa' => $status_fa, ]); auth()->user()->addActivityComplete(1132); @@ -266,7 +283,7 @@ class AccidentReceiptController extends Controller */ public function submitInvoice(Accident $accident, PaymentService $paymentService): JsonResponse { - $final_amount = $accident->sum - ($accident->deposit_insurance_amount + $accident->deposit_daghi_amount); + $final_amount = $accident->driver_share_amount - ($accident->deposit_insurance_amount + $accident->deposit_daghi_amount); throw_if($final_amount < 0, new ProhibitedAction('مبالغ داغی و بیمه از مبلغ کل بیشتر می باشد.')); diff --git a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php index cef7b562..f3907676 100644 --- a/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php +++ b/app/Http/Controllers/V3/Dashboard/SafetyAndPrivacy/OperatorReport/ConstructionActivityController.php @@ -12,6 +12,7 @@ use App\Services\Cartables\SafetyAndPrivacy\OperatorService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; +use PhpOffice\PhpSpreadsheet\Exception; use Symfony\Component\HttpFoundation\BinaryFileResponse; class ConstructionActivityController extends Controller @@ -38,6 +39,11 @@ class ConstructionActivityController extends Controller 'edarateShahri' => EdarateShahri::where('province_id', $request->province_id)->get(['id', 'name_fa']), ]); } + + /** + * @throws Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + */ public function countryExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { $data = $operatorService->countryActivity(89); @@ -46,6 +52,10 @@ class ConstructionActivityController extends Controller return Excel::download(new ExcelReport($data), $name); } + /** + * @throws Exception + * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception + */ public function provinceExcelActivity(Request $request, OperatorService $operatorService): BinaryFileResponse { $data = $operatorService->provinceActivity( diff --git a/app/Http/Requests/V3/AccidentReceipt/StoreRequest.php b/app/Http/Requests/V3/AccidentReceipt/StoreRequest.php index f3fe71dd..2e967f3a 100644 --- a/app/Http/Requests/V3/AccidentReceipt/StoreRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/StoreRequest.php @@ -46,6 +46,7 @@ class StoreRequest extends FormRequest 'damage_items' => 'required|array', 'damage_items.*.value' => 'required', 'damage_items.*.amount' => 'required', + 'driver_rate' => 'required|numeric', ]; } } diff --git a/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php b/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php index 134bb4a0..1959b35f 100644 --- a/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php +++ b/app/Http/Requests/V3/AccidentReceipt/UpdateRequest.php @@ -45,6 +45,7 @@ class UpdateRequest extends FormRequest 'damage_items' => 'required|array', 'damage_items.*.value' => 'required', 'damage_items.*.amount' => 'required', + 'driver_rate' => 'required|numeric', ]; } } diff --git a/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php b/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php index 39b86060..efc94ac3 100644 --- a/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php +++ b/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php @@ -40,6 +40,7 @@ class OperatorService WITH base AS ( SELECT p.id AS province_id, + p.name AS province_name, a.id AS axis_type_id, COALESCE(SUM(t.step = 1), 0) AS s1, COALESCE(SUM(t.step = 2), 0) AS s2, @@ -54,6 +55,7 @@ class OperatorService ) SELECT province_id, + province_name, axis_type_id, s1, s2, @@ -68,6 +70,7 @@ class OperatorService SELECT -1 AS province_id, + 'کل کشور' AS province_name, axis_type_id, COALESCE(SUM(s1), 0) AS s1, COALESCE(SUM(s2), 0) AS s2, @@ -91,6 +94,7 @@ class OperatorService WITH edareh_data AS ( SELECT e.id AS edare_id, + e.name_fa AS edare_name, a.id AS axis_type_id, COALESCE(SUM(t.step = 1), 0) AS s1, COALESCE(SUM(t.step = 2), 0) AS s2, @@ -106,6 +110,7 @@ class OperatorService ) SELECT edare_id, + edare_name, axis_type_id, s1, s2, @@ -120,6 +125,7 @@ class OperatorService SELECT -1 AS edare_id, + 'کل استان' AS edare_name, axis_type_id, COALESCE(SUM(s1), 0) AS s1, COALESCE(SUM(s2), 0) AS s2, diff --git a/resources/views/v3/Reports/SafetyAndPrivacy/Country/AccessRoadActivityReport.blade.php b/resources/views/v3/Reports/SafetyAndPrivacy/Country/AccessRoadActivityReport.blade.php index 673063c3..da65da08 100644 --- a/resources/views/v3/Reports/SafetyAndPrivacy/Country/AccessRoadActivityReport.blade.php +++ b/resources/views/v3/Reports/SafetyAndPrivacy/Country/AccessRoadActivityReport.blade.php @@ -1,132 +1,71 @@ - - + - - کشوری - + - +@php + // show a dot if key missing or value is 0/empty + function cell($row, $key) { + return array_key_exists($key, $row) ? ($row[$key] ?: '0') : '0'; + } +@endphp - - - - - - - - - - - - - - + @foreach($axisOrder as $aid) + + @endforeach - - - - - - - - - - - - - - - + @foreach($axisOrder as $aid) + + + + @endforeach + - @foreach ($data as $item) + @foreach ($rows as $r) - - - - - - - - - - - - - - - - - + + + + @foreach ($axisOrder as $aid) + @php $group = $axis[$aid]; @endphp + + + + @endforeach @endforeach
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
+ + گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز
- گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز -
+ اداره کل + تعداد کل - آزاد راه - -بزرگ راه - - اصلی - - فرعی - - روستایی - + {{ $axis[$aid] }} +
- گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - گام اول (شناسایی)گام دوم (مستندات قضایی)گام سوم (برخورد)
{{ $item->name_fa }}{{ $item->sum }}{{ $item->axis_data['آزادراه'][1] }}{{$item->axis_data['آزادراه'][2] }}{{ $item->axis_data['آزادراه'][3] }}{{ $item->axis_data['بزرگراه'][1] }}{{ $item->axis_data['بزرگراه'][2] }}{{ $item->axis_data['بزرگراه'][3] }}{{ $item->axis_data['اصلی'][1] }}{{ $item->axis_data['اصلی'][2] }}{{ $item->axis_data['اصلی'][3] }}{{ $item->axis_data['فرعی'][1] }}{{ $item->axis_data['فرعی'][2] }}{{ $item->axis_data['فرعی'][3] }}{{ $item->axis_data['روستایی'][1] }}{{ $item->axis_data['روستایی'][2] }}{{ $item->axis_data['روستایی'][3] }}{{ $r['province_name'] }}{{ $r['total'] ?: '0' }}{{ cell($r, "{$group}_1") }}{{ cell($r, "{$group}_2") }}{{ cell($r, "{$group}_3") }}
+ diff --git a/resources/views/v3/Reports/SafetyAndPrivacy/Country/ConstructionActivityReport.blade.php b/resources/views/v3/Reports/SafetyAndPrivacy/Country/ConstructionActivityReport.blade.php index 1854ba63..7ed4abde 100644 --- a/resources/views/v3/Reports/SafetyAndPrivacy/Country/ConstructionActivityReport.blade.php +++ b/resources/views/v3/Reports/SafetyAndPrivacy/Country/ConstructionActivityReport.blade.php @@ -1,132 +1,71 @@ - - + - - کشوری - + - +@php + // show a dot if key missing or value is 0/empty + function cell($row, $key) { + return array_key_exists($key, $row) ? ($row[$key] ?: '0') : '0'; + } +@endphp - - - - - - - - - - - - - - + @foreach($axisOrder as $aid) + + @endforeach - - - - - - - - - - - - - - - + @foreach($axisOrder as $aid) + + + + @endforeach + - @foreach ($data as $item) + @foreach ($rows as $r) - - - - - - - - - - - - - - - - - + + + + @foreach ($axisOrder as $aid) + @php $group = $axis[$aid]; @endphp + + + + @endforeach @endforeach
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
-
+ گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز
+ اداره کل + تعداد کل - آزاد راه - - بزرگ راه - - اصلی - - فرعی - - روستایی - + {{ $axis[$aid] }} +
- گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - گام اول (شناسایی)گام دوم (مستندات قضایی)گام سوم (برخورد)
{{ $item->name_fa }}{{ $item->sum }}{{ $item->axis_data['آزادراه'][1] }}{{$item->axis_data['آزادراه'][2] }}{{ $item->axis_data['آزادراه'][3] }}{{ $item->axis_data['بزرگراه'][1] }}{{ $item->axis_data['بزرگراه'][2] }}{{ $item->axis_data['بزرگراه'][3] }}{{ $item->axis_data['اصلی'][1] }}{{ $item->axis_data['اصلی'][2] }}{{ $item->axis_data['اصلی'][3] }}{{ $item->axis_data['فرعی'][1] }}{{ $item->axis_data['فرعی'][2] }}{{ $item->axis_data['فرعی'][3] }}{{ $item->axis_data['روستایی'][1] }}{{ $item->axis_data['روستایی'][2] }}{{ $item->axis_data['روستایی'][3] }}{{ $r['province_name'] }}{{ $r['total'] ?: '0' }}{{ cell($r, "{$group}_1") }}{{ cell($r, "{$group}_2") }}{{ cell($r, "{$group}_3") }}
+ diff --git a/resources/views/v3/Reports/SafetyAndPrivacy/Country/UtilityPassingActivityReport.blade.php b/resources/views/v3/Reports/SafetyAndPrivacy/Country/UtilityPassingActivityReport.blade.php index 092683d7..2e558491 100644 --- a/resources/views/v3/Reports/SafetyAndPrivacy/Country/UtilityPassingActivityReport.blade.php +++ b/resources/views/v3/Reports/SafetyAndPrivacy/Country/UtilityPassingActivityReport.blade.php @@ -1,132 +1,71 @@ - - + - - کشوری - + - +@php + // show a dot if key missing or value is 0/empty + function cell($row, $key) { + return array_key_exists($key, $row) ? ($row[$key] ?: '0') : '0'; + } +@endphp - - - - - - - - - - - - - - + @foreach($axisOrder as $aid) + + @endforeach - - - - - - - - - - - - - - - + @foreach($axisOrder as $aid) + + + + @endforeach + - @foreach ($data as $item) + @foreach ($rows as $r) - - - - - - - - - - - - - - - - - + + + + @foreach ($axisOrder as $aid) + @php $group = $axis[$aid]; @endphp + + + + @endforeach @endforeach
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
-
+ گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز
+ اداره کل + تعداد کل - آزاد راه - - بزرگ راه - - اصلی - - فرعی - - روستایی - + {{ $axis[$aid] }} +
- گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - گام اول (شناسایی)گام دوم (مستندات قضایی)گام سوم (برخورد)
{{ $item->name_fa }}{{ $item->sum }}{{ $item->axis_data['آزادراه'][1] }}{{$item->axis_data['آزادراه'][2] }}{{ $item->axis_data['آزادراه'][3] }}{{ $item->axis_data['بزرگراه'][1] }}{{ $item->axis_data['بزرگراه'][2] }}{{ $item->axis_data['بزرگراه'][3] }}{{ $item->axis_data['اصلی'][1] }}{{ $item->axis_data['اصلی'][2] }}{{ $item->axis_data['اصلی'][3] }}{{ $item->axis_data['فرعی'][1] }}{{ $item->axis_data['فرعی'][2] }}{{ $item->axis_data['فرعی'][3] }}{{ $item->axis_data['روستایی'][1] }}{{ $item->axis_data['روستایی'][2] }}{{ $item->axis_data['روستایی'][3] }}{{ $r['province_name'] }}{{ $r['total'] ?: '0' }}{{ cell($r, "{$group}_1") }}{{ cell($r, "{$group}_2") }}{{ cell($r, "{$group}_3") }}
+ diff --git a/resources/views/v3/Reports/SafetyAndPrivacy/Province/AccessRoadActivityReport.blade.php b/resources/views/v3/Reports/SafetyAndPrivacy/Province/AccessRoadActivityReport.blade.php index e54e7ddc..e039b603 100644 --- a/resources/views/v3/Reports/SafetyAndPrivacy/Province/AccessRoadActivityReport.blade.php +++ b/resources/views/v3/Reports/SafetyAndPrivacy/Province/AccessRoadActivityReport.blade.php @@ -1,131 +1,70 @@ - - + - - - استانی - + گزارش ادارات شهرستانی + - +@php + function cell($row, $key) { + return array_key_exists($key, $row) ? ($row[$key] ?: '0') : '0'; + } +@endphp - - - - - - - - - - - - - + @foreach($axisOrder as $aid) + + @endforeach - - - - - - - - - - - - - - - + @foreach($axisOrder as $aid) + + + + @endforeach + - @foreach ($data as $item) + @foreach ($rows as $r) - - - - - - - - - - - - - - - - - + + + + @foreach ($axisOrder as $aid) + @php $g = $axis[$aid]; @endphp + + + + @endforeach @endforeach
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
-
+ گزارش نگهداری حریم راه برای راه دسترسی غیر مجاز
- اداره کل + + اداره + تعداد کل - آزاد راه - - بزرگ راه - - اصلی - - فرعی - - روستایی - + {{ $axis[$aid] }} +
- گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - گام اول (شناسایی)گام دوم (مستندات قضایی)گام سوم (برخورد)
{{ $item->name_fa }}{{ $item->sum }}{{ $item->axis_data['آزادراه'][1] }}{{$item->axis_data['آزادراه'][2] }}{{ $item->axis_data['آزادراه'][3] }}{{ $item->axis_data['بزرگراه'][1] }}{{ $item->axis_data['بزرگراه'][2] }}{{ $item->axis_data['بزرگراه'][3] }}{{ $item->axis_data['اصلی'][1] }}{{ $item->axis_data['اصلی'][2] }}{{ $item->axis_data['اصلی'][3] }}{{ $item->axis_data['فرعی'][1] }}{{ $item->axis_data['فرعی'][2] }}{{ $item->axis_data['فرعی'][3] }}{{ $item->axis_data['روستایی'][1] }}{{ $item->axis_data['روستایی'][2] }}{{ $item->axis_data['روستایی'][3] }}{{ $r['edare_name'] }}{{ $r['total'] ?: '0' }}{{ cell($r, "{$g}_1") }}{{ cell($r, "{$g}_2") }}{{ cell($r, "{$g}_3") }}
+ diff --git a/resources/views/v3/Reports/SafetyAndPrivacy/Province/ConstructionActivityReport.blade.php b/resources/views/v3/Reports/SafetyAndPrivacy/Province/ConstructionActivityReport.blade.php index 509e3b0c..0e9357a6 100644 --- a/resources/views/v3/Reports/SafetyAndPrivacy/Province/ConstructionActivityReport.blade.php +++ b/resources/views/v3/Reports/SafetyAndPrivacy/Province/ConstructionActivityReport.blade.php @@ -1,131 +1,70 @@ - - + - - - استانی - + گزارش ادارات شهرستانی + - +@php + function cell($row, $key) { + return array_key_exists($key, $row) ? ($row[$key] ?: '0') : '0'; + } +@endphp - - - - - - - - - - - - - + @foreach($axisOrder as $aid) + + @endforeach - - - - - - - - - - - - - - - + @foreach($axisOrder as $aid) + + + + @endforeach + - @foreach ($data as $item) + @foreach ($rows as $r) - - - - - - - - - - - - - - - - - + + + + @foreach ($axisOrder as $aid) + @php $g = $axis[$aid]; @endphp + + + + @endforeach @endforeach
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
-
- گزارش نگهداری حریم راه برای ساخت و ساز غیر مجاز + + گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز
- اداره کل + + اداره + تعداد کل - آزاد راه - - بزرگ راه - - اصلی - - فرعی - - روستایی - + {{ $axis[$aid] }} +
- گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - گام اول (شناسایی)گام دوم (مستندات قضایی)گام سوم (برخورد)
{{ $item->name_fa }}{{ $item->sum }}{{ $item->axis_data['آزادراه'][1] }}{{$item->axis_data['آزادراه'][2] }}{{ $item->axis_data['آزادراه'][3] }}{{ $item->axis_data['بزرگراه'][1] }}{{ $item->axis_data['بزرگراه'][2] }}{{ $item->axis_data['بزرگراه'][3] }}{{ $item->axis_data['اصلی'][1] }}{{ $item->axis_data['اصلی'][2] }}{{ $item->axis_data['اصلی'][3] }}{{ $item->axis_data['فرعی'][1] }}{{ $item->axis_data['فرعی'][2] }}{{ $item->axis_data['فرعی'][3] }}{{ $item->axis_data['روستایی'][1] }}{{ $item->axis_data['روستایی'][2] }}{{ $item->axis_data['روستایی'][3] }}{{ $r['edare_name'] }}{{ $r['total'] ?: '0' }}{{ cell($r, "{$g}_1") }}{{ cell($r, "{$g}_2") }}{{ cell($r, "{$g}_3") }}
+ diff --git a/resources/views/v3/Reports/SafetyAndPrivacy/Province/UtilityPassingActivityReport.blade.php b/resources/views/v3/Reports/SafetyAndPrivacy/Province/UtilityPassingActivityReport.blade.php index 407ca02a..0e9357a6 100644 --- a/resources/views/v3/Reports/SafetyAndPrivacy/Province/UtilityPassingActivityReport.blade.php +++ b/resources/views/v3/Reports/SafetyAndPrivacy/Province/UtilityPassingActivityReport.blade.php @@ -1,131 +1,70 @@ - - + - - - استانی - + گزارش ادارات شهرستانی + - +@php + function cell($row, $key) { + return array_key_exists($key, $row) ? ($row[$key] ?: '0') : '0'; + } +@endphp - - - - - - - - - - - - - + @foreach($axisOrder as $aid) + + @endforeach - - - - - - - - - - - - - - - + @foreach($axisOrder as $aid) + + + + @endforeach + - @foreach ($data as $item) + @foreach ($rows as $r) - - - - - - - - - - - - - - - - - + + + + @foreach ($axisOrder as $aid) + @php $g = $axis[$aid]; @endphp + + + + @endforeach @endforeach
+ تاریخ دریافت گزارش: {{ verta()->now()->format('Y/m/d H:i') }}
-
+ گزارش نگهداری حریم راه برای عبور تاسیسات زیربنایی غیر مجاز
- اداره کل + + اداره + تعداد کل - آزاد راه - - بزرگ راه - - اصلی - - فرعی - - روستایی - + {{ $axis[$aid] }} +
- گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - - گام اول (شناسایی) - - گام دوم (مستندات قضایی) - - گام سوم (برخورد) - گام اول (شناسایی)گام دوم (مستندات قضایی)گام سوم (برخورد)
{{ $item->name_fa }}{{ $item->sum }}{{ $item->axis_data['آزادراه'][1] }}{{$item->axis_data['آزادراه'][2] }}{{ $item->axis_data['آزادراه'][3] }}{{ $item->axis_data['بزرگراه'][1] }}{{ $item->axis_data['بزرگراه'][2] }}{{ $item->axis_data['بزرگراه'][3] }}{{ $item->axis_data['اصلی'][1] }}{{ $item->axis_data['اصلی'][2] }}{{ $item->axis_data['اصلی'][3] }}{{ $item->axis_data['فرعی'][1] }}{{ $item->axis_data['فرعی'][2] }}{{ $item->axis_data['فرعی'][3] }}{{ $item->axis_data['روستایی'][1] }}{{ $item->axis_data['روستایی'][2] }}{{ $item->axis_data['روستایی'][3] }}{{ $r['edare_name'] }}{{ $r['total'] ?: '0' }}{{ cell($r, "{$g}_1") }}{{ cell($r, "{$g}_2") }}{{ cell($r, "{$g}_3") }}
+ From db8a0e9021c05d4d8b56b4c46de6825452d283b0 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 31 Aug 2025 11:31:27 +0330 Subject: [PATCH 10/26] change no process cartable --- .../Controllers/V3/CMMSMachinesController.php | 4 +- .../Harim/PanjareVahedController.php | 4 +- .../Mission/ControlUnitController.php | 44 ------------------- .../Mission/RequestPortalController.php | 39 ++++++++++++++++ .../Harim/PanjareVahed/ReceiveNewRequest.php | 39 ++++++++++++++++ .../NoProcessRequest.php | 9 ++-- .../AccidentReceipt/ProvinceReport.blade.php | 2 +- routes/v3.php | 7 +-- 8 files changed, 91 insertions(+), 57 deletions(-) create mode 100644 app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php rename app/Http/Requests/V3/Mission/{ControlUnit => RequestPortal}/NoProcessRequest.php (77%) diff --git a/app/Http/Controllers/V3/CMMSMachinesController.php b/app/Http/Controllers/V3/CMMSMachinesController.php index fcef7b57..b74be799 100644 --- a/app/Http/Controllers/V3/CMMSMachinesController.php +++ b/app/Http/Controllers/V3/CMMSMachinesController.php @@ -22,13 +22,13 @@ class CMMSMachinesController extends Controller $request, allowedFilters: ['*'], allowedSortings: ['*'], - allowedSelects: ['machine_code', 'id', 'plak_number', 'car_name'] + allowedSelects: ['machine_code', 'id', 'plak_number', 'car_name', 'car_type'] )); } public function list(): JsonResponse { - $machinesList = CMMSMachine::query()->get(['machine_code', 'id', 'plak_number', 'car_name']); + $machinesList = CMMSMachine::query()->get(['machine_code', 'id', 'plak_number', 'car_name', 'car_type']); return $this->successResponse($machinesList); } diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index 1629d876..8960e165 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\V3\Dashboard\Harim; use App\Enums\HarimStates; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Dashboard\Harim\PanjareVahed\GetAccessRoadRequest; +use App\Http\Requests\V3\Dashboard\Harim\PanjareVahed\ReceiveNewRequest; use App\Http\Traits\ApiResponse; use App\Models\City; use App\Models\Harim; @@ -15,7 +16,7 @@ class PanjareVahedController extends Controller { use ApiResponse; - public function receiveNewRequests(Request $request) + public function receiveNewRequest(ReceiveNewRequest $request) { try { $city = City::query() @@ -63,6 +64,7 @@ class PanjareVahedController extends Controller 'province' => $city->province()->first()->name_fa, ]); } + public function getAccessRoad(GetAccessRoadRequest $request) { $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php index 588ea09c..d11ba150 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php @@ -2,14 +2,10 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; -use App\Enums\MissionCategory; use App\Enums\MissionStates; -use App\Enums\MissionTypes; -use App\Enums\MissionZones; use App\Events\V3\Dashboard\Mission\SendDataToFMSEvent; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Mission\ControlUnit\FinishRequest; -use App\Http\Requests\V3\Mission\ControlUnit\NoProcessRequest; use App\Http\Requests\V3\Mission\ControlUnit\StartRequest; use App\Http\Traits\ApiResponse; use App\Models\Mission; @@ -68,44 +64,4 @@ class ControlUnitController extends Controller return $this->successResponse(); } - - - public function noProcess(NoProcessRequest $request): JsonResponse - { - DB::transaction(function () use ($request) { - $user = auth()->user(); - $zone= $request->zone; - $type= MissionTypes::NO_PROCESS->value; - $state = MissionStates::CREATED_NO_PROCESS->value; - - $mission = Mission::query()->create([ - 'user_id' => $user->id, - 'username' => $user->username, - 'province_id' => $user->province_id, - 'province_name' => $user->province_fa, - 'edare_shahri_id' => $user->edarate_shahri_id ?? null, - 'edare_shahri_name' => $user->edarate_shahri_name ?? null, - 'zone' => $zone, - 'zone_fa' => MissionZones::name($zone), - 'type' => $type, - 'type_fa' => MissionTypes::name($type), - 'start_date' => $request->start_date, - 'end_date' => $request->end_date, - 'end_point' => $request->end_point, - 'area' => json_encode($request->area), - 'category_id' => $request->category_id, - 'category_name' => MissionCategory::name($request->category_id), - 'start_time' => $request->start_date, - 'finish_time' => $request->end_date, - 'state_id' => $state, - 'state_name' => MissionStates::name($state), - ]); - - $mission->rahdaran()->sync($request->rahdaran); - $mission->machines()->attach($request->machines); - $mission->rahdaran()->attach($request->driver, ['is_driver' => true]); - }); - - return $this->successResponse(); - } } diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index a7f68b25..21984f90 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -8,6 +8,7 @@ use App\Enums\MissionTypes; use App\Enums\MissionZones; use App\Http\Controllers\Controller; use App\Http\Controllers\V3\Dashboard\RoadPatrol\OperatorController; +use App\Http\Requests\V3\Mission\RequestPortal\NoProcessRequest; use App\Http\Requests\V3\Mission\RequestPortal\StoreRequest; use App\Http\Requests\V3\Mission\RequestPortal\UpdateRequest; use App\Http\Traits\ApiResponse; @@ -123,4 +124,42 @@ class RequestPortalController extends Controller }); return $this->successResponse(); } + public function noProcess(NoProcessRequest $request): JsonResponse + { + DB::transaction(function () use ($request) { + $user = auth()->user(); + $zone= $request->zone; + $type= MissionTypes::NO_PROCESS->value; + $state = MissionStates::END_MISSION->value; + + $mission = Mission::query()->create([ + 'user_id' => $user->id, + 'username' => $user->username, + 'province_id' => $user->province_id, + 'province_name' => $user->province_fa, + 'edare_shahri_id' => $user->edarate_shahri_id ?? null, + 'edare_shahri_name' => $user->edarate_shahri_name ?? null, + 'zone' => $zone, + 'zone_fa' => MissionZones::name($zone), + 'type' => $type, + 'type_fa' => MissionTypes::name($type), + 'start_date' => $request->start_date, + 'end_date' => $request->end_date, + 'end_point' => $request->end_point, + 'area' => json_encode($request->area), + 'category_id' => $request->category_id, + 'category_name' => MissionCategory::name($request->category_id), + 'start_time' => $request->start_date, + 'finish_time' => $request->end_date, + 'state_id' => $state, + 'state_name' => MissionStates::name($state), + ]); + + $mission->rahdaran()->sync($request->rahdaran); + $mission->machines()->attach($request->machines); + $mission->rahdaran()->attach($request->driver, ['is_driver' => true]); + }); + + return $this->successResponse(); + } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php new file mode 100644 index 00000000..36f4bf2e --- /dev/null +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php @@ -0,0 +1,39 @@ + + */ + public function rules(): array + { + return [ + 'panjare_vahed_id' => 'required|integer', + 'national_id' => 'required', + 'phone_number' => 'required', + 'request_date' => 'required', + 'requested_organization' => 'required', + 'plan_group' => 'required', + 'plan_title' => 'required', + 'worksheet_id' => 'required', + 'response_options' => 'required', + 'isic' => 'required', + 'primary_area' => 'required', + ]; + } +} diff --git a/app/Http/Requests/V3/Mission/ControlUnit/NoProcessRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php similarity index 77% rename from app/Http/Requests/V3/Mission/ControlUnit/NoProcessRequest.php rename to app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php index 3b914dc0..a7bbea8f 100644 --- a/app/Http/Requests/V3/Mission/ControlUnit/NoProcessRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php @@ -1,12 +1,9 @@ 'تاریخ پایان باید قبل از زمان فعلی باشد.', - 'end_date.after' => 'تاریخ پایان نباید قبل از تاریخ شروع باشد.', + 'end_date.before' => 'تاریخ پایان باید قبل از زمان فعلی باشد.', + 'end_date.after' => 'تاریخ پایان نباید قبل از تاریخ شروع باشد.', ]; } } diff --git a/resources/views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php b/resources/views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php index 5b490ad6..2cb6ca81 100644 --- a/resources/views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php +++ b/resources/views/v3/Reports/AccidentReceipt/ProvinceReport.blade.php @@ -101,7 +101,7 @@ {{ $road['tedade'] }} - < + {{ $road['egdam'] }} {{ $road['pardakht'] }} diff --git a/routes/v3.php b/routes/v3.php index 0d22bded..a2d2f81c 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -481,6 +481,7 @@ Route::prefix('missions') ->group(function () { Route::get('/', 'index')->name('index'); Route::post('/', 'store')->name('store'); + Route::post('/no_process','noProcess')->name('noProcess'); Route::get('/{mission}', 'show')->name('show'); Route::post('/{mission}', 'update')->name('update'); Route::delete('/{mission}', 'destroy')->name('destroy'); @@ -501,7 +502,6 @@ Route::prefix('missions') ->controller(ControlUnitController::class) ->group(function () { Route::get('/', 'index')->name('index'); - Route::post('/no_process','noProcess')->name('noProcess'); Route::post('/start/{mission}', 'start')->name('start'); Route::post('/finish/{mission}', 'finish')->name('finish'); }); @@ -561,11 +561,12 @@ Route::prefix('harim') Route::post('/confirm_guarantee_letter_need/{harim}', 'confirmGuaranteeLetterNeed')->name('confirmGuaranteeLetterNeed'); Route::get('/{harim}', 'show')->name('show'); }); - Route::prefix('panjarevahed') + Route::prefix('panjare_vahed') ->name('panjarevahed.') ->controller(PanjarevahedController::class) ->group(function () { - Route::post('/get_access_road','getAccessRoad')->name('getAccessRoad'); + Route::post('/receive_new_request', 'receiveNewRequest')->name('receiveNewRequest'); + Route::post('/receive_access_road','getAccessRoad')->name('getAccessRoad'); }); }); From 96bf586604a440c2ca577684038c8aba49d0c181 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Sun, 31 Aug 2025 13:21:58 +0330 Subject: [PATCH 11/26] fix some code for some thing such as mission accident and safety privacy --- .../V3/Dashboard/Accident/AccidentReceiptController.php | 4 ++-- .../V3/Dashboard/Mission/RequestPortalController.php | 2 ++ .../Requests/V3/Mission/RequestPortal/NoProcessRequest.php | 1 + app/Services/Cartables/SafetyAndPrivacy/OperatorService.php | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php index 86725e9e..1e083a56 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php @@ -268,8 +268,8 @@ class AccidentReceiptController extends Controller 'deposit_insurance_amount' => $request->deposit_insurance_amount ?? 0, 'deposit_daghi_image' => $request->has('deposit_daghi_image') ? FileFacade::save($request->deposit_daghi_image, "receipts_files/{$accident->id}/deposit_daghi") : null, 'deposit_daghi_amount' => $request->deposit_daghi_amount ?? 0, - 'status' => $status, - 'status_fa' => $status_fa, + 'status' => $status, + 'status_fa' => $status_fa, ]); auth()->user()->addActivityComplete(1132); diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index 21984f90..2a97eb99 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -153,6 +153,8 @@ class RequestPortalController extends Controller 'finish_time' => $request->end_date, 'state_id' => $state, 'state_name' => MissionStates::name($state), + 'explanation' => $request->explanation, + 'request_date' => now(), ]); $mission->rahdaran()->sync($request->rahdaran); diff --git a/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php index a7bbea8f..b632adf6 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/NoProcessRequest.php @@ -36,6 +36,7 @@ class NoProcessRequest extends FormRequest 'area.type' => 'required|string', 'area.coordinates' => 'required|array', 'category_id' => 'required|in:1,2,3', + 'explanation' => 'required|string', ]; } diff --git a/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php b/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php index efc94ac3..fec10878 100644 --- a/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php +++ b/app/Services/Cartables/SafetyAndPrivacy/OperatorService.php @@ -40,7 +40,7 @@ class OperatorService WITH base AS ( SELECT p.id AS province_id, - p.name AS province_name, + p.name_fa AS province_name, a.id AS axis_type_id, COALESCE(SUM(t.step = 1), 0) AS s1, COALESCE(SUM(t.step = 2), 0) AS s2, From a3d087ac65615d3ac928cd3990affc53ad7aacf2 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Sun, 31 Aug 2025 13:22:13 +0330 Subject: [PATCH 12/26] fix some code for some thing such as mission accident and safety privacy --- .../V3/Dashboard/Accident/AccidentReceiptController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php index 1e083a56..e210d9da 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php @@ -269,7 +269,7 @@ class AccidentReceiptController extends Controller 'deposit_daghi_image' => $request->has('deposit_daghi_image') ? FileFacade::save($request->deposit_daghi_image, "receipts_files/{$accident->id}/deposit_daghi") : null, 'deposit_daghi_amount' => $request->deposit_daghi_amount ?? 0, 'status' => $status, - 'status_fa' => $status_fa, + 'status_fa' => $status_fa, ]); auth()->user()->addActivityComplete(1132); From f7f1134ce3ed45ca5e845b8a5cf89a5b8e7f6678 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Sun, 31 Aug 2025 13:52:59 +0330 Subject: [PATCH 13/26] change some code for some thing such as mission accident and enum --- app/Enums/MissionTypes.php | 14 ++++++++------ .../Accident/AccidentReceiptController.php | 6 +++--- .../Dashboard/Mission/RequestPortalController.php | 6 +++++- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/app/Enums/MissionTypes.php b/app/Enums/MissionTypes.php index 356fbd33..f50c9e2d 100644 --- a/app/Enums/MissionTypes.php +++ b/app/Enums/MissionTypes.php @@ -4,16 +4,18 @@ namespace App\Enums; enum MissionTypes: int { - case SAATY= 1; - case ROZANE = 2; - case NO_PROCESS = 3; + case PROCESS_SAATY= 1; + case PROCESS_ROZANE = 2; + case NO_PROCESS_SAATY = 3; + case NO_PROCESS_ROZANE = 4; public static function name(int $state): string { $mapArray = [ - 1 => 'ساعتی', - 2 => 'روزانه', - 3 => 'بدون فرآیند', + 1 => ' با فرایند (ساعتی)', + 2 => 'با فرایند(روزانه)', + 3 => 'بدون فرآیند(ساعتی)', + 4 => 'بدون فرایند (روزانه)' ]; return $mapArray[$state]; diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php index e210d9da..6e44793f 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php @@ -263,13 +263,13 @@ class AccidentReceiptController extends Controller $status_fa = AccidentStates::name($status); } - $accident->update([ + $accident->update([ 'deposit_insurance_image' => $request->has('deposit_insurance_image') ? FileFacade::save($request->deposit_insurance_image, "receipts_files/{$accident->id}/deposit_insurance") : null, 'deposit_insurance_amount' => $request->deposit_insurance_amount ?? 0, 'deposit_daghi_image' => $request->has('deposit_daghi_image') ? FileFacade::save($request->deposit_daghi_image, "receipts_files/{$accident->id}/deposit_daghi") : null, 'deposit_daghi_amount' => $request->deposit_daghi_amount ?? 0, - 'status' => $status, - 'status_fa' => $status_fa, + 'status' => $status, + 'status_fa' => $status_fa, ]); auth()->user()->addActivityComplete(1132); diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index 2a97eb99..d490db4a 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -15,6 +15,7 @@ use App\Http\Traits\ApiResponse; use App\Models\Mission; use App\Models\RoadObserved; use App\Services\Cartables\Mission\RequestPortalService; +use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -127,9 +128,12 @@ class RequestPortalController extends Controller public function noProcess(NoProcessRequest $request): JsonResponse { DB::transaction(function () use ($request) { + + $start = Carbon::parse($request->start_date); + $end = Carbon::parse($request->end_date); + $type = $start->diffInMinutes($end) > 480 ? MissionTypes::NO_PROCESS_ROZANE->value : MissionTypes::NO_PROCESS_SAATY->value; $user = auth()->user(); $zone= $request->zone; - $type= MissionTypes::NO_PROCESS->value; $state = MissionStates::END_MISSION->value; $mission = Mission::query()->create([ From 7c92ea055a4ea8f7265daae57eca3e436ec0d8c0 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Tue, 2 Sep 2025 13:28:59 +0330 Subject: [PATCH 14/26] fix store request for road item --- .../Requests/V3/RoadItem/Operator/StoreRequest.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php index 66f045b3..f4dfdaf4 100644 --- a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php +++ b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php @@ -6,8 +6,6 @@ use App\Models\Mission; use Carbon\Carbon; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; -use Illuminate\Validation\Rule; -use Illuminate\Validation\ValidationException; use Illuminate\Validation\Validator; class StoreRequest extends FormRequest @@ -52,18 +50,24 @@ class StoreRequest extends FormRequest 'activity_time' => 'ساعت فعالیت', ]; } + public function after(): array { return [ function (Validator $validator) { + + $mission = Mission::find($this->mission_id); + if (!$mission) { + $validator->errors()->add('mission_id', 'مأموریت یافت نشد.'); + return; + } $activityTime = Carbon::parse("{$this->activity_date} {$this->activity_time}"); - if ($activityTime->lt($this->mission->start_date) || $activityTime->gt($this->mission->end_date)) { + if ($activityTime->lt($mission->start_date) || $activityTime->gt($mission->end_date)) { $validator->errors()->add('activity_time', 'زمان گزارش باید بین بازه مأموریت باشد.'); } } ]; } - } From 2e52ef9cadbad84bb0b9ca76947f9acf4ae1e20e Mon Sep 17 00:00:00 2001 From: joddyabott Date: Tue, 2 Sep 2025 13:44:48 +0330 Subject: [PATCH 15/26] fix store request and operator controller for road item --- .../Controllers/V3/Dashboard/RoadItem/OperatorController.php | 2 -- app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php | 4 ---- 2 files changed, 6 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php index c422e120..f9d065a1 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadItem/OperatorController.php @@ -123,8 +123,6 @@ class OperatorController extends Controller new ProhibitedAction('اقدام مربوطه قبلا رسیدگی شده است.') ); - $road_item->rahdaran()->attach($request->rahdaran_id); - $road_item->cmmsMachines()->attach($request->machines_id); $road_item->missions()->attach($request->mission_id); $user->addActivityComplete(1154); diff --git a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php index f4dfdaf4..a6093ca1 100644 --- a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php +++ b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php @@ -36,10 +36,6 @@ class StoreRequest extends FormRequest 'activity_time' => 'required|date_format:H:i', 'before_image' => 'image|max:4096', 'after_image' => 'image|max:4096', - 'machines_id' => 'required|array', - 'machines_id.*' => 'required|exists:cmms_machines,id', - 'rahdaran_id' => 'required|array', - 'rahdaran_id.*' => 'required|exists:rahdaran,id', ]; } From 37341bff58d9adf0e500754241560a096fa0d94b Mon Sep 17 00:00:00 2001 From: joddyabott Date: Tue, 2 Sep 2025 15:10:13 +0330 Subject: [PATCH 16/26] fix operator controller for road patrol --- .../V3/Dashboard/RoadPatrol/OperatorController.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php index 4b6e3ee2..09990761 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php @@ -40,6 +40,12 @@ class OperatorController extends Controller $road_patrol = RoadPatrol::query()->create([ 'status' => 0, 'status_fa' => 'در حال بررسی', + 'province_id' => $mission->province_id, + 'province_fa' => $mission->province_name, + 'edare_id' => $mission->edare_shahri_id, + 'edare_name' => $mission->edare_shahri_name, + 'start_time' => $mission->start_date, + 'end_time' => $mission->end_date, ]); $road_patrol->missions()->attach($mission->id); From 92da48fe28058d6af9775368b9031af1071d6176 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Tue, 2 Sep 2025 15:20:06 +0330 Subject: [PATCH 17/26] fix store request and operator controller for road item --- .../RoadPatrol/OperatorController.php | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php index 09990761..685dd3a8 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php @@ -37,20 +37,23 @@ class OperatorController extends Controller public function store(Mission $mission): JsonResponse { - $road_patrol = RoadPatrol::query()->create([ - 'status' => 0, - 'status_fa' => 'در حال بررسی', - 'province_id' => $mission->province_id, - 'province_fa' => $mission->province_name, - 'edare_id' => $mission->edare_shahri_id, - 'edare_name' => $mission->edare_shahri_name, - 'start_time' => $mission->start_date, - 'end_time' => $mission->end_date, - ]); + DB::transaction(function () use ($mission) { - $road_patrol->missions()->attach($mission->id); + $road_patrol = RoadPatrol::query()->create([ + 'status' => 0, + 'status_fa' => 'در حال بررسی', + 'province_id' => $mission->province_id, + 'province_fa' => $mission->province_name, + 'edare_id' => $mission->edare_shahri_id, + 'edare_name' => $mission->edare_shahri_name, + 'start_time' => $mission->start_date, + 'end_time' => $mission->end_date, + ]); - auth()->user()->addActivityComplete(1147); + $road_patrol->missions()->attach($mission->id); + + auth()->user()->addActivityComplete(1147); + }); return $this->successResponse(); } From ec6a1271573a511136dd8539d46a82c20932b0a3 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Tue, 2 Sep 2025 15:34:40 +0330 Subject: [PATCH 18/26] fix operator controller for road patrol --- .../Controllers/V3/Dashboard/RoadPatrol/OperatorController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php index 685dd3a8..f3f58721 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php @@ -38,8 +38,10 @@ class OperatorController extends Controller public function store(Mission $mission): JsonResponse { DB::transaction(function () use ($mission) { + $user = auth()->user(); $road_patrol = RoadPatrol::query()->create([ + 'operator_id' => $user->id, 'status' => 0, 'status_fa' => 'در حال بررسی', 'province_id' => $mission->province_id, From 899826a38fcf8b793bc2d93b074b48422df55b2c Mon Sep 17 00:00:00 2001 From: joddyabott Date: Tue, 2 Sep 2025 15:35:25 +0330 Subject: [PATCH 19/26] fix operator controller for road patrol --- app/Services/Cartables/RoadPatrol/OperatorService.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Services/Cartables/RoadPatrol/OperatorService.php b/app/Services/Cartables/RoadPatrol/OperatorService.php index ce754c57..2b8b3188 100644 --- a/app/Services/Cartables/RoadPatrol/OperatorService.php +++ b/app/Services/Cartables/RoadPatrol/OperatorService.php @@ -12,8 +12,8 @@ class OperatorService public function dataTable(Request $request, $loadRelations = false) { $query = RoadPatrol::query() - ->where('operator_id', '=', auth()->user()->id) - ->when($loadRelations, fn ($query) => $query->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])); + ->where('operator_id', '=', auth()->user()->id); +// ->when($loadRelations, fn ($query) => $query->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])); return DataTableFacade::run( $query, From 70b4472f184dcf0a884be9512758f802b27af523 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Wed, 3 Sep 2025 10:18:53 +0330 Subject: [PATCH 20/26] add one culum for rahdaran and add in controller --- .../Controllers/V3/RahdaranController.php | 2 ++ .../Requests/V3/Rahdaran/StoreRequest.php | 1 + .../Requests/V3/Rahdaran/UpdateRequest.php | 1 + ..._03_095512_add_phone_to_rahdaran_table.php | 29 +++++++++++++++++++ 4 files changed, 33 insertions(+) create mode 100644 database/migrations/2025_09_03_095512_add_phone_to_rahdaran_table.php diff --git a/app/Http/Controllers/V3/RahdaranController.php b/app/Http/Controllers/V3/RahdaranController.php index e287ff84..a8368de7 100644 --- a/app/Http/Controllers/V3/RahdaranController.php +++ b/app/Http/Controllers/V3/RahdaranController.php @@ -30,6 +30,7 @@ class RahdaranController extends Controller Rahdaran::query()->create([ 'name' =>$request->name, 'code' =>$request->code, + 'mobile' =>$request->mobile, ]); return $this->successResponse(); } @@ -44,6 +45,7 @@ class RahdaranController extends Controller $rahdaran->update([ 'name' =>$request->name, 'code' =>$request->code, + 'mobile' =>$request->mobile, ]); return $this->successResponse(); } diff --git a/app/Http/Requests/V3/Rahdaran/StoreRequest.php b/app/Http/Requests/V3/Rahdaran/StoreRequest.php index e9436240..52613094 100644 --- a/app/Http/Requests/V3/Rahdaran/StoreRequest.php +++ b/app/Http/Requests/V3/Rahdaran/StoreRequest.php @@ -25,6 +25,7 @@ class StoreRequest extends FormRequest return [ 'name' => 'required|string|max:255', 'code' => 'required|string|max:255', + 'mobile' => 'required|digits:11|regex:/^09\d{9}$/', ]; } } diff --git a/app/Http/Requests/V3/Rahdaran/UpdateRequest.php b/app/Http/Requests/V3/Rahdaran/UpdateRequest.php index 9a8bc794..c9c87975 100644 --- a/app/Http/Requests/V3/Rahdaran/UpdateRequest.php +++ b/app/Http/Requests/V3/Rahdaran/UpdateRequest.php @@ -25,6 +25,7 @@ class UpdateRequest extends FormRequest return [ 'name' => 'required|string|max:255', 'code' => 'required|string|max:255', + 'mobile' => 'required|digits:11|regex:/^09\d{9}$/', ]; } } diff --git a/database/migrations/2025_09_03_095512_add_phone_to_rahdaran_table.php b/database/migrations/2025_09_03_095512_add_phone_to_rahdaran_table.php new file mode 100644 index 00000000..82a96ff1 --- /dev/null +++ b/database/migrations/2025_09_03_095512_add_phone_to_rahdaran_table.php @@ -0,0 +1,29 @@ +char('mobile', 11)->nullable(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('rahdaran', function (Blueprint $table) { + $table->dropColumn('mobile'); + }); + } +}; From 4308a6443fe991b41d849c4a6ad6df16ee002d8e Mon Sep 17 00:00:00 2001 From: joddyabott Date: Wed, 3 Sep 2025 12:32:17 +0330 Subject: [PATCH 21/26] fix code in request form for road item --- .../V3/RoadItem/Operator/StoreRequest.php | 4 +++- .../V3/RoadItem/Operator/UpdateRequest.php | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php index a6093ca1..1263bb97 100644 --- a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php +++ b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php @@ -57,9 +57,11 @@ class StoreRequest extends FormRequest $validator->errors()->add('mission_id', 'مأموریت یافت نشد.'); return; } + $startTime = Carbon::parse($mission->start_time); + $finishTime = Carbon::parse($mission->finish_time); $activityTime = Carbon::parse("{$this->activity_date} {$this->activity_time}"); - if ($activityTime->lt($mission->start_date) || $activityTime->gt($mission->end_date)) { + if (! $activityTime->between($startTime, $finishTime, true)) { $validator->errors()->add('activity_time', 'زمان گزارش باید بین بازه مأموریت باشد.'); } } diff --git a/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php b/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php index 51986ff5..a169d836 100644 --- a/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php +++ b/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php @@ -2,9 +2,12 @@ namespace App\Http\Requests\V3\RoadItem\Operator; +use App\Models\Mission; +use Carbon\Carbon; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; +use Illuminate\Validation\Validator; class UpdateRequest extends FormRequest { @@ -48,4 +51,25 @@ class UpdateRequest extends FormRequest 'activity_time' => 'ساعت فعالیت', ]; } + + public function after(): array + { + return [ + function (Validator $validator) { + + $mission = Mission::find($this->mission_id); + if (!$mission) { + $validator->errors()->add('mission_id', 'مأموریت یافت نشد.'); + return; + } + $startTime = Carbon::parse($mission->start_time); + $finishTime = Carbon::parse($mission->finish_time); + $activityTime = Carbon::parse("{$this->activity_date} {$this->activity_time}"); + + if (! $activityTime->between($startTime, $finishTime, true)) { + $validator->errors()->add('activity_time', 'زمان گزارش باید بین بازه مأموریت باشد.'); + } + } + ]; + } } From df04125cb4c8dd6b83f2a97529e57110993f33c6 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Wed, 3 Sep 2025 16:28:32 +0330 Subject: [PATCH 22/26] fix last code --- app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php | 5 +---- app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php | 6 +----- app/Services/Cartables/RoadPatrol/OperatorService.php | 4 ++-- .../2025_09_03_095512_add_phone_to_rahdaran_table.php | 2 +- 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php index 1263bb97..df5ef422 100644 --- a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php +++ b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php @@ -53,10 +53,7 @@ class StoreRequest extends FormRequest function (Validator $validator) { $mission = Mission::find($this->mission_id); - if (!$mission) { - $validator->errors()->add('mission_id', 'مأموریت یافت نشد.'); - return; - } + $startTime = Carbon::parse($mission->start_time); $finishTime = Carbon::parse($mission->finish_time); $activityTime = Carbon::parse("{$this->activity_date} {$this->activity_time}"); diff --git a/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php b/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php index a169d836..f2a2d1bb 100644 --- a/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php +++ b/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php @@ -6,7 +6,6 @@ use App\Models\Mission; use Carbon\Carbon; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; -use Illuminate\Validation\Rule; use Illuminate\Validation\Validator; class UpdateRequest extends FormRequest @@ -58,10 +57,7 @@ class UpdateRequest extends FormRequest function (Validator $validator) { $mission = Mission::find($this->mission_id); - if (!$mission) { - $validator->errors()->add('mission_id', 'مأموریت یافت نشد.'); - return; - } + $startTime = Carbon::parse($mission->start_time); $finishTime = Carbon::parse($mission->finish_time); $activityTime = Carbon::parse("{$this->activity_date} {$this->activity_time}"); diff --git a/app/Services/Cartables/RoadPatrol/OperatorService.php b/app/Services/Cartables/RoadPatrol/OperatorService.php index 2b8b3188..ce754c57 100644 --- a/app/Services/Cartables/RoadPatrol/OperatorService.php +++ b/app/Services/Cartables/RoadPatrol/OperatorService.php @@ -12,8 +12,8 @@ class OperatorService public function dataTable(Request $request, $loadRelations = false) { $query = RoadPatrol::query() - ->where('operator_id', '=', auth()->user()->id); -// ->when($loadRelations, fn ($query) => $query->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])); + ->where('operator_id', '=', auth()->user()->id) + ->when($loadRelations, fn ($query) => $query->with(['rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])); return DataTableFacade::run( $query, diff --git a/database/migrations/2025_09_03_095512_add_phone_to_rahdaran_table.php b/database/migrations/2025_09_03_095512_add_phone_to_rahdaran_table.php index 82a96ff1..b6bb1c24 100644 --- a/database/migrations/2025_09_03_095512_add_phone_to_rahdaran_table.php +++ b/database/migrations/2025_09_03_095512_add_phone_to_rahdaran_table.php @@ -12,7 +12,7 @@ return new class extends Migration public function up(): void { Schema::table('rahdaran', function (Blueprint $table) { - $table->char('mobile', 11)->nullable(); + $table->string('mobile', 11)->nullable(); }); } From 719139635783ff0159d820c73903778af55a84f8 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Sat, 6 Sep 2025 09:46:48 +0330 Subject: [PATCH 23/26] change form request --- app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php | 3 +-- app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php index df5ef422..4b26a498 100644 --- a/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php +++ b/app/Http/Requests/V3/RoadItem/Operator/StoreRequest.php @@ -52,7 +52,7 @@ class StoreRequest extends FormRequest return [ function (Validator $validator) { - $mission = Mission::find($this->mission_id); + $mission = Mission::query()->find($this->mission_id); $startTime = Carbon::parse($mission->start_time); $finishTime = Carbon::parse($mission->finish_time); @@ -64,5 +64,4 @@ class StoreRequest extends FormRequest } ]; } - } diff --git a/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php b/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php index f2a2d1bb..1aeacae0 100644 --- a/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php +++ b/app/Http/Requests/V3/RoadItem/Operator/UpdateRequest.php @@ -56,7 +56,7 @@ class UpdateRequest extends FormRequest return [ function (Validator $validator) { - $mission = Mission::find($this->mission_id); + $mission = Mission::query()->find($this->mission_id); $startTime = Carbon::parse($mission->start_time); $finishTime = Carbon::parse($mission->finish_time); From 29de3a7d292778ab996d760eec9659a1d95e2cb9 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 6 Sep 2025 10:20:22 +0330 Subject: [PATCH 24/26] add area for rahdari points --- .../Mission/ControlUnitController.php | 6 ++++ .../Mission/RequestPortalController.php | 12 +++----- .../RoadMaintenanceStationController.php | 1 + .../RoadPatrol/OperatorController.php | 4 +-- .../Controllers/V3/RahdaranController.php | 10 +++++-- .../RoadMaintenanceStation/StoreRequest.php | 3 ++ app/Models/RahdariPoint.php | 8 ++++++ ...027_add_paid_driver_to_accidents_table.php | 3 +- ...415_add_column_to_rahdari_points_table.php | 28 +++++++++++++++++++ 9 files changed, 61 insertions(+), 14 deletions(-) create mode 100644 database/migrations/2025_09_06_100415_add_column_to_rahdari_points_table.php diff --git a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php index d11ba150..506861fe 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/ControlUnitController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; use App\Enums\MissionStates; use App\Events\V3\Dashboard\Mission\SendDataToFMSEvent; use App\Http\Controllers\Controller; +use App\Http\Controllers\V3\Dashboard\RoadPatrol\OperatorController; use App\Http\Requests\V3\Mission\ControlUnit\FinishRequest; use App\Http\Requests\V3\Mission\ControlUnit\StartRequest; use App\Http\Traits\ApiResponse; @@ -60,6 +61,11 @@ class ControlUnitController extends Controller ]); }); + if ($mission->category_id == 2) { + $rpc = new OperatorController(); + $rpc->store($mission); + } + SendDataToFMSEvent::dispatch($mission); return $this->successResponse(); diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index d490db4a..954b73d8 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -34,6 +34,7 @@ class RequestPortalController extends Controller DB::transaction(function () use ($request) { $user = auth()->user(); $state = MissionStates::REQUEST_CREATED->value; + $category = $request->category_id; $mission = Mission::query()->create([ 'user_id' => $user->id, @@ -55,20 +56,15 @@ class RequestPortalController extends Controller 'description' => $request->description, 'end_point' => $request->end_point, 'area' => json_encode($request->area), - 'category_id' => $request->category_id, - 'category_name' => MissionCategory::name($request->category_id), + 'category_id' => $category, + 'category_name' => MissionCategory::name($category), 'explanation' => $request->explanation, 'code' => rand(100000, 999999), ]); $mission->rahdaran()->sync($request->rahdaran); - if ($request->category_id == 2) { - $rpc = new OperatorController(); - $rpc->store($mission); - } - - if ($request->category_id == 3){ + if ($category == 3){ RoadObserved::query() ->find($request->road_observed_id) ->missions() diff --git a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php index 35344404..8267a5c2 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php @@ -104,6 +104,7 @@ class RoadMaintenanceStationController extends Controller 'lat' => $request->lat, 'lng' => $request->lng, 'updated_at_fa' => verta()->now()->format('Y/m/d H:i:s'), + 'area' => json_encode($request->area), ]); $uploadPaths = [ diff --git a/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php b/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php index f3f58721..9e906fe8 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadPatrol/OperatorController.php @@ -48,8 +48,8 @@ class OperatorController extends Controller 'province_fa' => $mission->province_name, 'edare_id' => $mission->edare_shahri_id, 'edare_name' => $mission->edare_shahri_name, - 'start_time' => $mission->start_date, - 'end_time' => $mission->end_date, + 'start_time' => $mission->start_time, + 'end_time' => $mission->finish_time, ]); $road_patrol->missions()->attach($mission->id); diff --git a/app/Http/Controllers/V3/RahdaranController.php b/app/Http/Controllers/V3/RahdaranController.php index a8368de7..13143436 100644 --- a/app/Http/Controllers/V3/RahdaranController.php +++ b/app/Http/Controllers/V3/RahdaranController.php @@ -8,6 +8,7 @@ use App\Http\Requests\V3\Rahdaran\StoreRequest; use App\Http\Requests\V3\Rahdaran\UpdateRequest; use App\Http\Traits\ApiResponse; use App\Models\Rahdaran; +use Illuminate\Database\QueryException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -52,8 +53,13 @@ class RahdaranController extends Controller public function destroy(Rahdaran $rahdaran): JsonResponse { - $rahdaran->delete(); - return $this->successResponse(); + try { + $rahdaran->delete(); + return $this->successResponse(); + } + catch (QueryException $exception) { + return $this->errorResponse('امکان حذف وجود ندارد'); + } } public function list(): JsonResponse diff --git a/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php b/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php index e58698ea..b3e16bf0 100644 --- a/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php +++ b/app/Http/Requests/V3/RoadMaintenanceStation/StoreRequest.php @@ -52,6 +52,9 @@ class StoreRequest extends FormRequest 'overview_files_3' => 'file|mimes:jpg,jpeg,png,pdf|max:51200', 'overview_files_4' => 'file|mimes:jpg,jpeg,png,pdf|max:51200', 'overview_files_5' => 'file|mimes:jpg,jpeg,png,pdf|max:51200', + 'area' => 'required|array', + 'area.type' => 'required|string', + 'area.coordinates' => 'required|array', ]; } } diff --git a/app/Models/RahdariPoint.php b/app/Models/RahdariPoint.php index 3cbbc611..ed929de7 100644 --- a/app/Models/RahdariPoint.php +++ b/app/Models/RahdariPoint.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphMany; @@ -80,4 +81,11 @@ class RahdariPoint extends Model { return $this->hasMany('App\Models\RahdariPointHistory', 'point_id'); } + + protected function area(): Attribute + { + return Attribute::make( + get: fn($value) => json_decode($value) + ); + } } \ No newline at end of file diff --git a/database/migrations/2025_08_30_110027_add_paid_driver_to_accidents_table.php b/database/migrations/2025_08_30_110027_add_paid_driver_to_accidents_table.php index cb903027..c2a6c864 100644 --- a/database/migrations/2025_08_30_110027_add_paid_driver_to_accidents_table.php +++ b/database/migrations/2025_08_30_110027_add_paid_driver_to_accidents_table.php @@ -14,7 +14,6 @@ return new class extends Migration Schema::table('accidents', function (Blueprint $table) { $table->unsignedBigInteger('driver_share_amount')->nullable(); $table->unsignedBigInteger('driver_rate')->nullable(); - }); } @@ -24,7 +23,7 @@ return new class extends Migration public function down(): void { Schema::table('accidents', function (Blueprint $table) { - $table->dropColumn('driver_share_amount', 'driver_rate'); + $table->dropColumn(['driver_share_amount', 'driver_rate']); }); } }; diff --git a/database/migrations/2025_09_06_100415_add_column_to_rahdari_points_table.php b/database/migrations/2025_09_06_100415_add_column_to_rahdari_points_table.php new file mode 100644 index 00000000..4c511b55 --- /dev/null +++ b/database/migrations/2025_09_06_100415_add_column_to_rahdari_points_table.php @@ -0,0 +1,28 @@ +json('area')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('rahdari_points', function (Blueprint $table) { + $table->dropColumn('area'); + }); + } +}; From 4fcb460d39618271f0e6f261fb6fef2c242eb52f Mon Sep 17 00:00:00 2001 From: joddyabott Date: Sat, 6 Sep 2025 11:22:28 +0330 Subject: [PATCH 25/26] change and fix form request for rahdaran --- app/Http/Controllers/HomeContentController.php | 2 +- app/Http/Requests/V3/Rahdaran/StoreRequest.php | 2 +- app/Http/Requests/V3/Rahdaran/UpdateRequest.php | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/HomeContentController.php b/app/Http/Controllers/HomeContentController.php index a42efa07..0fee3b74 100644 --- a/app/Http/Controllers/HomeContentController.php +++ b/app/Http/Controllers/HomeContentController.php @@ -67,7 +67,7 @@ class HomeContentController extends Controller $cities = \App\Models\City::query() ->where('province_id', $id) ->where('type_id', 1) - ->get(['id', 'name_fa', 'province_id','center_lat','center_lng']); + ->get(['id', 'name_fa', 'province_id','center_lat','center_long']); // $cities = \App\Models\City::where('province_id', $id)->get(); return response()->json([ diff --git a/app/Http/Requests/V3/Rahdaran/StoreRequest.php b/app/Http/Requests/V3/Rahdaran/StoreRequest.php index 52613094..3abec426 100644 --- a/app/Http/Requests/V3/Rahdaran/StoreRequest.php +++ b/app/Http/Requests/V3/Rahdaran/StoreRequest.php @@ -24,7 +24,7 @@ class StoreRequest extends FormRequest { return [ 'name' => 'required|string|max:255', - 'code' => 'required|string|max:255', + 'code' => 'required|string|max:255|unique:rahdaran,code', 'mobile' => 'required|digits:11|regex:/^09\d{9}$/', ]; } diff --git a/app/Http/Requests/V3/Rahdaran/UpdateRequest.php b/app/Http/Requests/V3/Rahdaran/UpdateRequest.php index c9c87975..522faa53 100644 --- a/app/Http/Requests/V3/Rahdaran/UpdateRequest.php +++ b/app/Http/Requests/V3/Rahdaran/UpdateRequest.php @@ -4,6 +4,7 @@ namespace App\Http\Requests\V3\Rahdaran; use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rule; class UpdateRequest extends FormRequest { @@ -24,7 +25,7 @@ class UpdateRequest extends FormRequest { return [ 'name' => 'required|string|max:255', - 'code' => 'required|string|max:255', + 'code' => ['required', 'string', Rule::unique('rahdaran', 'code')->ignore($this->rahdaran->id)], 'mobile' => 'required|digits:11|regex:/^09\d{9}$/', ]; } From 17096910c9b5be922080f7bb1a8b0da6f2c54f70 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sun, 7 Sep 2025 08:40:23 +0330 Subject: [PATCH 26/26] add area to history --- .../RoadMaintenanceStationController.php | 2 ++ .../RoadMaintenanceStation/UpdateRequest.php | 3 ++ app/Models/RahdariPoint.php | 1 + app/Models/RahdariPointHistory.php | 11 +++++++- ...olumn_to_rahdari_point_histories_table.php | 28 +++++++++++++++++++ 5 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2025_09_06_145110_add_column_to_rahdari_point_histories_table.php diff --git a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php index 8267a5c2..e1d5cbf6 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php +++ b/app/Http/Controllers/V3/Dashboard/RoadMaintenanceStationController.php @@ -166,6 +166,7 @@ class RoadMaintenanceStationController extends Controller 'previous_lat' => $rahdariPoint->lat, 'previous_lng' => $rahdariPoint->lng, 'new_files' => json_encode($rahdariPoint->files), + 'area' => json_encode($rahdariPoint->area), ]); $rahdariPoint->update([ @@ -196,6 +197,7 @@ class RoadMaintenanceStationController extends Controller 'lng_to' => $request->lng_to, 'color' => $request->color, 'updated_at_fa' => verta()->now()->format('Y/m/d H:i:s'), + 'area' => json_encode($request->area), ]); $uploadFields = [ diff --git a/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php b/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php index 3443e3b1..56b10987 100644 --- a/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php +++ b/app/Http/Requests/V3/RoadMaintenanceStation/UpdateRequest.php @@ -50,6 +50,9 @@ class UpdateRequest extends FormRequest 'overview_files_3' => 'file|mimes:jpg,jpeg,png,pdf|max:5120', 'overview_files_4' => 'file|mimes:jpg,jpeg,png,pdf|max:5120', 'overview_files_5' => 'file|mimes:jpg,jpeg,png,pdf|max:5120', + 'area' => 'required|array', + 'area.type' => 'required|string', + 'area.coordinates' => 'required|array', ]; } } diff --git a/app/Models/RahdariPoint.php b/app/Models/RahdariPoint.php index ed929de7..dded767e 100644 --- a/app/Models/RahdariPoint.php +++ b/app/Models/RahdariPoint.php @@ -70,6 +70,7 @@ class RahdariPoint extends Model 'lat_to', 'lng_to', 'updated_at_fa', + 'area' ]; public function files(): MorphMany diff --git a/app/Models/RahdariPointHistory.php b/app/Models/RahdariPointHistory.php index c6d359bc..7f3abb09 100644 --- a/app/Models/RahdariPointHistory.php +++ b/app/Models/RahdariPointHistory.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; class RahdariPointHistory extends Model @@ -33,11 +34,19 @@ class RahdariPointHistory extends Model 'previous_lat', 'previous_lng', 'new_files', - 'point_id' + 'point_id', + 'area' ]; public function rahdariPoint() { return $this->belongsTo('App\Models\RahdariPoint'); } + + protected function area(): Attribute + { + return Attribute::make( + get: fn($value) => json_decode($value) + ); + } } diff --git a/database/migrations/2025_09_06_145110_add_column_to_rahdari_point_histories_table.php b/database/migrations/2025_09_06_145110_add_column_to_rahdari_point_histories_table.php new file mode 100644 index 00000000..62b0f087 --- /dev/null +++ b/database/migrations/2025_09_06_145110_add_column_to_rahdari_point_histories_table.php @@ -0,0 +1,28 @@ +json('area')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('rahdari_point_histories', function (Blueprint $table) { + $table->dropColumn('area'); + }); + } +};