seperate the logic into service reports

This commit is contained in:
2025-02-04 09:34:09 +03:30
parent d7990dd985
commit 967d0e6db8
13 changed files with 591 additions and 460 deletions

View File

@@ -2,9 +2,8 @@
namespace App\Http\Controllers\V3\Dashboard;
use App\Exports\V2\RoadItems\OperatorCartableExport;
use App\Exports\V2\RoadItems\SupervisorCartableExport;
use App\Facades\DataTable\DataTableFacade;
use App\Exports\V3\RoadItemsProjects\OperatorCartableReport;
use App\Exports\V3\RoadItemsProjects\SupervisorCartableReport;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\RoadItemsProject\StoreRequest;
use App\Http\Requests\V3\RoadItemsProject\UpdateRequest;
@@ -14,6 +13,7 @@ use App\Models\EdarateShahri;
use App\Models\InfoItem;
use App\Models\RoadItemsProject;
use App\Services\NominatimService;
use App\Services\Reports\RoadItemReportService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate;
@@ -28,39 +28,9 @@ class RoadItemsProjectController extends Controller
/**
* Display a listing of the resource.
*/
public function supervisorIndex(Request $request): JsonResponse
public function supervisorIndex(Request $request, RoadItemReportService $roadItemReportService): JsonResponse
{
$columns = array(
'id', 'user_id', 'start_lat', 'start_lng', 'end_lat',
'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', 'sub_item',
'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa',
'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time',
'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time','cmmsMachines.machine_code', 'rahdaran.code',
);
$allowedFilters = $columns;
$allowedSortings = $columns;
$user = auth()->user();
$query = null;
if ($user->hasPermissionTo('show-road-item-supervise-cartable')) {
$query = RoadItemsProject::query()->where('is_new', 1)->with(['files', 'rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number']);
}
elseif ($user->hasPermissionTo('show-road-item-supervise-cartable-province')) {
if (is_null($user->province_id)) {
return $this->errorResponse('استانی برای شما در سامانه ثبت نشده است!');
}
$query = RoadItemsProject::query()->where('is_new', 1)
->with(['files', 'rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])->where('province_id', auth()->user()->province_id);
}
$data = DataTableFacade::run(
$query,
$request,
allowedFilters: $allowedFilters,
allowedSortings: $allowedSortings);
$data = $roadItemReportService->supervisorCartableReport($request);
foreach ($data['data'] as $road_item) {
if (Gate::allows('gate-supervise-road-item', $road_item)) {
@@ -126,36 +96,16 @@ class RoadItemsProjectController extends Controller
}
public function supervisorCartableReport(Request $request): BinaryFileResponse
public function supervisorCartableReport(Request $request, RoadItemReportService $roadItemReportService): BinaryFileResponse
{
$name = 'گزارش از کارتابل ارزیابی فعالیت روزانه ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
return Excel::download(new SupervisorCartableExport($request->id, $request->item, $request->status,
$request->fromDate, $request->toDate, $request->province_id, $request->edarat_id), $name);
$data = $roadItemReportService->supervisorCartableReport($request);
return Excel::download(new SupervisorCartableReport($data), $name);
}
public function operatorIndex(Request $request): JsonResponse
public function operatorIndex(Request $request, RoadItemReportService $roadItemReportService): JsonResponse
{
$columns = array(
'id', 'user_id', 'start_lat', 'start_lng', 'end_lat',
'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', 'sub_item',
'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa',
'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time',
'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time', 'cmmsMachines.machine_code', 'rahdaran.code',
);
$allowedFilters = $columns;
$allowedSortings = $columns;
$query = RoadItemsProject::with(['files', 'rahdaran:id,name,code', 'cmmsMachines:id,machine_code,car_name,plak_number'])
->where('is_new', 1)
->where('user_id', auth()->user()->id);
$data = DataTableFacade::run(
$query,
$request,
allowedFilters: $allowedFilters,
allowedSortings: $allowedSortings);
$data = $roadItemReportService->operatorCartableReport($request);
return response()->json($data);
}
@@ -314,12 +264,10 @@ class RoadItemsProjectController extends Controller
return $this->successResponse();
}
public function operatorCartableReport(Request $request): BinaryFileResponse
public function operatorCartableReport(Request $request, RoadItemReportService $roadItemReportService): BinaryFileResponse
{
$name = 'گزارش از کارتابل عملیات فعالیت روزانه ' . verta()->now()->format('Y-m-d H:i') . '.xlsx';
return Excel::download(
new OperatorCartableExport($request->id, $request->item, $request->status, $request->fromDate, $request->toDate),
$name
);
$data = $roadItemReportService->operatorCartableReport($request);
return Excel::download(new OperatorCartableReport($data), $name);
}
}