diff --git a/app/Http/Controllers/ExportController.php b/app/Http/Controllers/ExportController.php new file mode 100644 index 00000000..45c8ff5d --- /dev/null +++ b/app/Http/Controllers/ExportController.php @@ -0,0 +1,115 @@ +user(); + $Items = Item::when( $user->cant( 'showAll' , Item::class ) , function ( $query ) use ( $user ) { + if ( $user->hasRole( 'Supervisor' ) or $user->hasRole( 'User' ) ) { + $query->whereHas( 'user' , function ( $query ) use ( $user ) { + $query->where( 'medical_center_id' , $user->medical_center_id ); + } ); + } + } ) + ->with( [ 'user' => function ( $query ) { + $query->select( 'id' , 'name' , 'medical_center_id' ); + } , + 'user.medical_center' => function ( $query ) { + $query->select( 'id' , 'name' ); + } + ] ) + ->orderByDesc( 'id' ) + ->get(); + + $Items = $Items->map( function ( $item , $key ) { + + $row[] = $item[ "id" ]; + $row[] = $item[ "name" ]; + $row[] = $item[ "size" ]; + $row[] = $item[ "udi" ]; + $row[] = $item[ "note" ]; + $row[] = $item[ "specific" ]; + $row[] = $item[ "status" ]; + $row[] = $item[ "repair" ]; + $row[] = $item[ "user" ] != null ? $item[ "user" ][ "id" ] : null; + $row[] = $item[ "user" ] != null ? $item[ "user" ][ "name" ] : null; + $row[] = $item[ "medical_center" ] != null ? $item[ "medical_center" ][ "id" ] : null; + $row[] = $item[ "medical_center" ] != null ? $item[ "medical_center" ][ "name" ] : null; + + return $row; + } ); + $Items->prepend( [ + 'شناسه آیتم' , + 'نام' , + 'سایز' , + 'udi' , + 'توضیحات' , + 'specific' , + 'وضعیت' , + 'تعمیرات' , + 'شناسه کاربر' , + 'نام کاربر' , + 'شناسه بیمارستان' , + 'نام بیمارستان' + ] ); + $export = new ExportCollection( $Items ); + return Excel::download( $export , 'items.xlsx' , null , [ \Maatwebsite\Excel\Excel::XLSX ] ); + } + + public function packages() + { + $user = auth( 'api' )->user(); + $Packages = Package::when( $user->cant( 'showAll' , Package::class ) , function ( $query ) use ( $user ) { + if ( $user->hasRole( 'Supervisor' ) or $user->hasRole( 'User' ) ) { + $query->whereHas( 'user' , function ( $query ) use ( $user ) { + $query->where( 'medical_center_id' , $user->medical_center_id ); + } ); + } + } ) + ->with( [ 'user' => function ( $query ) { + $query->select( 'id' , 'name' , 'medical_center_id' ); + } , + 'user.medical_center' => function ( $query ) { + $query->select( 'id' , 'name' ); + } ] ) + ->orderByDesc( 'id' ) + ->get(); + $Packages = $Packages->map( function ( $item , $key ) { + + $row[] = $item[ "id" ]; + $row[] = $item[ "name" ]; + $row[] = $item[ "bar_code" ]; + $row[] = $item[ "qr_code" ]; + $row[] = $item[ "note" ]; + $row[] = $item[ "verified" ]; + $row[] = $item[ "user" ] != null ? $item[ "user" ][ "id" ] : null; + $row[] = $item[ "user" ] != null ? $item[ "user" ][ "name" ] : null; + $row[] = $item[ "medical_center" ] != null ? $item[ "medical_center" ][ "id" ] : null; + $row[] = $item[ "medical_center" ] != null ? $item[ "medical_center" ][ "name" ] : null; + + return $row; + } ); + $Packages->prepend( [ + 'شناسه آیتم' , + 'نام' , + 'بارکد' , + 'qr code' , + 'توضیحات' , + 'وضعیت' , + 'شناسه کاربر' , + 'نام کاربر' , + 'شناسه بیمارستان' , + 'نام بیمارستان' + ] ); + $export = new ExportCollection( $Packages ); + return Excel::download( $export , 'packages.xlsx' , null , [ \Maatwebsite\Excel\Excel::XLSX ] ); + } +} diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index 4302016b..35e11d0e 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -14,12 +14,8 @@ class ItemController extends Controller { $user = auth( 'api' )->user(); - if ( $user->hasRole( 'User' ) ) { - return \MessageResponse::error( 'You dont have access to this section!' ); - } - $Items = Item::when( $user->cant( 'showAll' , Item::class ) , function ( $query ) use ( $user ) { - if ( $user->hasRole( 'Supervisor' ) ) { + if ( $user->hasRole( 'Supervisor' ) or $user->hasRole( 'User' ) ) { $query->whereHas( 'user' , function ( $query ) use ( $user ) { $query->where( 'medical_center_id' , $user->medical_center_id ); } ); @@ -51,7 +47,7 @@ class ItemController extends Controller 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); } - ] ) + ] ) ->orderByDesc( 'id' ) ->paginate( 10 ); return \MessageResponse::data( $Items ); @@ -69,13 +65,13 @@ class ItemController extends Controller } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); - }, + } , "transfers" => function ( $query ) { $query->with( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'cell_number' , 'medical_center_id' ); } ] ); } - ] ); + ] ); $FilesPath = []; if ( count( $Item->files ) ) { @@ -154,15 +150,10 @@ class ItemController extends Controller public function getItems() { - $user = auth( 'api' )->user(); - if ( $user->hasRole( 'User' ) ) { - return \MessageResponse::data( [] ); - } - $Items = Item::when( $user->cant( 'showAll' , Item::class ) , function ( $query ) use ( $user ) { - if ( $user->hasRole( 'Supervisor' ) ) { + if ( $user->hasRole( 'Supervisor' ) or $user->hasRole( 'User' ) ) { $query->whereHas( 'user' , function ( $query ) use ( $user ) { $query->where( 'medical_center_id' , $user->medical_center_id ); } ); @@ -173,7 +164,7 @@ class ItemController extends Controller } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); - }, + } , "transfers" => function ( $query ) { $query->with( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'cell_number' , 'medical_center_id' ); @@ -192,7 +183,7 @@ class ItemController extends Controller } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); - }, + } , "transfers" => function ( $query ) { $query->with( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'cell_number' , 'medical_center_id' ); diff --git a/app/Http/Controllers/PackageController.php b/app/Http/Controllers/PackageController.php index 756adbc7..65266a08 100644 --- a/app/Http/Controllers/PackageController.php +++ b/app/Http/Controllers/PackageController.php @@ -12,12 +12,8 @@ class PackageController extends Controller { $user = auth( 'api' )->user(); - if ( $user->hasRole( 'User' ) ) { - return \MessageResponse::error( 'You dont have access to this section!' ); - } - $Packages = Package::when( $user->cant( 'showAll' , Package::class ) , function ( $query ) use ( $user ) { - if ( $user->hasRole( 'Supervisor' ) ) { + if ( $user->hasRole( 'Supervisor' ) or $user->hasRole( 'User' ) ) { $query->whereHas( 'user' , function ( $query ) use ( $user ) { $query->where( 'medical_center_id' , $user->medical_center_id ); } ); @@ -165,9 +161,8 @@ class PackageController extends Controller { $user = auth( 'api' )->user(); - $Packages = Package:: - when( $user->cant( 'showAll' , Package::class ) , function ( $query ) use ( $user ) { - if ( $user->hasRole( 'Supervisor|User' ) ) { + $Packages = Package::when( $user->cant( 'showAll' , Package::class ) , function ( $query ) use ( $user ) { + if ( $user->hasRole( 'Supervisor' ) or $user->hasRole( 'User' ) ) { $query->whereHas( 'user' , function ( $query ) use ( $user ) { $query->where( 'medical_center_id' , $user->medical_center_id ); } ); diff --git a/app/Http/Requests/StorePackageRequest.php b/app/Http/Requests/StorePackageRequest.php index beff3517..64294deb 100644 --- a/app/Http/Requests/StorePackageRequest.php +++ b/app/Http/Requests/StorePackageRequest.php @@ -22,7 +22,7 @@ class StorePackageRequest extends FormRequest switch ($this->method()) { case 'POST': { return [ - 'name' => 'required|max:250|unique:packages', + 'name' => 'required|max:250', 'note' => 'nullable', 'items' => 'required', ]; @@ -32,7 +32,7 @@ class StorePackageRequest extends FormRequest case 'PATCH': { $Package = $this->route('Package'); return [ - 'name' => 'required|max:250|unique:packages,name,'.$Package->id, + 'name' => 'required|max:250', 'note' => 'nullable', 'items' => 'required', ]; diff --git a/app/Services/ExportCollection.php b/app/Services/ExportCollection.php new file mode 100644 index 00000000..55427069 --- /dev/null +++ b/app/Services/ExportCollection.php @@ -0,0 +1,22 @@ +data = $data; + } + + public function collection() + { + return $this->data; + } + +} diff --git a/routes/api.php b/routes/api.php index 7a640da3..6d1c46b6 100644 --- a/routes/api.php +++ b/routes/api.php @@ -84,7 +84,11 @@ Route::middleware('auth:api')->group(function () { Route::post('transfer-packages/{Package}', 'TransferPackageController@transfer'); Route::post('transfer-packages/ChangeStatus/{Transfer}', 'TransferPackageController@changeStatus'); +//export + Route::get('export/items', 'ExportController@items'); + Route::get('export/packages', 'ExportController@packages'); }); + Route::post('/BarCode/{Code}/{Type?}', 'BarCodeController@generateBarcode'); Route::post('Package/Barcode/{Code}', 'BarCodeController@generatePackageBarcode'); Route::post('Package/QRCode/{Package}', 'BarCodeController@generatePackageQRCode');