refactor road observation

This commit is contained in:
2025-05-31 10:54:16 +03:30
parent 968d185292
commit 2d671e79b9
8 changed files with 292 additions and 203 deletions

View File

@@ -1,28 +0,0 @@
<?php
namespace App\Http\Controllers\V3\Dashboard\Reports;
use App\Exports\V2\RoadObservation\ReportComplaintsExport;
use App\Http\Controllers\Controller;
use App\Models\RoadObserved;
use App\Services\Cartables\RoadObservationTableService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class RoadObservationReportController extends Controller
{
public function index(Request $request, RoadObservationTableService $roadObservationTableService): JsonResponse
{
$data = $roadObservationTableService->reportIndex($request);
return response()->json($data['data']);
}
public function excelReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse
{
$name = 'گزارش رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $roadObservationTableService->reportIndex($request);
return Excel::download(new ReportComplaintsExport($data), $name);
}
}

View File

@@ -1,91 +1,54 @@
<?php
namespace App\Http\Controllers\V3\Dashboard;
namespace App\Http\Controllers\V3\Dashboard\RoadObservation;
use App\Exports\V3\RoadObservation\ComplaintsReport;
use App\Exports\V3\RoadObservation\OperatorCartableReport;
use App\Exports\V3\RoadObservation\SupervisorCartableReport;
use App\Facades\DataTable\DataTableFacade;
use App\Facades\File\FileFacade;
use App\Facades\Sms\Sms;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\RoadObservation\ModifyRegisterationRequest;
use App\Http\Requests\V3\RoadObservation\ReferRequest;
use App\Http\Requests\V3\RoadObservation\RegisterRequest;
use App\Http\Requests\V3\RoadObservation\RestoreRequest;
use App\Http\Requests\V3\RoadObservation\VerifyBySupervisorRequest;
use App\Http\Traits\ApiResponse;
use App\Models\EdarateShahri;
use App\Models\Province;
use App\Models\RoadObservationHistory;
use App\Models\RoadObserved;
use App\Models\User;
use App\Services\Cartables\RoadObservation\OperatorService;
use App\Services\NikarayanService;
use Carbon\Carbon;
use Hekmatinasser\Verta\Verta;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use App\Services\Cartables\RoadObservationTableService;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;
use SoapFault;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class RoadObservationController extends Controller
class OperatorController
{
use ApiResponse;
public function supervisorIndex(Request $request,RoadObservationTableService $roadObservationTableService ): JsonResponse
public function cartableIndex(Request $request, OperatorService $operatorService): JsonResponse
{
return response()->json($roadObservationTableService->supervisorCartableIndex($request));
return response()->json($operatorService->cartableIndex($request));
}
public function verifyBySupervisor(VerifyBySupervisorRequest $request, RoadObserved $roadObserved): JsonResponse
{
$statusFa = $request->verify == 1 ? 'تایید شده' : 'عدم تایید';
$roadObserved->update([
'status' => $request->verify,
'status_fa' => $statusFa,
'supervisor_id' => auth()->user()->id,
'supervisor_name' => auth()->user()->name,
'supervisor_description' => $request->description,
'supervising_time' => now(),
]);
auth()->user()->addActivityComplete(1138);
return $this->successResponse();
}
public function supervisorCartableReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse
{
$name = 'گزارش از کارتابل ارزیابی واکنش سریع '. verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $roadObservationTableService->supervisorCartableIndex($request);
return Excel::download(new SupervisorCartableReport($data['data']), $name);
}
public function operatorIndex(Request $request, RoadObservationTableService $roadObservationTableService): JsonResponse
{
return response()->json($roadObservationTableService->operatorCartableIndex($request));
}
public function operatorCartableReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse
public function cartableReport(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$name = 'گزارش از کارتابل عملیات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $roadObservationTableService->operatorCartableIndex($request);
$data = $operatorService->cartableIndex($request);
return Excel::download(new OperatorCartableReport($data['data']), $name);
}
public function complaintsIndex(Request $request, RoadObservationTableService $roadObservationTableService): JsonResponse
public function complaintsIndex(Request $request, OperatorService $operatorService): JsonResponse
{
return response()->json($roadObservationTableService->complaintsIndex($request));
return response()->json($operatorService->complaintsIndex($request));
}
public function complaintsReport(Request $request, RoadObservationTableService $roadObservationTableService): BinaryFileResponse
public function complaintsReport(Request $request, OperatorService $operatorService): BinaryFileResponse
{
$name = 'گزارش از رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $roadObservationTableService->complaintsIndex($request);
$data = $operatorService->complaintsIndex($request);
return Excel::download(new ComplaintsReport($data['data']), $name);
}
@@ -144,7 +107,6 @@ class RoadObservationController extends Controller
auth()->user()->addActivityComplete(1142);
$nikarayanService->updateRoadObservedInfoByNikarayan($request, $roadObserved, json_encode($roadObservedHistoryData['new_files']));
});
return $this->successResponse();
@@ -262,49 +224,4 @@ class RoadObservationController extends Controller
}
return $this->successResponse($data);
}
public function restore(RestoreRequest $request, RoadObserved $roadObserved): JsonResponse
{
if ($roadObserved->image_before) {
FileFacade::delete($roadObserved->image_before);
}
if ($roadObserved->image_after) {
FileFacade::delete($roadObserved->image_after);
}
$roadObserved->update([
'image_before' => null,
'image_after' => null,
'rms_last_activity' => null,
'rms_last_activity_fa' => null,
'updated_at_fa' => null,
'updated_at' => null,
'rms_status' => 0,
'status' => null,
'status_fa' => null,
]);
RoadObservationHistory::query()->create([
'id' => $roadObserved->id,
'user_id' => auth()->user()->id,
'action' => 'restore',
'description' => $request->restore_description,
]);
auth()->user()->addActivityComplete(1141);
return $this->successResponse();
}
public function map(Request $request): JsonResponse
{
return response()->json(DataTableFacade::run(
RoadObserved::query(),
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: ['id', 'lat', 'lng', 'status']
));
}
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Http\Controllers\V3\Dashboard\RoadObservation;
use App\Exports\V2\RoadObservation\ReportComplaintsExport;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Traits\ApiResponse;
use App\Models\RoadObserved;
use App\Services\Cartables\RoadObservation\ReportService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class ReportController
{
use ApiResponse;
public function index(Request $request, ReportService $reportService): JsonResponse
{
$data = $reportService->index($request);
return response()->json($data['data']);
}
public function excel(Request $request, ReportService $reportService): BinaryFileResponse
{
$name = 'گزارش رسیدگی به شکایات واکنش سریع ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $reportService->index($request);
return Excel::download(new ReportComplaintsExport($data), $name);
}
public function map(Request $request): JsonResponse
{
return response()->json(DataTableFacade::run(
RoadObserved::query(),
$request,
allowedFilters: ['*'],
allowedSortings: ['*'],
allowedSelects: ['id', 'lat', 'lng', 'status']
));
}
}

