From 29de3a7d292778ab996d760eec9659a1d95e2cb9 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 6 Sep 2025 10:20:22 +0330 Subject: [PATCH] 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'); + }); + } +};