has( 'name' ) && $request->name != '' , function ( $query ) use ( $request ) { $query->where( 'name' , 'LIKE' , '%' . $request->name . '%' ); } ) ->when( $request->has( 'package_id' ) && $request->package_id != '' , function ( $query ) use ( $request ) { $query->where( 'id' , $request->package_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' , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' , 'address' , 'phone_number' ); } , ] ); $user = auth( 'api' )->user(); if ( $user->hasRole( 'User' ) or $user->hasRole( 'Supervisor' ) ) { $Packages = $Packages->whereHas( 'user' , function ( $query ) use ( $user ) { $query->where( 'medical_center_id' , $user->medical_center_id ); } ); } $Packages = $Packages->orderByDesc( 'id' )->paginate( 10 ); return PackageResource::collection( $Packages ); } public function myPackages( Request $request ) { $Packages = Package::when( $request->has( 'name' ) && $request->name != '' , function ( $query ) use ( $request ) { $query->where( 'name' , 'LIKE' , '%' . $request->name . '%' ); } ) ->when( $request->has( 'package_id' ) && $request->package_id != '' , function ( $query ) use ( $request ) { $query->where( 'id' , $request->package_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' , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' , 'address' , 'phone_number' ); } , "transfers" => function ( $query ) { $query->with( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'cell_number' ); } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' , 'address' , 'phone_number' ); } ] ); } ] ); $user = auth( 'api' )->user(); if ( $user->hasRole( 'User' ) ) { $Packages = $Packages->where( "user_id" , $user->id ); } elseif ( $user->hasRole( 'Supervisor' ) ) { $Packages = $Packages->whereHas( 'user' , function ( $query ) use ( $user ) { $query->where( 'medical_center_id' , $user->medical_center_id ); } ); } $Packages = $Packages->orderByDesc( 'id' )->get(); return PackageResource::collection( $Packages ); } public function getPackages() { $Packages = Package::orderByDesc( 'id' )->get(); return PackageResource::collection( $Packages ); } public function show( Package $Package ) { $Package->load( [ 'user' , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' , 'address' , 'phone_number' ); } , "transfers" => function ( $query ) { $query->with( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'cell_number' ); } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' , 'address' , 'phone_number' ); } ] ); } ] ); return PackageResource::make( $Package ); } public function store( StorePackageRequest $request ) { $PackageData = [ 'name' => $request->name , 'note' => $request->note , 'verified' => 'NotVerified' , 'user_id' => auth( 'api' )->user()->id , 'creator_id' => auth( 'api' )->user()->id ]; $Package = Package::create( $PackageData ); foreach ( $request->items as $itemId ) { $item = Item::where( "id" , $itemId )->first(); if ( $item ) { $item->update( [ "package_id" => $Package->id ] ); } } return MessageResponse::success( trans( 'messages.success' ) ); } public function edit( Package $Package ) { $Package->load( 'items' ); return PackageResource::make( $Package ); } public function update( StorePackageRequest $request , Package $Package ) { $Package->update( $request->except( [ 'items' ] ) ); foreach ( $request->items as $itemId ) { $item = Item::where( "id" , $itemId )->first(); if ( $item ) { $item->update( [ "package_id" => $Package->id ] ); } } return MessageResponse::success( trans( 'messages.success' ) ); } public function destroy( Package $Package ) { if ( auth( 'api' )->user()->cant( 'delete' , $Package ) ) { return MessageResponse::error( trans( 'messages.access_denied' ) ); } if ( count( $Package->items ) ) { foreach ( $Package->items as $itemId ) { $item = Item::where( "id" , $itemId )->first(); if ( $item ) { $item->update( [ "package_id" => null ] ); } } } if ( count( $Package->labels ) ) { $Package->labels()->delete(); } $Package->delete(); return MessageResponse::success( trans( 'messages.success' ) ); } }