diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index 4c8bedeb..75715a62 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -27,6 +27,11 @@ class RequestPortalController extends Controller DB::transaction(function () use ($request) { $user = auth()->user(); $state = MissionStates::REQUEST_CREATED->value; + $geojson = [ + 'type' => 'Polygon', + 'coordinates' => [$request->area] + ]; + $mission = Mission::query()->create([ 'user_id' => $user->id, 'username' => $user->username, @@ -43,6 +48,7 @@ class RequestPortalController extends Controller 'request_date' => now(), 'description' => $request->description, 'end_point' => $request->end_point, + 'area' => json_encode($geojson) ]); $mission->rahdaran()->attach($request->rahdaran); @@ -60,6 +66,10 @@ class RequestPortalController extends Controller { DB::transaction(function () use ($mission, $request) { $state = MissionStates::REQUEST_CREATED->value; + $geojson = [ + 'type' => 'Polygon', + 'coordinates' => [$request->area] + ]; $mission->update([ 'state_id' => $state, 'state_name' => MissionStates::name($state), @@ -70,6 +80,7 @@ class RequestPortalController extends Controller 'request_date' => $request->request_date, 'description' => $request->description, 'end_point' => $request->end_point, + 'area' => json_encode($geojson) ]); $mission->rahdaran()->sync($request->rahdaran); @@ -77,7 +88,6 @@ class RequestPortalController extends Controller return $this->successResponse(); } - public function destroy(Mission $mission): JsonResponse { DB::transaction(function () use ($mission) { diff --git a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php index d4927d28..6f646530 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php @@ -31,6 +31,7 @@ class StoreRequest extends FormRequest 'request_date' => 'required|date', 'description' => 'string', 'end_point' => 'required|string', + 'area' => 'required|array', ]; } } diff --git a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php index be6eaee5..790e5e48 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php @@ -32,6 +32,7 @@ class UpdateRequest extends FormRequest 'request_date' => 'required|date', 'description' => 'string', 'end_point' => 'required|string', + 'area' => 'required|array', ]; } } diff --git a/app/Services/Cartables/Mission/RequestPortalService.php b/app/Services/Cartables/Mission/RequestPortalService.php index 01d7cf76..33494ccc 100644 --- a/app/Services/Cartables/Mission/RequestPortalService.php +++ b/app/Services/Cartables/Mission/RequestPortalService.php @@ -18,7 +18,7 @@ class RequestPortalService $fields = [ 'id', 'user_id', 'username', 'state_name', 'province_name', 'edare_shahri_name', 'description', 'requested_machines', 'type', 'start_date', - 'end_date', 'request_date', 'end_point', + 'end_date', 'request_date', 'end_point', 'area' ]; $query = Mission::query(); diff --git a/database/migrations/2025_05_17_103927_create_missions_table.php b/database/migrations/2025_05_17_103927_create_missions_table.php index 25a60291..88109e2b 100644 --- a/database/migrations/2025_05_17_103927_create_missions_table.php +++ b/database/migrations/2025_05_17_103927_create_missions_table.php @@ -31,6 +31,7 @@ return new class extends Migration $table->dateTime('request_date'); $table->text('description')->nullable(); $table->string('end_point'); + $table->geometry('area'); $table->timestamps(); }); }