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' , 'package' , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' , 'address' , 'phone_number' ); } , ] ); $user = auth( 'api' )->user(); if ( $user->hasRole( 'User' ) ) { $Items = $Items->whereHas( 'user' , function ( $query ) use ( $user ) { $query->where( 'medical_center_id' , $user->medical_center_id ); } )->where( "status" , 1 ); } elseif ( $user->hasRole( 'Supervisor' ) ) { $Items = $Items->whereHas( 'user' , function ( $query ) use ( $user ) { $query->where( 'medical_center_id' , $user->medical_center_id ); } ); } $Items = $Items->orderByDesc( 'id' )->paginate( 10 ); return ItemResource::collection( $Items ); } public function myItems( Request $request ) { $Items = Item::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 ); } ) ->with( [ 'user' , 'package' , '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' ) ) { $Items = $Items->where( "user_id" , $user->id ); } elseif ( $user->hasRole( 'Supervisor' ) ) { $Items = $Items->whereHas( 'user' , function ( $query ) use ( $user ) { $query->where( 'medical_center_id' , $user->medical_center_id ); } ); } $Items = $Items->orderByDesc( 'id' )->paginate( 10 ); return ItemResource::collection( $Items ); } public function getItems() { $Items = Item::where( "status" , 1 ) ->where( "package_id" , null ) ->orderByDesc( 'id' ) ->get(); return ItemResource::collection( $Items ); } public function show( Item $Item ) { $Item->load( [ 'user' , 'creator' , 'package' , '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 ItemResource::make( $Item ); } public function store( StoreItemRequest $request ) { $Item = Item::create( [ '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 , 'creator_id' => auth( 'api' )->user()->id ] ); MediaHelper::moveMediaTo( $Item ); return MessageResponse::success( trans( 'messages.success' ) ); } public function edit( Item $Item ) { return ItemResource::make( $Item ); } public function update( StoreItemRequest $request , Item $Item ) { $Item->update( [ 'name' => $request->name , 'size' => $request->size , 'unique_id' => $request->unique_id , 'specific' => $request->specific , 'note' => $request->note , 'udi' => $request->udi ] ); MediaHelper::moveMediaTo( $Item ); 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' ) ); } $Item->delete(); return MessageResponse::success( trans( 'messages.success' ) ); } 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 ItemResource::make( $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 ItemResource::make( $Item ); } }