user(); if ($user->hasRole('User')) { $Packages = app(CycleRepositoryInterface::class)->indexForUser($request, $user); } elseif ($user->hasRole('Supervisor')) { $Packages = app(CycleRepositoryInterface::class)->indexForSupervisor($request, $user); } else { $Packages = app(CycleRepositoryInterface::class)->indexForAdmin($request, $user); } return CycleResource::collection($Packages); } 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 ] ); } event(new CycleSaved($CycleObj)); 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 ] ); } event(new CycleSaved($Cycle)); 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 ); } }