View File

@@ -0,0 +1,87 @@
<?php
namespace App\Http\Controllers\V3\Dashboard\RoadObservation;
use App\Exports\V3\RoadObservation\SupervisorCartableReport;
use App\Facades\File\FileFacade;
use App\Http\Requests\V3\RoadObservation\RestoreRequest;
use App\Http\Requests\V3\RoadObservation\VerifyBySupervisorRequest;
use App\Http\Traits\ApiResponse;
use App\Models\RoadObservationHistory;
use App\Models\RoadObserved;
use App\Services\Cartables\RoadObservation\SupervisorService;
use App\Services\Cartables\RoadObservationTableService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class SupervisorController
{
use ApiResponse;
public function index(Request $request, SupervisorService $supervisorService): JsonResponse
{
return response()->json($supervisorService->index($request));
}
public function verify(VerifyBySupervisorRequest $request, RoadObserved $roadObserved): JsonResponse
{
$statusFa = $request->verify == 1 ? 'تایید شده' : 'عدم تایید';
$roadObserved->update([
'status' => $request->verify,
'status_fa' => $statusFa,
'supervisor_id' => auth()->user()->id,
'supervisor_name' => auth()->user()->name,
'supervisor_description' => $request->description,
'supervising_time' => now(),
]);
auth()->user()->addActivityComplete(1138);
return $this->successResponse();
}
public function report(Request $request, SupervisorService $supervisorService): BinaryFileResponse
{
$name = 'گزارش از کارتابل ارزیابی واکنش سریع '. verta()->now()->format('Y-m-d H:i') . '.xlsx';
$data = $supervisorService->index($request);
return Excel::download(new SupervisorCartableReport($data['data']), $name);
}
public function restore(RestoreRequest $request, RoadObserved $roadObserved): JsonResponse
{
if ($roadObserved->image_before) {
FileFacade::delete($roadObserved->image_before);
}
if ($roadObserved->image_after) {
FileFacade::delete($roadObserved->image_after);
}
$roadObserved->update([
'image_before' => null,
'image_after' => null,
'rms_last_activity' => null,
'rms_last_activity_fa' => null,
'updated_at_fa' => null,
'updated_at' => null,
'rms_status' => 0,
'status' => null,
'status_fa' => null,
]);
RoadObservationHistory::query()->create([
'id' => $roadObserved->id,
'user_id' => auth()->user()->id,
'action' => 'restore',
'description' => $request->restore_description,
]);
auth()->user()->addActivityComplete(1141);
return $this->successResponse();
}
}