user(); $Cycles = Cycle::when( $user->cant( 'showAll' , Cycle::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( 'cycle_id' ) && $request->cycle_id != '' , function ( $query ) use ( $request ) { $query->where( 'id' , $request->cycle_id ); } ) ->when( $request->has( 'sterilizer_id' ) && $request->sterilizer_id != '' , function ( $query ) use ( $request ) { $query->where( 'sterilizer_id' , $request->sterilizer_id ); } ) ->when( $request->has( 'date' ) && $request->date != '' , function ( $query ) use ( $request ) { $query->where( 'date' , $request->date ); } ) ->when( $request->has( 'cycle_number' ) && $request->cycle_number != '' , function ( $query ) use ( $request ) { $query->where( 'cycle_number' , $request->cycle_number ); } ) ->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' ); } , 'labels' , 'labels.package' => function ( $query ) { $query->select( 'id' , 'name' ); } , ] )->orderByDesc( 'id' )->paginate( 10 ); return MessageResponse::data( $Cycles ); } public function create() {} public function show( Cycle $Cycle ) { $Cycle->load( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'medical_center_id' ); } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); } , 'labels' , 'labels.package' , 'labels.package.items' ] ); return MessageResponse::data( $Cycle ); } public function store( StoreCycleRequest $request ) { $UniqueID = substr( base_convert( sha1( uniqid( mt_rand() ) ) , 16 , 36 ) , 0 , 10 ); $CycleData = [ 'unique_id' => $UniqueID , 'date' => $request->date , 'sterilizer_id' => $request->sterilizer_id , 'cycle_number' => $request->cycle_number , 'note' => $request->note , 'user_id' => auth( 'api' )->user()->id , 'verified' => 'NotVerified' , ]; $CycleObj = Cycle::create( $CycleData ); $Labels = []; $count = 1; foreach ( $request->labels as $key => $label ) { if ( array_key_exists( $label[ 'id' ] , $Labels ) ) { $preCount = $Labels[ $label[ 'id' ] ]; $Labels[ $label[ 'id' ] ] = $preCount + 1; } else { $Labels[ $label[ 'id' ] ] = $count; } } foreach ( $Labels as $Label => $Count ) { $CycleObj->labels()->attach( array( $Label ) , [ 'count' => $Count ] ); } // $CycleObj->labels()->attach($request->labels); return MessageResponse::success( trans( 'messages.success' ) ); } public function edit( Cycle $Cycle ) { $Labels = []; $Cycle->load( 'labels' ); foreach ( $Cycle->labels as $label ) { for ( $i = 0 ; $i < $label->pivot->count ; $i++ ) { $Labels[] = (object) array( 'id' => $label->id , 'name' => $label->name ); } } unset( $Cycle->labels ); $Cycle->labels = $Labels; return MessageResponse::data( $Cycle ); } public function update( StoreCycleRequest $request , Cycle $Cycle ) { $Cycle->update( $request->except( [ 'labels' ] ) ); $Labels = []; $count = 1; foreach ( $request->labels as $key => $label ) { if ( array_key_exists( $label[ 'id' ] , $Labels ) ) { $preCount = $Labels[ $label[ 'id' ] ]; $Labels[ $label[ 'id' ] ] = $preCount + 1; } else { $Labels[ $label[ 'id' ] ] = $count; } } $Cycle->labels()->detach(); foreach ( $Labels as $Label => $Count ) { $Cycle->labels()->attach( array( $Label ) , [ 'count' => $Count ] ); } return MessageResponse::success( trans( 'messages.success' ) ); } public function destroy( Cycle $Cycle ) { if ( auth( 'api' )->user()->cant( 'delete' , $Cycle ) ) { return MessageResponse::error( trans( 'messages.access_denied' ) ); } if ( count( $Cycle->labels ) ) { $Cycle->labels()->detach(); } $Cycle->delete(); return MessageResponse::success( trans( 'messages.success' ) ); } public function verifyCycle( Cycle $Cycle ) { if ( auth( 'api' )->user()->cant( 'verifyCycle' , $Cycle ) ) { return MessageResponse::error( trans( 'You dont have permission' ) ); } if ( $Cycle->verified == 'Verified' ) { $Cycle->verified = 'NotVerified'; } else { $Cycle->verified = 'Verified'; } $Cycle->save(); $Cycle = $Cycle->load( 'user' ); return MessageResponse::success( trans( 'messages.success' ) , null , $Cycle ); } public function showCycle( Cycle $Cycle ) { $Cycle->load( [ 'user' => function ( $query ) { $query->select( 'id' , 'name' , 'medical_center_id' ); } , 'user.medical_center' => function ( $query ) { $query->select( 'id' , 'name' ); } , 'labels' , 'labels.package' , 'labels.package.items' ] ); return MessageResponse::data( $Cycle ); } }