diff --git a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php index 480daeef..87994122 100644 --- a/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php +++ b/app/Http/Controllers/V3/Dashboard/Accident/AccidentReceiptController.php @@ -314,6 +314,8 @@ class AccidentReceiptController extends Controller $response = json_decode($paymentService->callPaymentStatusBillApi(explode("/", $accident->bill_code)[0])); + throw_if(!$response->isPayed, new ProhibitedAction('پرداخت انجام نشده است')); + if ($response->isPayed) { $accident->update([ 'status' => AccidentStates::PARDAKHT_FACTOR->value, diff --git a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php index da24affc..a6d5d89b 100644 --- a/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php +++ b/app/Http/Controllers/V3/Dashboard/Harim/PanjareVahedController.php @@ -12,6 +12,7 @@ use App\Http\Traits\ApiResponse; use App\Models\City; use App\Models\Harim; use Illuminate\Database\Eloquent\ModelNotFoundException; +use Illuminate\Support\Facades\DB; class PanjareVahedController extends Controller { @@ -19,11 +20,15 @@ class PanjareVahedController extends Controller public function receiveNewRequest(ReceiveNewRequest $request) { + $wkt = 'POLYGON((' . implode(',', array_map(fn($c) => "{$c[0]} {$c[1]}", $request->primary_area['coordinates'])) . '))'; + $result = DB::selectOne("SELECT ST_AsText(ST_PointOnSurface(ST_GeomFromText(?, 4326))) AS point", [$wkt]); + preg_match('/POINT\(([^ ]+) ([^ ]+)\)/', $result->point, $matches); + try { $city = City::query() ->whereRaw("ST_Contains( geometry, - ST_SRID(ST_GeomFromText('POINT($request->lng $request->lat)'), 4326))" + ST_GeomFromText('POINT($matches[2] $matches[1])', 4326))" ) ->firstOrFail(['id', 'name_fa', 'province_id']); } @@ -31,8 +36,7 @@ class PanjareVahedController extends Controller $city = City::query() ->orderByRaw("ST_Distance( geometry, - ST_SRID(ST_GeomFromText('POINT($request->lng $request->lat)'), 4326) - ) ASC" + ST_GeomFromText('POINT($matches[2] $matches[1])', 4326)) ASC" ) ->first(['id', 'name_fa', 'province_id']); } @@ -42,7 +46,7 @@ class PanjareVahedController extends Controller Harim::query()->create([ 'state_id' => $state, 'state_name' => HarimStates::name($state), - 'panjare_vahed_id' => $request->panjare_vahed_id, + 'panjare_vahed_id' => $request->request_id, 'national_id' => $request->national_id, 'phone_number' => $request->phone_number, 'request_date' => $request->request_date, @@ -58,8 +62,6 @@ class PanjareVahedController extends Controller 'response_options' => json_encode($request->response_options), 'isic' => $request->isic, 'primary_area' => json_encode($request->primary_area), - 'lat' => $request->lat, - 'lng' => $request->lng, ]); return $this->successResponse([ @@ -73,11 +75,11 @@ class PanjareVahedController extends Controller $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; Harim::query() - ->firstWhere('panjare_vahed_id', '=', $request->panjare_vahed_id) + ->firstWhere('panjare_vahed_id', '=', $request->request_id) ->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), - 'access_road' => $request->access_road, + 'access_road' => json_encode($request->access_road), ]); return $this->successResponse(); @@ -89,7 +91,7 @@ class PanjareVahedController extends Controller $state = HarimStates::MOKHALEFAT_BA_DASTGAH->value; Harim::query() - ->firstWhere('panjare_vahed_id', '=', $request->panjare_vahed_id) + ->firstWhere('panjare_vahed_id', '=', $request->request_id) ->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), @@ -104,12 +106,12 @@ class PanjareVahedController extends Controller $state = HarimStates::TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value; Harim::query() - ->firstWhere('panjare_vahed_id', '=', $request->panjare_vahed_id) + ->firstWhere('panjare_vahed_id', '=', $request->request_id) ->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), - 'final_area' => $request->final_area, - 'final_plan' => $request->final_plan, + 'final_area' => json_encode($request->final_area), + 'final_plan' => json_encode($request->final_plan), ]); return $this->successResponse(); diff --git a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php index 954b73d8..74ec9be3 100644 --- a/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php +++ b/app/Http/Controllers/V3/Dashboard/Mission/RequestPortalController.php @@ -160,6 +160,11 @@ class RequestPortalController extends Controller $mission->rahdaran()->sync($request->rahdaran); $mission->machines()->attach($request->machines); $mission->rahdaran()->attach($request->driver, ['is_driver' => true]); + + if ($mission->category_id == 2) { + $rpc = new OperatorController(); + $rpc->store($mission); + } }); 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 b6ef6414..9fe00ca1 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetAccessRoadRequest.php @@ -23,8 +23,10 @@ class GetAccessRoadRequest extends FormRequest public function rules(): array { return [ - 'panjare_vahed_id' => 'required', - 'access_road' => 'required', + 'request_id' => 'required|integer|exists:harims,panjare_vahed_id', + 'access_road' => 'required|array', + 'access_road.type' => 'required|string', + 'access_road.coordinates' => 'required|array', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php index f51f5477..99608478 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetFinalPolygonsRequest.php @@ -23,9 +23,13 @@ class GetFinalPolygonsRequest extends FormRequest public function rules(): array { return [ - 'panjare_vahed_id' => 'required', - 'final_area' => 'required', - 'final_plan' => 'required', + 'request_id' => 'required|integer|exists:harims,panjare_vahed_id', + 'final_area' => 'required|array', + 'final_area.type' => 'required|string', + 'final_area.coordinates' => 'required|array', + 'final_plan' => 'required|array', + 'final_plan.type' => 'required|string', + 'final_plan.coordinates' => 'required|array', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php index 4167306b..84020d49 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/GetRejectRequest.php @@ -23,7 +23,7 @@ class GetRejectRequest extends FormRequest public function rules(): array { return [ - 'panjare_vahed_id' => 'required', + 'request_id' => 'required|integer|exists:harims,panjare_vahed_id', ]; } } diff --git a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php index 0319c932..15ab2d27 100644 --- a/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php +++ b/app/Http/Requests/V3/Dashboard/Harim/PanjareVahed/ReceiveNewRequest.php @@ -23,19 +23,19 @@ class ReceiveNewRequest extends FormRequest public function rules(): array { return [ - 'panjare_vahed_id' => 'required|integer|unique:harims,panjare_vahed_id', + 'request_id' => 'required|integer|unique:harims,panjare_vahed_id', 'national_id' => 'required', 'phone_number' => 'required', 'request_date' => 'required', - 'requested_organization' => 'required', + 'requested_organization' => 'required|string', 'plan_group' => 'required', 'plan_title' => 'required', 'worksheet_id' => 'required', 'response_options' => 'required', 'isic' => 'required', - 'primary_area' => 'required', - 'lat' => 'required', - 'lng' => 'required', + 'primary_area' => 'required|array', + 'primary_area.type' => 'required|string', + 'primary_area.coordinates' => 'required|array', ]; } } diff --git a/app/Models/RoadItemsProject.php b/app/Models/RoadItemsProject.php index 6617115f..dca3cc5a 100644 --- a/app/Models/RoadItemsProject.php +++ b/app/Models/RoadItemsProject.php @@ -55,6 +55,7 @@ class RoadItemsProject extends Model 'activity_date', 'activity_time', 'activity_date_time', + 'mission_id' ]; /** diff --git a/app/Services/Cartables/RoadItem/OperatorService.php b/app/Services/Cartables/RoadItem/OperatorService.php index 80fe27db..7efce347 100644 --- a/app/Services/Cartables/RoadItem/OperatorService.php +++ b/app/Services/Cartables/RoadItem/OperatorService.php @@ -11,7 +11,6 @@ class OperatorService public function dataTable(Request $request, $loadRelations = false) { $query = RoadItemsProject::query() - ->with('mission:id') ->where('is_new', '=', 1) ->where('user_id', '=', auth()->user()->id); diff --git a/app/Services/Cartables/RoadItem/SupervisorService.php b/app/Services/Cartables/RoadItem/SupervisorService.php index d0d79ef4..d3e76d8b 100644 --- a/app/Services/Cartables/RoadItem/SupervisorService.php +++ b/app/Services/Cartables/RoadItem/SupervisorService.php @@ -20,13 +20,11 @@ class SupervisorService if ($user->hasPermissionTo('show-road-item-supervise-cartable')) { $query = RoadItemsProject::query() - ->with('mission:id') ->where('is_new', 1); } elseif ($user->hasPermissionTo('show-road-item-supervise-cartable-province')) { throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); $query = RoadItemsProject::query() - ->with('mission:id') ->where('is_new', 1) ->where('province_id', auth()->user()->province_id); } diff --git a/app/Services/Cartables/RoadPatrol/OperatorService.php b/app/Services/Cartables/RoadPatrol/OperatorService.php index f3e57810..76428fe1 100644 --- a/app/Services/Cartables/RoadPatrol/OperatorService.php +++ b/app/Services/Cartables/RoadPatrol/OperatorService.php @@ -12,7 +12,6 @@ class OperatorService public function dataTable(Request $request, $loadRelations = false) { $query = RoadPatrol::query() - ->with('mission:id') ->where('operator_id', '=', auth()->user()->id); return DataTableFacade::run( diff --git a/app/Services/Cartables/RoadPatrol/SupervisorService.php b/app/Services/Cartables/RoadPatrol/SupervisorService.php index 7d91838f..26c13d92 100644 --- a/app/Services/Cartables/RoadPatrol/SupervisorService.php +++ b/app/Services/Cartables/RoadPatrol/SupervisorService.php @@ -20,16 +20,14 @@ class SupervisorService $query = null; if ($user->hasPermissionTo('show-road-patrol-supervise-cartable')) { - $query = RoadPatrol::query() - ->with('mission:id'); + $query = RoadPatrol::query(); } elseif ($user->hasPermissionTo('show-road-patrol-supervise-cartable-province')) { throw_if(is_null($user->province_id), new ProhibitedAction('استانی برای شما در سامانه ثبت نشده است!')); $query = RoadPatrol::query() - ->where('province_id', '=', $user->province_id) - ->with('mission:id'); + ->where('province_id', '=', $user->province_id); } return DataTableFacade::run(