diff --git a/app/Http/Controllers/ExportController.php b/app/Http/Controllers/ExportController.php index daa2ba3c..475a7eb6 100644 --- a/app/Http/Controllers/ExportController.php +++ b/app/Http/Controllers/ExportController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Models\Cycle; use App\Models\Item; use App\Models\Package; use App\Services\ExportCollection; @@ -123,4 +124,52 @@ class ExportController extends Controller $export = new ExportCollection( $Packages ); return Excel::download( $export , 'packages.xlsx' , null , [ \Maatwebsite\Excel\Excel::XLSX ] ); } + + public function cycles() + { + $cycles = Cycle::with([ + 'user' => function ($query) { + $query->select('id', 'name', 'medical_center_id'); + }, + 'user.medical_center' => function ($query) { + $query->select('id', 'name'); + }, + ]); + + $user = auth('api')->user(); + if ($user->hasRole('User') or $user->hasRole('Supervisor')) { + $cycles = $cycles->whereHas('user', function ($query) use ($user) { + $query->where('medical_center_id', $user->medical_center_id); + }); + } + + $cycles = $cycles->orderByDesc('id')->get(); + + $cycles = $cycles->map(function ($item, $key) { + $row[] = $item["id"]; + $row[] = $item["unique_id"]; + $row[] = $item["note"]; + $row[] = $item["sterilizer_id"]; + $row[] = $item["cycle_number"]; + $row[] = $item["user"] != null ? $item["user"]["id"] : null; + $row[] = $item["user"] != null ? $item["user"]["name"] : null; + $row[] = $item['user']['medical_center']['id'] ?? null; + $row[] = $item['user']['medical_center']['name'] ?? null; + + return $row; + }); + $cycles->prepend([ + 'شناسه آیتم', + 'unique_id', + 'یادداشت', + 'sterilizer_id', + 'cycle_number', + 'شناسه کاربر', + 'نام کاربر', + 'شناسه بیمارستان', + 'نام بیمارستان', + ]); + $export = new ExportCollection($cycles); + return Excel::download($export, 'cycles.xlsx', null, [\Maatwebsite\Excel\Excel::XLSX]); + } } diff --git a/routes/api.php b/routes/api.php index 28e266ea..87d31acc 100644 --- a/routes/api.php +++ b/routes/api.php @@ -83,7 +83,7 @@ Route::middleware('auth:api')->group(function () { Route::get('export/items', [ExportController::class, 'items']); Route::get('export/packages', [ExportController::class, 'packages']); - + Route::get('export/cycles', [ExportController::class, 'cycles']); Route::namespace('Media')->group(function () { Route::post('store_media', StoreMedia::class); Route::delete('destroy_media/{media}', DestroyMedia::class);