user(); $Labels = Label::when( $user->cant( 'showAll' , Label::class ) , function ( $query ) use ( $user ) { if ( $user->hasRole( 'Supervisor' ) ) { $query->whereHas( 'user' , function ( $query ) use ( $user ) { $query->where( 'medical_center_id' , $user->medical_center_id ); } ); } else { $query->where( 'user_id' , $user->id ); } } ) ->when( $request->has( 'sterilizer_id' ) && $request->sterilizer_id != '' , function ( $query ) use ( $request ) { $query->where( 'sterilizer_id' , $request->sterilizer_id ); } ) ->when( $request->has( 'cycle_number' ) && $request->cycle_number != '' , function ( $query ) use ( $request ) { $query->where( 'cycle_number' , $request->cycle_number ); } ) ->when( $request->has( 'lot_number' ) && $request->lot_number != '' , function ( $query ) use ( $request ) { $query->where( 'lot_number' , $request->lot_number ); } ) ->when( $request->has( 'label_id' ) && $request->label_id != '' , function ( $query ) use ( $request ) { $query->where( 'id' , $request->label_id ); } ) ->when( $request->has( 'medical_center_id' ) && $request->medical_center_id != '' && $request->medical_center_id != 'undefined' , function ( $query ) use ( $request ) { $query->whereHas( 'user' , function ( $query ) use ( $request ) { $query->where( 'medical_center_id' , $request->medical_center_id ); } ); } ) ->with( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'medical_center_id' ); } , 'package' => function ( $query ) { $query->select( 'id' , 'name' ); } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); } , ] )->orderByDesc( 'id' )->paginate( 10 ); return MessageResponse::data( $Labels ); } public function create() {} public function show( Label $Label ) { $Label->load( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'medical_center_id' ); } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); } , 'package' , 'package.items' ] ); return MessageResponse::data( $Label ); } public function store( StoreLabelRequest $request ) { $LabelData = [ 'sterile_date' => $request->sterile_date , 'expire_date' => $request->expire_date , 'sterilizer_id' => $request->sterilizer_id , 'cycle_number' => $request->cycle_number , 'lot_number' => $request->lot_number , 'user_id' => auth( 'api' )->user()->id , 'package_id' => $request->package_id ]; $Label = Label::create( $LabelData ); $Label->load( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'medical_center_id' ); } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); } , 'package' , 'package.items' ] ); return MessageResponse::success( trans( 'messages.success' ) , null , $Label ); } public function edit( Label $Label ) { $Label->load( 'package' ); return MessageResponse::data( $Label ); } public function update( StoreLabelRequest $request , Label $Label ) { $Label->update( $request->all() ); $Label->load( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'medical_center_id' ); } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); } , 'package' , 'package.items' ] ); return MessageResponse::success( trans( 'messages.success' ) , null , $Label ); } public function destroy( Label $Label ) { if ( auth( 'api' )->user()->cant( 'delete' , $Label ) ) { return MessageResponse::error( trans( 'messages.access_denied' ) ); } if ( count( $Label->cycles ) ) { $Label->cycles()->detach(); } $Label->delete(); return MessageResponse::success( trans( 'messages.success' ) ); } public function getLabels() { $user = auth( 'api' )->user(); $Labels = Label::when( $user->cant( 'showAll' , Label::class ) , function ( $query ) use ( $user ) { if ( $user->hasRole( 'Supervisor|User' ) ) { $query->whereHas( 'user' , function ( $query ) use ( $user ) { $query->where( 'medical_center_id' , $user->medical_center_id ); } ); } } )->get(); return MessageResponse::data( $Labels ); } public function showLabel( Label $Label ) { $Label->load( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'medical_center_id' ); } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); } , 'package' , 'package.items' ] ); return MessageResponse::data( $Label ); } }