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' ) ) { $query->whereHas( 'user' , function ( $query ) use ( $user ) { $query->where( 'medical_center_id' , $user->medical_center_id ); } ); } } ) ->when( $request->has( 'name' ) && $request->name != '' , function ( $query ) use ( $request ) { $query->where( 'name' , 'LIKE' , '%' . $request->name . '%' ); } ) ->when( $request->has( 'udi' ) && $request->udi != '' , function ( $query ) use ( $request ) { $query->where( 'udi' , 'LIKE' , '%' . $request->udi . '%' ); } ) ->when( $request->has( 'size' ) && $request->size != '' , function ( $query ) use ( $request ) { $query->where( 'size' , $request->size ); } ) ->when( $request->has( 'item_id' ) && $request->item_id != '' , function ( $query ) use ( $request ) { $query->where( 'id' , $request->item_id ); } ) ->when( $request->has( 'specific' ) && $request->specific != '' , function ( $query ) use ( $request ) { $query->where( 'specific' , $request->specific ); } ) ->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' ); } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); } ] ) ->orderByDesc( 'id' ) ->paginate( 10 ); return \MessageResponse::data( $Items ); } public function create() { } public function show( Item $Item ) { $Item->load( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'medical_center_id' ); } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); }, "transfers" => function ( $query ) { $query->with( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'medical_center_id' ); } ] ); } ] ); $FilesPath = []; if ( count( $Item->files ) ) { foreach ( $Item->files as $Key => $File ) { $FilesPath[] = $File->path; } $Item[ 'filesPath' ] = $FilesPath; } return \MessageResponse::data( $Item ); } public function store( StoreItemRequest $request ) { $ItemData = [ 'name' => $request->name , 'size' => $request->size , 'unique_id' => $request->unique_id , 'specific' => $request->specific , 'note' => $request->note , 'udi' => $request->udi , 'user_id' => auth( 'api' )->user()->id , ]; $ItemObj = Item::create( $ItemData ); ///////////////////////////////////////////////////////////////////////////Images $Images = Media::whereNull( 'model_id' )->where( 'batch_id' , $request->file_batch_id )->get(); if ( $Images ) { foreach ( $Images as $Image ) { $NewPath = 'media' . '/Items' . '/' . $ItemObj->id . '/' . $Image->file_name; Storage::disk( 'public' )->makeDirectory( 'Items' . '/' . $ItemObj->id ); if ( \File::exists( public_path( $Image->path ) ) ) { \File::move( public_path( $Image->path ) , public_path( $NewPath ) ); } $Image->model_id = $ItemObj->id; $Image->path = $NewPath; $Image->save(); } } ///////////////////////////////////////////////////////////////////////////Images return \MessageResponse::success( trans( 'messages.success' ) ); } public function edit( Item $Item ) { $FilesPath = []; if ( count( $Item->files ) ) { foreach ( $Item->files as $Key => $file ) { $FilesPath[] = $file; } $Item[ 'filesPath' ] = $FilesPath; } else { $Item[ 'filesPath' ] = []; } return \MessageResponse::data( $Item ); } public function update( StoreItemRequest $request , Item $Item ) { $Item->update( $request->all() ); return \MessageResponse::success( trans( 'messages.success' ) ); } public function destroy( Item $Item ) { if ( ! auth( 'api' )->user()->can( 'delete' , $Item ) ) { return \MessageResponse::error( trans( 'messages.access_denied' ) ); } if ( count( $Item->packages ) ) { $Item->packages()->detach(); } $Item->delete(); return \MessageResponse::success( trans( 'messages.success' ) ); } 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' ) ) { $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' ); }, "transfers" => function ( $query ) { $query->with( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'medical_center_id' ); } ] ); } ] ) ->orderByDesc( 'id' ) ->get(); return \MessageResponse::data( $Items ); } public function showItem( Item $Item ) { $Item->load( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'medical_center_id' ); } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); }, "transfers" => function ( $query ) { $query->with( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'medical_center_id' ); } ] ); } ] ); return \MessageResponse::data( $Item ); } public function changeStatus( Item $Item ) { if ( auth( 'api' )->user()->cant( 'changeStatus' , Item::class ) ) { return \MessageResponse::error( trans( 'messages.access_denied' ) ); } $Item->status = ! $Item->status; $Item->save(); return \MessageResponse::data( $Item ); } public function changeRepair( Item $Item ) { if ( auth( 'api' )->user()->cant( 'changeRepair' , Item::class ) ) { return \MessageResponse::error( trans( 'messages.access_denied' ) ); } $Item->repair = ! $Item->repair; $Item->save(); return \MessageResponse::data( $Item ); } }