This commit is contained in:
mahdi purHosseini
2024-02-10 22:21:41 +03:30
parent d7b97357e3
commit 87c4cf428f
4 changed files with 216 additions and 215 deletions
+113 -113
View File
@@ -5,175 +5,175 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Http\Requests\StoreCycleRequest; use App\Http\Requests\StoreCycleRequest;
use App\Cycle; use App\Cycle;
use App\User; use Packages\Messaging\src\Facades\MessageResponse;
class CycleController extends Controller class CycleController extends Controller
{ {
public function index(Request $request) public function index( Request $request )
{ {
$user = auth('api')->user(); $user = auth( 'api' )->user();
$Cycles = Cycle::when($user->cant('showAll', Cycle::class), function($query) use ($user) { $Cycles = Cycle::when( $user->cant( 'showAll' , Cycle::class ) , function ( $query ) use ( $user ) {
if ($user->hasRole('Supervisor')) { if ( $user->hasRole( 'Supervisor' ) ) {
$query->whereHas('user', function($query) use ($user) { $query->whereHas( 'user' , function ( $query ) use ( $user ) {
$query->where('medical_center_id', $user->medical_center_id); $query->where( 'medical_center_id' , $user->medical_center_id );
}); } );
} else {
$query->where( 'user_id' , $user->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('cycle_id') && $request->cycle_id != '', function($query) use($request){ ->when( $request->has( 'sterilizer_id' ) && $request->sterilizer_id != '' , function ( $query ) use ( $request ) {
$query->where('id', $request->cycle_id); $query->where( 'sterilizer_id' , $request->sterilizer_id );
}) } )
->when($request->has('sterilizer_id') && $request->sterilizer_id != '', function($query) use($request){ ->when( $request->has( 'date' ) && $request->date != '' , function ( $query ) use ( $request ) {
$query->where('sterilizer_id', $request->sterilizer_id); $query->where( 'date' , $request->date );
}) } )
->when($request->has('date') && $request->date != '', function($query) use($request){ ->when( $request->has( 'cycle_number' ) && $request->cycle_number != '' , function ( $query ) use ( $request ) {
$query->where('date', $request->date); $query->where( 'cycle_number' , $request->cycle_number );
}) } )
->when($request->has('cycle_number') && $request->cycle_number != '', function($query) use($request){ ->when( $request->has( 'medical_center_id' ) && $request->medical_center_id != '' && $request->medical_center_id != 'undefined' , function ( $query ) use ( $request ) {
$query->where('cycle_number', $request->cycle_number); $query->whereHas( 'user' , function ( $query ) use ( $request ) {
}) $query->where( 'medical_center_id' , $request->medical_center_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' => function ( $query ) {
}); $query->select( 'id' , 'name' , 'medical_center_id' );
}) } ,
->with(['user' => function($query){ 'user.medical_center' => function ( $query ) {
$query->select('id', 'name', 'medical_center_id'); $query->select( 'id' , 'name' );
}, } ,
'user.medical_center' => function($query){ 'labels' ,
$query->select('id', 'name'); 'labels.package' => function ( $query ) {
}, $query->select( 'id' , 'name' );
'labels', } ,
'labels.package' => function($query){ ] )->orderByDesc( 'id' )->paginate( 10 );
$query->select('id', 'name');
},
])->orderByDesc('id')->paginate(10);
return \MessageResponse::data($Cycles); return MessageResponse::data( $Cycles );
} }
public function create() public function create()
{ {}
} public function show( Cycle $Cycle )
public function show(Cycle $Cycle)
{ {
$Cycle->load(['user' => function($query){ $Cycle->load( [ 'user' => function ( $query ) {
$query->select('id', 'name', 'medical_center_id'); $query->select( 'id' , 'name' , 'medical_center_id' );
}, } ,
'user.medical_center' => function($query){ 'user.medical_center' => function ( $query ) {
$query->select('id', 'name'); $query->select( 'id' , 'name' );
}, } ,
'labels', 'labels' ,
'labels.package', 'labels.package.items']); 'labels.package' , 'labels.package.items' ] );
return \MessageResponse::data($Cycle); return MessageResponse::data( $Cycle );
} }
public function store(StoreCycleRequest $request)
public function store( StoreCycleRequest $request )
{ {
$UniqueID = substr(base_convert(sha1(uniqid(mt_rand())), 16, 36), 0, 10); $UniqueID = substr( base_convert( sha1( uniqid( mt_rand() ) ) , 16 , 36 ) , 0 , 10 );
$CycleData = [ $CycleData = [
'unique_id' => $UniqueID, 'unique_id' => $UniqueID ,
'date' => $request->date, 'date' => $request->date ,
'sterilizer_id' => $request->sterilizer_id, 'sterilizer_id' => $request->sterilizer_id ,
'cycle_number' => $request->cycle_number, 'cycle_number' => $request->cycle_number ,
'note' => $request->note, 'note' => $request->note ,
'user_id' => auth('api')->user()->id, 'user_id' => auth( 'api' )->user()->id ,
'verified' => 'NotVerified', 'verified' => 'NotVerified' ,
]; ];
$CycleObj = Cycle::create($CycleData); $CycleObj = Cycle::create( $CycleData );
$Labels = []; $Labels = [];
$count = 1; $count = 1;
foreach ($request->labels as $key => $label) { foreach ( $request->labels as $key => $label ) {
if (array_key_exists($label['id'], $Labels)) { if ( array_key_exists( $label[ 'id' ] , $Labels ) ) {
$preCount = $Labels[$label['id']]; $preCount = $Labels[ $label[ 'id' ] ];
$Labels[$label['id']] = $preCount + 1; $Labels[ $label[ 'id' ] ] = $preCount + 1;
} } else {
else { $Labels[ $label[ 'id' ] ] = $count;
$Labels[$label['id']] = $count;
} }
} }
foreach ($Labels as $Label => $Count) { foreach ( $Labels as $Label => $Count ) {
$CycleObj->labels()->attach(array($Label), ['count' => $Count]); $CycleObj->labels()->attach( array( $Label ) , [ 'count' => $Count ] );
} }
// $CycleObj->labels()->attach($request->labels); // $CycleObj->labels()->attach($request->labels);
return \MessageResponse::success(trans('messages.success')); return MessageResponse::success( trans( 'messages.success' ) );
} }
public function edit(Cycle $Cycle)
public function edit( Cycle $Cycle )
{ {
$Labels = []; $Labels = [];
$Cycle->load('labels'); $Cycle->load( 'labels' );
foreach ($Cycle->labels as $label) { foreach ( $Cycle->labels as $label ) {
for ($i=0; $i < $label->pivot->count ; $i++) { for ( $i = 0 ; $i < $label->pivot->count ; $i++ ) {
$Labels[] = (object) array('id' => $label->id, 'name' => $label->name); $Labels[] = (object) array( 'id' => $label->id , 'name' => $label->name );
} }
} }
unset($Cycle->labels); unset( $Cycle->labels );
$Cycle->labels = $Labels; $Cycle->labels = $Labels;
return \MessageResponse::data($Cycle); return MessageResponse::data( $Cycle );
} }
public function update(StoreCycleRequest $request, Cycle $Cycle) public function update( StoreCycleRequest $request , Cycle $Cycle )
{ {
$Cycle->update($request->except(['labels'])); $Cycle->update( $request->except( [ 'labels' ] ) );
$Labels = []; $Labels = [];
$count = 1; $count = 1;
foreach ($request->labels as $key => $label) { foreach ( $request->labels as $key => $label ) {
if (array_key_exists($label['id'], $Labels)) { if ( array_key_exists( $label[ 'id' ] , $Labels ) ) {
$preCount = $Labels[$label['id']]; $preCount = $Labels[ $label[ 'id' ] ];
$Labels[$label['id']] = $preCount + 1; $Labels[ $label[ 'id' ] ] = $preCount + 1;
} } else {
else { $Labels[ $label[ 'id' ] ] = $count;
$Labels[$label['id']] = $count;
} }
} }
$Cycle->labels()->detach(); $Cycle->labels()->detach();
foreach ($Labels as $Label => $Count) { foreach ( $Labels as $Label => $Count ) {
$Cycle->labels()->attach(array($Label), ['count' => $Count]); $Cycle->labels()->attach( array( $Label ) , [ 'count' => $Count ] );
} }
return \MessageResponse::success(trans('messages.success')); return MessageResponse::success( trans( 'messages.success' ) );
} }
public function destroy(Cycle $Cycle)
public function destroy( Cycle $Cycle )
{ {
if (auth('api')->user()->cant('delete', $Cycle)) { if ( auth( 'api' )->user()->cant( 'delete' , $Cycle ) ) {
return \MessageResponse::error(trans('messages.access_denied')); return MessageResponse::error( trans( 'messages.access_denied' ) );
} }
if(count($Cycle->labels)) if ( count( $Cycle->labels ) ) {
{
$Cycle->labels()->detach(); $Cycle->labels()->detach();
} }
$Cycle->delete(); $Cycle->delete();
return \MessageResponse::success(trans('messages.success')); return MessageResponse::success( trans( 'messages.success' ) );
} }
public function verifyCycle(Cycle $Cycle)
public function verifyCycle( Cycle $Cycle )
{ {
if (auth('api')->user()->cant('verifyCycle', $Cycle)) { if ( auth( 'api' )->user()->cant( 'verifyCycle' , $Cycle ) ) {
return \MessageResponse::error(trans('You dont have permission')); return MessageResponse::error( trans( 'You dont have permission' ) );
} }
if ($Cycle->verified == 'Verified') { if ( $Cycle->verified == 'Verified' ) {
$Cycle->verified = 'NotVerified'; $Cycle->verified = 'NotVerified';
} else { } else {
$Cycle->verified = 'Verified'; $Cycle->verified = 'Verified';
} }
$Cycle->save(); $Cycle->save();
$Cycle = $Cycle->load('user'); $Cycle = $Cycle->load( 'user' );
return \MessageResponse::success(trans('messages.success'), null, $Cycle); return MessageResponse::success( trans( 'messages.success' ) , null , $Cycle );
} }
public function showCycle(Cycle $Cycle) public function showCycle( Cycle $Cycle )
{ {
$Cycle->load(['user' => function($query){ $Cycle->load( [ 'user' => function ( $query ) {
$query->select('id', 'name', 'medical_center_id'); $query->select( 'id' , 'name' , 'medical_center_id' );
}, } ,
'user.medical_center' => function($query){ 'user.medical_center' => function ( $query ) {
$query->select('id', 'name'); $query->select( 'id' , 'name' );
}, } ,
'labels', 'labels.package', 'labels.package.items']); 'labels' , 'labels.package' , 'labels.package.items' ] );
return \MessageResponse::data($Cycle); return MessageResponse::data( $Cycle );
} }
} }
+93 -96
View File
@@ -2,139 +2,136 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\StoreLabelRequest; use App\Http\Requests\StoreLabelRequest;
use App\Label; use App\Label;
use App\Package; use Illuminate\Http\Request;
use App\User; use Packages\Messaging\src\Facades\MessageResponse;
class LabelController extends Controller class LabelController extends Controller
{ {
public function index(Request $request) public function index( Request $request )
{ {
$user = auth('api')->user(); $user = auth( 'api' )->user();
$Labels = Label::when($user->cant('showAll', Label::class), function($query) use ($user) { $Labels = Label::when( $user->cant( 'showAll' , Label::class ) , function ( $query ) use ( $user ) {
if ($user->hasRole('Supervisor')) { if ( $user->hasRole( 'Supervisor' ) ) {
$query->whereHas('user', function($query) use ($user) { $query->whereHas( 'user' , function ( $query ) use ( $user ) {
$query->where('medical_center_id', $user->medical_center_id); $query->where( 'medical_center_id' , $user->medical_center_id );
}); } );
} else {
$query->where( 'user_id' , $user->id );
} }
else{ } )
$query->where('user_id', $user->id); ->when( $request->has( 'sterilizer_id' ) && $request->sterilizer_id != '' , function ( $query ) use ( $request ) {
} $query->where( 'sterilizer_id' , $request->sterilizer_id );
}) } )
->when($request->has('sterilizer_id') && $request->sterilizer_id != '', function($query) use($request){ ->when( $request->has( 'cycle_number' ) && $request->cycle_number != '' , function ( $query ) use ( $request ) {
$query->where('sterilizer_id', $request->sterilizer_id); $query->where( 'cycle_number' , $request->cycle_number );
}) } )
->when($request->has('cycle_number') && $request->cycle_number != '', function($query) use($request){ ->when( $request->has( 'lot_number' ) && $request->lot_number != '' , function ( $query ) use ( $request ) {
$query->where('cycle_number', $request->cycle_number); $query->where( 'lot_number' , $request->lot_number );
}) } )
->when($request->has('lot_number') && $request->lot_number != '', function($query) use($request){ ->when( $request->has( 'label_id' ) && $request->label_id != '' , function ( $query ) use ( $request ) {
$query->where('lot_number', $request->lot_number); $query->where( 'id' , $request->label_id );
}) } )
->when($request->has('label_id') && $request->label_id != '', function($query) use($request){ ->when( $request->has( 'medical_center_id' ) && $request->medical_center_id != '' && $request->medical_center_id != 'undefined' , function ( $query ) use ( $request ) {
$query->where('id', $request->label_id); $query->whereHas( 'user' , function ( $query ) use ( $request ) {
}) $query->where( 'medical_center_id' , $request->medical_center_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' => function ( $query ) {
}); $query->select( 'id' , 'name' , 'medical_center_id' );
}) } ,
->with(['user' => function($query){ 'package' => function ( $query ) {
$query->select('id', 'name', 'medical_center_id'); $query->select( 'id' , 'name' );
}, } ,
'package' => function($query){ 'user.medical_center' => function ( $query ) {
$query->select('id', 'name'); $query->select( 'id' , 'name' );
}, } ,
'user.medical_center' => function($query){ ] )->orderByDesc( 'id' )->paginate( 10 );
$query->select('id', 'name');
},
])->orderByDesc('id')->paginate(10);
return \MessageResponse::data($Labels); return MessageResponse::data( $Labels );
} }
public function create() public function create()
{ {}
} public function show( Label $Label )
public function show(Label $Label)
{ {
$Label->load(['user' => function($query){ $Label->load( [ 'user' => function ( $query ) {
$query->select('id', 'name', 'medical_center_id'); $query->select( 'id' , 'name' , 'medical_center_id' );
}, } ,
'user.medical_center' => function($query){ 'user.medical_center' => function ( $query ) {
$query->select('id', 'name'); $query->select( 'id' , 'name' );
}, } ,
'package', 'package.items']); 'package' , 'package.items' ] );
return \MessageResponse::data($Label); return MessageResponse::data( $Label );
} }
public function store(StoreLabelRequest $request)
public function store( StoreLabelRequest $request )
{ {
$LabelData = [ $LabelData = [
'sterile_date' => $request->sterile_date, 'sterile_date' => $request->sterile_date ,
'expire_date' => $request->expire_date, 'expire_date' => $request->expire_date ,
'sterilizer_id' => $request->sterilizer_id, 'sterilizer_id' => $request->sterilizer_id ,
'cycle_number' => $request->cycle_number, 'cycle_number' => $request->cycle_number ,
'lot_number' => $request->lot_number, 'lot_number' => $request->lot_number ,
'user_id' => auth('api')->user()->id, 'user_id' => auth( 'api' )->user()->id ,
'package_id' => $request->package_id 'package_id' => $request->package_id
]; ];
$LabelObj = Label::create($LabelData); $LabelObj = Label::create( $LabelData );
return \MessageResponse::success(trans('messages.success'), null, $LabelObj); return MessageResponse::success( trans( 'messages.success' ) , null , $LabelObj );
}
public function edit(Label $Label)
{
$Label->load('package');
return \MessageResponse::data($Label);
} }
public function update(StoreLabelRequest $request, Label $Label) public function edit( Label $Label )
{ {
$Label->update($request->all()); $Label->load( 'package' );
return \MessageResponse::success(trans('messages.success'), null, $Label); return MessageResponse::data( $Label );
} }
public function destroy(Label $Label)
public function update( StoreLabelRequest $request , Label $Label )
{ {
if (auth('api')->user()->cant('delete', $Label)) { $Label->update( $request->all() );
return \MessageResponse::error(trans('messages.access_denied')); return MessageResponse::success( trans( 'messages.success' ) , null , $Label );
} }
if(count($Label->cycles))
public function destroy( Label $Label )
{ {
if ( auth( 'api' )->user()->cant( 'delete' , $Label ) ) {
return MessageResponse::error( trans( 'messages.access_denied' ) );
}
if ( count( $Label->cycles ) ) {
$Label->cycles()->detach(); $Label->cycles()->detach();
} }
$Label->delete(); $Label->delete();
return \MessageResponse::success(trans('messages.success')); return MessageResponse::success( trans( 'messages.success' ) );
} }
public function getLabels() public function getLabels()
{ {
$user = auth('api')->user(); $user = auth( 'api' )->user();
// $admin_users = User::role('Admin')->get()->pluck('id')->toArray(); $Labels = Label::when( $user->cant( 'showAll' , Label::class ) , function ( $query ) use ( $user ) {
// $admin_users[] = $user->id; if ( $user->hasRole( 'Supervisor|User' ) ) {
$query->whereHas( 'user' , function ( $query ) use ( $user ) {
$Labels = Label:: $query->where( 'medical_center_id' , $user->medical_center_id );
when($user->cant('showAll', Label::class), function($query) use ($user) { } );
if ($user->hasRole('Supervisor|User')) {
$query->whereHas('user', function($query) use ($user) {
$query->where('medical_center_id', $user->medical_center_id);
});
} }
})->get(); } )->get();
return \MessageResponse::data($Labels); return MessageResponse::data( $Labels );
} }
public function showLabel(Label $Label) public function showLabel( Label $Label )
{ {
$Label->load(['user' => function($query){ $Label->load( [ 'user' => function ( $query ) {
$query->select('id', 'name', 'medical_center_id'); $query->select( 'id' , 'name' , 'medical_center_id' );
}, } ,
'user.medical_center' => function($query){ 'user.medical_center' => function ( $query ) {
$query->select('id', 'name'); $query->select( 'id' , 'name' );
}, } ,
'package', 'package.items']); 'package' , 'package.items' ] );
return \MessageResponse::data($Label); return MessageResponse::data( $Label );
} }
} }
@@ -106,6 +106,7 @@ class PackageController extends Controller
$Package->load( [ $Package->load( [
'user' , 'user' ,
'creator' , 'creator' ,
'items' ,
'user.medical_center' => function ( $query ) { 'user.medical_center' => function ( $query ) {
$query->select( 'id' , 'name' , 'address' , 'phone_number' ); $query->select( 'id' , 'name' , 'address' , 'phone_number' );
} , } ,
+7 -4
View File
@@ -6,18 +6,21 @@ use Illuminate\Database\Eloquent\Model;
class Label extends Model class Label extends Model
{ {
public $fillable = ['sterile_date', 'expire_date', 'sterilizer_id', 'cycle_number', 'lot_number', 'user_id', 'package_id']; public $fillable = [ 'sterile_date' , 'expire_date' , 'sterilizer_id' , 'cycle_number' , 'lot_number' , 'user_id' , 'package_id' ];
public function user() public function user()
{ {
return $this->belongsTo('App\User'); return $this->belongsTo( 'App\User' );
} }
public function package() public function package()
{ {
return $this->belongsTo('App\Package'); return $this->belongsTo( 'App\Package' );
} }
public function cycles() public function cycles()
{ {
return $this->belongsToMany('App\Cycle', 'cycle_label')->withPivot('count'); return $this->belongsToMany( 'App\Cycle' , 'cycle_label' )->withPivot( 'count' );
} }
} }