json($operatorService->cartableIndex($request)); } public function cartableReport(Request $request, OperatorService $operatorService): BinaryFileResponse { $name = 'گزارش از کارتابل عملیات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; $data = $operatorService->cartableIndex($request); return Excel::download(new OperatorCartableReport($data['data']), $name); } /** * @throws Throwable */ public function complaintsIndex(Request $request, OperatorService $operatorService): JsonResponse { return response()->json($operatorService->complaintsIndex($request)); } /** * @throws Throwable */ public function complaintsReport(Request $request, OperatorService $operatorService): BinaryFileResponse { $name = 'گزارش از رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx'; $data = $operatorService->complaintsIndex($request); return Excel::download(new ComplaintsReport($data['data']), $name); } public function show(RoadObserved $roadObserved): JsonResponse { return $this->successResponse($roadObserved->only(['rms_status', 'rms_description', 'image_before', 'image_after', 'rms_start_latlng'])); } public function register(RegisterRequest $request, RoadObserved $roadObserved, NikarayanService $nikarayanService): JsonResponse { $roadObservedData = [ 'status' => 0, 'status_fa' => 'در حال بررسی', 'rms_status' => $request->rms_status ?? $roadObserved->rms_status, 'rms_description' => $request->rms_description ?? $roadObserved->rms_description, ]; $roadObservedHistoryData = [ 'user_id' => auth()->user()->id, 'previous_rms_status' => $roadObserved->rms_status, 'previous_rms_start_latlng' => $roadObserved->rms_start_latlng, 'previous_rms_end_latlng' => $roadObserved->rms_end_latlng, 'previous_rms_description' => $roadObserved->rms_description, 'new_files' => json_encode([]) ]; $files_path = []; if ($request->rms_status == 1) { $roadObserved->files()->where('path', 'like', '%_image_before%')->delete(); $roadObserved->files()->where('path', 'like', '%_image_after%')->delete(); $image_before = FileFacade::save($request->image_before, "road_observeds/{$roadObserved->id}"); $image_after = FileFacade::save($request->image_after, "road_observeds/{$roadObserved->id}"); $files_path[0]['path'] = $image_before; $files_path[1]['path'] = $image_after; $now_date_time = Carbon::now(); $roadObservedData['image_after'] = $image_after; $roadObservedData['image_before'] = $image_before; $roadObservedData['rms_start_latlng'] = explode(',', $request->start_point); $roadObservedData['updated_at_fa'] = Verta::instance($now_date_time); $roadObservedData['rms_last_activity_fa'] = Verta::instance($now_date_time); $roadObservedData['rms_last_activity'] = $now_date_time; $roadObservedHistoryData['new_files'] = json_encode($files_path); } DB::transaction(function () use ($roadObserved, $roadObservedHistoryData, $roadObservedData, $nikarayanService, $files_path) { $roadObserved->problemHistories()->create($roadObservedHistoryData); $roadObserved->update($roadObservedData); auth()->user()->addActivityComplete(1142); $nikarayanService->updateRoadObservedInfoByNikarayan($roadObserved, $files_path); }); return $this->successResponse(); } public function modifyRegistration(ModifyRegisterationRequest $request, RoadObserved $roadObserved, NikarayanService $nikarayanService): JsonResponse { $roadObservedData = [ 'status' => 0, 'status_fa' => 'در حال بررسی', 'rms_status' => $request->rms_status ?? $roadObserved->rms_status, 'rms_description' => $request->rms_description ?? $roadObserved->rms_description, ]; $roadObservedHistoryData = [ 'user_id' => auth()->user()->id, 'previous_rms_status' => $roadObserved->rms_status, 'previous_rms_start_latlng' => $roadObserved->rms_start_latlng, 'previous_rms_end_latlng' => $roadObserved->rms_end_latlng, 'previous_rms_description' => $roadObserved->rms_description, 'new_files' => json_encode([]) ]; if ($request->rms_status == 1) { $files_path = []; $roadObserved->files()->where('path', 'like', '%_image_before%')->delete(); $roadObserved->files()->where('path', 'like', '%_image_after%')->delete(); if ($request->has('image_before')) { if ($roadObserved->image_before) { FileFacade::delete($roadObserved->image_before, true); } $image_before = FileFacade::save($request->image_before, "road_observeds/{$roadObserved->id}"); $roadObservedData['image_before'] = $image_before; $files_path[0]['path'] = $image_before; } if ($request->has('image_after')) { if ($roadObserved->image_after) { FileFacade::delete($roadObserved->image_after, true); } $image_after = FileFacade::save($request->image_after, "road_observeds/{$roadObserved->id}"); $roadObservedData['image_after'] = $image_after; $files_path[1]['path'] = $image_after; } $files = json_encode($files_path); $now_date_time = Carbon::now(); $roadObservedData['rms_start_latlng'] = explode(',', $request->start_point); $roadObservedData['updated_at_fa'] = Verta::instance($now_date_time); $roadObservedData['rms_last_activity_fa'] = Verta::instance($now_date_time); $roadObservedData['rms_last_activity'] = $now_date_time; $roadObservedHistoryData['new_files'] = $files; } DB::transaction(function () use ($roadObserved, $roadObservedHistoryData, $roadObservedData, $files_path, $nikarayanService) { $roadObserved->problemHistories()->create($roadObservedHistoryData); $roadObserved->update($roadObservedData); auth()->user()->addActivityComplete(1142); $nikarayanService->updateRoadObservedInfoByNikarayan($roadObserved, $files_path); }); return $this->successResponse(); } public function refer(ReferRequest $request, RoadObserved $roadObserved): JsonResponse { $province = Province::query()->find($request->province_id); DB::transaction(function () use ($roadObserved, $request, $province) { RoadObservationHistory::query()->create([ 'id' => $roadObserved->id, 'user_id' => auth()->user()->id, 'action' => 'refer', 'description' => $request->refer_description, 'from_edareh' => $roadObserved->edarate_shahri_id, 'to_edareh' => $request->edarate_shahri_id, 'from_province' => $roadObserved->province_id, 'to_province' => $province->id ]); $roadObserved->update([ 'edarate_shahri_id' => $request->edarate_shahri_id, 'province_id' => $province->id, 'province_fa' => $province->name_fa, ]); auth()->user()->addActivityComplete(1037); }); return $this->successResponse(); } public function referList(RoadObserved $roadObserved): JsonResponse { $data = RoadObservationHistory::query() ->where('id', '=', $roadObserved->id) ->where('action', '=', 'refer') ->orderBy('created_at', 'desc') ->get([ 'created_at', 'description', 'from_edareh', 'to_edareh', 'from_province', 'to_province', 'user_id' ]); foreach ($data as $key => $value) { $data[$key]->from_edareh = EdarateShahri::query()->find($value->from_edareh)->name_fa ?? null; $data[$key]->to_edareh = EdarateShahri::query()->find($value->to_edareh)->name_fa ?? null; $data[$key]->from_province = Province::query()->find($value->from_province)->name_fa ?? null; $data[$key]->to_province = Province::query()->find($value->to_province)->name_fa ?? null; $user = User::query()->find($value->user_id); $data[$key]->user = $user->first_name . ' ' . $user->last_name; } return $this->successResponse($data); } }