data,'aes-256-cbc',$key,false, $iv); $decodedString = json_decode($decrypted); $decodedArray = json_decode($decodedString, true); $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_GeomFromText('POINT($matches[1] $matches[2])', 4326))" ) ->firstOrFail(['id', 'name_fa', 'province_id']); } catch (ModelNotFoundException $exception) { $city = City::query() ->orderByRaw("ST_Distance( geometry, ST_GeomFromText('POINT($matches[1] $matches[2])', 4326)) ASC" ) ->first(['id', 'name_fa', 'province_id']); } $state = HarimStates::BARESI_EDARE_SHAHRESTAN->value; $harim = Harim::query()->firstOrCreate( [ 'panjare_vahed_id' => $request->request_id ], [ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'panjare_vahed_id' => $request->request_id, 'national_id' => $request->national_id, 'phone_number' => $request->phone_number, 'request_date' => $request->request_date, 'province_id' => $city->province_id, 'province_name' => $city->province()->first()->name_fa, 'city_id' => $city->id, 'city_name' => $city->name_fa, 'edareh_shahri_id' => $city->edarateShahri()->first()->id, 'requested_organization' => $request->requested_organization, 'plan_group' => $request->plan_group, 'plan_title' => $request->plan_title, 'worksheet_id' => $request->worksheet, 'response_options' => json_encode($request->response_options), 'isic' => $request->isic, 'primary_area' => json_encode($request->primary_area), 'data' => $decodedString, 'token' => $decodedArray['token'], ]); return response()->json([ 'id' => $harim->id, 'city' => $city->edarateShahri()->first()->name_fa, 'province' => $city->province()->first()->name_fa, 'statusCode' => 200, 'message' => 'successful', ]); } public function getAccessRoad(GetAccessRoadRequest $request): JsonResponse { $state = HarimStates::BARESI_FILE_APLODE_SHODE_TAVASOTE_DAFTAR_HARIM->value; $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'access_road' => json_encode($request->access_road), 'data' => $request->data['data'], 'token' => $request->data['token'], ]); return response()->json([ 'request_id' => $request->request_id, 'id' => $harim->id, 'statusCode' => 200, 'message' => 'successful', ]); } public function getRejectRequest(GetRejectRequest $request): JsonResponse { $state = HarimStates::MOKHALEFAT_BA_DASTGAH->value; $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'data' => $request->data['data'], 'token' => $request->data['token'], ]); return response()->json([ 'request_id' => $request->request_id, 'id' => $harim->id, 'statusCode' => 200, 'message' => 'successful', ]); } public function getFinalPolygons(GetFinalPolygonsRequest $request): JsonResponse { $state = HarimStates::TAEDE_ARSE_VA_AYAN_ERSAL_SHODE_TAVASOT_DAFTAR_HARIM->value; $harim = Harim::query()->firstWhere('panjare_vahed_id', '=', $request->request_id); $harim->update([ 'state_id' => $state, 'state_name' => HarimStates::name($state), 'final_area' => json_encode($request->final_area), 'final_plan' => json_encode($request->final_plan), 'data' => $request->data['data'], 'token' => $request->data['token'], ]); return response()->json([ 'request_id' => $request->request_id, 'id' => $harim->id, 'statusCode' => 200, 'message' => 'successful', ]); } }