From 1b6870d7f4c2a2b1cf58c9ea39d2280b71f2f351 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Mon, 9 Jun 2025 15:45:51 +0330 Subject: [PATCH 1/3] create area for mission and asaynd geometry --- .../V3/Dashboard/Mission/RequestPortalController.php | 12 +++++++++++- .../V3/Mission/RequestPortal/StoreRequest.php | 1 + .../V3/Mission/RequestPortal/UpdateRequest.php | 1 + .../Cartables/Mission/RequestPortalService.php | 2 +- .../2025_05_17_103927_create_missions_table.php | 1 + 5 files changed, 15 insertions(+), 2 deletions(-) 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(); }); } From b3f22d2fdf13dbea373ba031b8a34ba3e9335e7d Mon Sep 17 00:00:00 2001 From: joddyabott Date: Tue, 10 Jun 2025 09:40:32 +0330 Subject: [PATCH 2/3] create new culum for mission --- ...025_05_17_103927_create_missions_table.php | 1 - ...6_10_093806_add_area_to_missions_table.php | 29 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2025_06_10_093806_add_area_to_missions_table.php 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 88109e2b..25a60291 100644 --- a/database/migrations/2025_05_17_103927_create_missions_table.php +++ b/database/migrations/2025_05_17_103927_create_missions_table.php @@ -31,7 +31,6 @@ return new class extends Migration $table->dateTime('request_date'); $table->text('description')->nullable(); $table->string('end_point'); - $table->geometry('area'); $table->timestamps(); }); } diff --git a/database/migrations/2025_06_10_093806_add_area_to_missions_table.php b/database/migrations/2025_06_10_093806_add_area_to_missions_table.php new file mode 100644 index 00000000..5676e4cf --- /dev/null +++ b/database/migrations/2025_06_10_093806_add_area_to_missions_table.php @@ -0,0 +1,29 @@ +geometry('area'); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('missions', function (Blueprint $table) { + $table->dropColumn('area'); + }); + } +}; From a8613436256650bb8f5e1c848ec0e7b461a5fddf Mon Sep 17 00:00:00 2001 From: joddyabott Date: Wed, 11 Jun 2025 10:30:56 +0330 Subject: [PATCH 3/3] chenge and debug mission code --- app/Enums/MissionTypes.php | 19 +++++++++++++++++++ .../Mission/RequestPortalController.php | 13 +++---------- .../V3/Mission/RequestPortal/StoreRequest.php | 3 +-- .../Mission/RequestPortal/UpdateRequest.php | 3 +-- app/Models/Mission.php | 9 ++++++++- ...6_10_093806_add_area_to_missions_table.php | 2 +- 6 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 app/Enums/MissionTypes.php diff --git a/app/Enums/MissionTypes.php b/app/Enums/MissionTypes.php new file mode 100644 index 00000000..e19472cf --- /dev/null +++ b/app/Enums/MissionTypes.php @@ -0,0 +1,19 @@ + 'ساعتی', + 2 => 'روزانه', + ]; + + return $mapArray[$state]; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index 75715a62..5eb3b136 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\V3\Dashboard\Mission; use App\Enums\MissionStates; +use App\Enums\MissionTypes; use App\Http\Controllers\Controller; use App\Http\Requests\V3\Mission\RequestPortal\StoreRequest; use App\Http\Requests\V3\Mission\RequestPortal\UpdateRequest; @@ -27,10 +28,6 @@ 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, @@ -48,7 +45,7 @@ class RequestPortalController extends Controller 'request_date' => now(), 'description' => $request->description, 'end_point' => $request->end_point, - 'area' => json_encode($geojson) + 'area' => json_encode($request->area), ]); $mission->rahdaran()->attach($request->rahdaran); @@ -66,10 +63,6 @@ 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), @@ -80,7 +73,7 @@ class RequestPortalController extends Controller 'request_date' => $request->request_date, 'description' => $request->description, 'end_point' => $request->end_point, - 'area' => json_encode($geojson) + 'area' => json_encode($request->area), ]); $mission->rahdaran()->sync($request->rahdaran); diff --git a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php index 6f646530..98dcda6b 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/StoreRequest.php @@ -25,10 +25,9 @@ class StoreRequest extends FormRequest 'rahdaran' => 'required|array', 'rahdaran.*' => 'exists:rahdaran,id', 'requested_machines' => 'required|array', - 'type' => 'required|string|max:50', + 'type' => 'required|in:1,2', 'start_date' => 'required|date', 'end_date' => 'required|date', - '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 790e5e48..4135ffa8 100644 --- a/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php +++ b/app/Http/Requests/V3/Mission/RequestPortal/UpdateRequest.php @@ -26,10 +26,9 @@ class UpdateRequest extends FormRequest 'rahdaran' => 'required|array', 'rahdaran.*' => 'exists:rahdaran,id', 'requested_machines' => 'required|array', - 'type' => 'required|string|max:50', + 'type' => 'required|in:1,2', 'start_date' => 'required|date', 'end_date' => 'required|date', - 'request_date' => 'required|date', 'description' => 'string', 'end_point' => 'required|string', 'area' => 'required|array', diff --git a/app/Models/Mission.php b/app/Models/Mission.php index 3f169f16..c2dcb959 100644 --- a/app/Models/Mission.php +++ b/app/Models/Mission.php @@ -17,7 +17,14 @@ class Mission extends Model protected function requestedMachines(): Attribute { return Attribute::make( - get: fn ($value) => json_decode($value) + get: fn($value) => json_decode($value) + ); + } + + protected function area(): Attribute + { + return Attribute::make( + get: fn($value) => json_decode($value) ); } diff --git a/database/migrations/2025_06_10_093806_add_area_to_missions_table.php b/database/migrations/2025_06_10_093806_add_area_to_missions_table.php index 5676e4cf..cf421da3 100644 --- a/database/migrations/2025_06_10_093806_add_area_to_missions_table.php +++ b/database/migrations/2025_06_10_093806_add_area_to_missions_table.php @@ -12,7 +12,7 @@ return new class extends Migration public function up(): void { Schema::table('missions', function (Blueprint $table) { - $table->geometry('area'); + $table->json('area'); }); }