make reports datatable

This commit is contained in:
amirghasempoor
2026-07-14 14:38:17 +03:30
parent d58ca6b685
commit 961e4c40c9
4 changed files with 28 additions and 38 deletions

View File

@@ -23,7 +23,7 @@ class ReportMachineController extends Controller
public function machineDetailsReport(Request $request, ReportMachineService $reportMachineService,int $machine_id): JsonResponse public function machineDetailsReport(Request $request, ReportMachineService $reportMachineService,int $machine_id): JsonResponse
{ {
$data = $reportMachineService->dataTableMachinesActivity($request,$machine_id); $data = $reportMachineService->machineDetailActivity($request,$machine_id);
return response()->json($data); return response()->json($data);
} }
@@ -34,7 +34,7 @@ class ReportMachineController extends Controller
*/ */
public function machineDetailsReportExcel(Request $request, int $machine_id, ReportMachineService $reportMachineService): BinaryFileResponse public function machineDetailsReportExcel(Request $request, int $machine_id, ReportMachineService $reportMachineService): BinaryFileResponse
{ {
$data = $reportMachineService->dataTableMachinesActivity($request,$machine_id); $data = $reportMachineService->machineDetailActivity($request,$machine_id);
$name = 'گزارش عملکرد ماشین آلات'.verta()->now()->format('Y-m-d H-i').'.xlsx'; $name = 'گزارش عملکرد ماشین آلات'.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new machineDetailsReport($data['data']), $name); return Excel::download(new machineDetailsReport($data['data']), $name);
@@ -42,10 +42,7 @@ class ReportMachineController extends Controller
public function machinesActivity(Request $request, ReportMachineService $reportMachineService): JsonResponse public function machinesActivity(Request $request, ReportMachineService $reportMachineService): JsonResponse
{ {
return $this->successResponse([ return response()->json($reportMachineService->machinesActivity($request));
'activities' => $reportMachineService->machinesActivity($request),
// 'provinces' => Province::all(['id', 'name_fa']),
]);
} }
/** /**
@@ -62,9 +59,9 @@ class ReportMachineController extends Controller
} }
public function machineTypeDetailsReport(Request $request, ReportMachineService $reportMachineService,int $car_type): JsonResponse public function machineTypeDetailsReport(Request $request, ReportMachineService $reportMachineService): JsonResponse
{ {
$data = $reportMachineService->dataTableMachineTypesActivity($request,$car_type); $data = $reportMachineService->machineTypeDetailActivity($request);
return response()->json($data); return response()->json($data);
} }
@@ -73,9 +70,9 @@ class ReportMachineController extends Controller
* @throws Exception * @throws Exception
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
*/ */
public function machineTypeDetailsReportExcel(Request $request, ReportMachineService $reportMachineService,int $car_type): BinaryFileResponse public function machineTypeDetailsReportExcel(Request $request, ReportMachineService $reportMachineService): BinaryFileResponse
{ {
$data = $reportMachineService->dataTableMachineTypesActivity($request,$car_type); $data = $reportMachineService->machineTypeDetailActivity($request);
$name = 'گزارش عملکردیک نوع ماشین'.verta()->now()->format('Y-m-d H-i').'.xlsx'; $name = 'گزارش عملکردیک نوع ماشین'.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download(new machineTypeDetailsReport($data['data']), $name); return Excel::download(new machineTypeDetailsReport($data['data']), $name);
@@ -83,10 +80,7 @@ class ReportMachineController extends Controller
public function machineTypesActivity(Request $request, ReportMachineService $reportMachineService): JsonResponse public function machineTypesActivity(Request $request, ReportMachineService $reportMachineService): JsonResponse
{ {
return $this->successResponse([ return response()->json($reportMachineService->machineTypesActivity($request));
'activities' => $reportMachineService->machineTypesActivity($request),
// 'provinces' => Province::all(['id', 'name_fa']),
]);
} }
/** /**
@@ -101,9 +95,9 @@ class ReportMachineController extends Controller
return Excel::download(new machineTypeReport($data), $name); return Excel::download(new machineTypeReport($data), $name);
} }
public function machineDriverDetailsReport(Request $request, int $driver_id, ReportMachineService $reportMachineService): JsonResponse public function machineDriverDetailsReport(Request $request, ReportMachineService $reportMachineService): JsonResponse
{ {
$data = $reportMachineService->dataTableMachineDriversActivity($request,$driver_id); $data = $reportMachineService->machineDriverDetailActivity($request);
return response()->json($data); return response()->json($data);
} }
@@ -112,9 +106,9 @@ class ReportMachineController extends Controller
* @throws Exception * @throws Exception
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
*/ */
public function machineDriverDetailsReportExcel(Request $request, int $driver_id, ReportMachineService $reportMachineService): BinaryFileResponse public function machineDriverDetailsReportExcel(Request $request, ReportMachineService $reportMachineService): BinaryFileResponse
{ {
$data = $reportMachineService->dataTableMachineDriversActivity($request,$driver_id); $data = $reportMachineService->machineDriverDetailActivity($request);
$name = 'گزارش عملکرد راننده'.verta()->now()->format('Y-m-d H-i').'.xlsx'; $name = 'گزارش عملکرد راننده'.verta()->now()->format('Y-m-d H-i').'.xlsx';
return Excel::download( return Excel::download(
@@ -123,10 +117,7 @@ class ReportMachineController extends Controller
public function machineDriversActivity(Request $request, ReportMachineService $reportMachineService): JsonResponse public function machineDriversActivity(Request $request, ReportMachineService $reportMachineService): JsonResponse
{ {
return $this->successResponse([ return response()->json($reportMachineService->machineDriversActivity($request));
'activities' => $reportMachineService->machineDriversActivity($request),
// 'provinces' => Province::all(['id', 'name_fa']),
]);
} }
/** /**

View File

@@ -9,7 +9,7 @@ use Illuminate\Http\Request;
class ReportMachineService class ReportMachineService
{ {
public function dataTableMachinesActivity(Request $request, int $machine_id): array public function machineDetailActivity(Request $request, int $machine_id): array
{ {
return DataTableFacade::run( return DataTableFacade::run(
Mission::query()->where('machine_id', '=', $machine_id), Mission::query()->where('machine_id', '=', $machine_id),
@@ -38,10 +38,9 @@ class ReportMachineService
COUNT(*) as missions, COUNT(*) as missions,
SUM(missions.end_km - missions.km) as func' SUM(missions.end_km - missions.km) as func'
) )
->groupBy('missions.machine_id') ->groupBy('missions.machine_id');
->orderByRaw('COUNT(*) DESC');
$fields = ['machine_code','machine_id','cm.car_name','missions', 'func']; $fields = ['machine_code','machine_id','cm.car_name','missions', 'func', 'start_time', 'finish_time', 'province_id'];
return DataTableFacade::run( return DataTableFacade::run(
$query, $query,
$request, $request,
@@ -50,9 +49,9 @@ class ReportMachineService
); );
} }
public function dataTableMachineTypesActivity(Request $request,int $car_type): array public function machineTypeDetailActivity(Request $request): array
{ {
$machineIds = CMMSMachine::query()->where('car_type', '=', $car_type)->pluck('machine_id'); $machineIds = CMMSMachine::query()->where('car_type', '=', $request->query('car_type'))->pluck('id');
return DataTableFacade::run( return DataTableFacade::run(
Mission::query()->whereIn('machine_id', $machineIds), Mission::query()->whereIn('machine_id', $machineIds),
$request, $request,
@@ -81,7 +80,7 @@ class ReportMachineService
->groupBy('cm.car_type') ->groupBy('cm.car_type')
->orderByRaw('COUNT(*) DESC'); ->orderByRaw('COUNT(*) DESC');
$fields = ['car_type','missions', 'func']; $fields = ['car_type','missions', 'func', 'start_time', 'finish_time', 'province_id'];
return DataTableFacade::run( return DataTableFacade::run(
$query, $query,
@@ -91,10 +90,10 @@ class ReportMachineService
); );
} }
public function dataTableMachineDriversActivity(Request $request,int $driver_id): array public function machineDriverDetailActivity(Request $request): array
{ {
return DataTableFacade::run( return DataTableFacade::run(
Mission::query()->where('driver_id', '=', $driver_id), Mission::query()->where('driver_id', '=', $request->query('driver_id')),
$request, $request,
allowedFilters: ['*'], allowedFilters: ['*'],
allowedSortings: ['*'], allowedSortings: ['*'],
@@ -121,7 +120,7 @@ class ReportMachineService
->groupBy('driver_id') ->groupBy('driver_id')
->orderByRaw('COUNT(*) DESC'); ->orderByRaw('COUNT(*) DESC');
$fields = ['driver_id','driver_name','missions', 'func']; $fields = ['driver_id','driver_name','missions', 'func', 'start_time', 'finish_time', 'province_id'];
return DataTableFacade::run( return DataTableFacade::run(
$query, $query,

View File

@@ -12,7 +12,7 @@ return new class extends Migration
public function up(): void public function up(): void
{ {
Schema::table('cmms_machines', function (Blueprint $table) { Schema::table('cmms_machines', function (Blueprint $table) {
$table->integer('distance_mission')->nullable(); $table->integer('max_mission_duration')->nullable();
}); });
} }
@@ -22,7 +22,7 @@ return new class extends Migration
public function down(): void public function down(): void
{ {
Schema::table('cmms_machines', function (Blueprint $table) { Schema::table('cmms_machines', function (Blueprint $table) {
$table->dropColumn('distance_mission'); $table->dropColumn('max_mission_duration');
}); });
} }
}; };

View File

@@ -575,10 +575,10 @@ Route::prefix('missions')
Route::get('/machine_drivers_activity_excel', 'machineDriversActivityExcel')->name('machineDriversActivityExcel'); Route::get('/machine_drivers_activity_excel', 'machineDriversActivityExcel')->name('machineDriversActivityExcel');
Route::get('/machine_details_report/{machine_id}', 'machineDetailsReport')->name('machineDetailsReport'); Route::get('/machine_details_report/{machine_id}', 'machineDetailsReport')->name('machineDetailsReport');
Route::get('/machine_details_report_excel/{machine_id}', 'machineDetailsReportExcel')->name('machineDetailsReportExcel'); Route::get('/machine_details_report_excel/{machine_id}', 'machineDetailsReportExcel')->name('machineDetailsReportExcel');
Route::get('/machine_type_details_report/{car_type}', 'machineTypeDetailsReport')->name('machineTypeDetailsReport'); Route::get('/machine_type_details_report', 'machineTypeDetailsReport')->name('machineTypeDetailsReport');
Route::get('/machine_type_details_report_excel/{car_type}', 'machineTypeDetailsReportExcel')->name('machineTypeDetailsReportExcel'); Route::get('/machine_type_details_report_excel', 'machineTypeDetailsReportExcel')->name('machineTypeDetailsReportExcel');
Route::get('/machine_driver_details_report/{driver_id}', 'machineDriverDetailsReport')->name('machineDriverDetailsReport'); Route::get('/machine_driver_details_report', 'machineDriverDetailsReport')->name('machineDriverDetailsReport');
Route::get('/machine_driver_details_report_excel/{driver_id}', 'machineDriverDetailsReportExcel')->name('machineDriverDetailsReportExcel'); Route::get('/machine_driver_details_report_excel', 'machineDriverDetailsReportExcel')->name('machineDriverDetailsReportExcel');
}); });
}); });