user(); if ($user->hasRole('User')) { $Packages = app(LabelRepositoryInterface::class)->indexForUser($request, $user); } elseif ($user->hasRole('Supervisor')) { $Packages = app(LabelRepositoryInterface::class)->indexForSupervisor($request, $user); } else { $Packages = app(LabelRepositoryInterface::class)->indexForAdmin($request, $user); } return LabelResource::collection($Packages); } public function create() { } public function show(Label $Label) { $Label->load([ 'user' => function ($query) { $query->select('id', 'name', 'medical_center_id'); }, 'user.medical_center' => function ($query) { $query->select('id', 'name'); }, 'package', 'package.items' ]); return MessageResponse::data($Label); } public function store(StoreLabelRequest $request) { $LabelData = [ 'sterile_date' => $request->sterile_date, 'expire_date' => $request->expire_date, 'sterilizer_id' => $request->sterilizer_id, 'cycle_number' => $request->cycle_number, 'lot_number' => $request->lot_number, 'user_id' => auth('api')->user()->id, 'package_id' => $request->package_id ]; $Label = Label::create($LabelData); $Label->load([ 'user' => function ($query) { $query->select('id', 'name', 'medical_center_id'); }, 'user.medical_center' => function ($query) { $query->select('id', 'name'); }, 'package', 'package.items' ]); return MessageResponse::success(trans('messages.success'), null, $Label); } public function edit(Label $Label) { $Label->load('package'); return MessageResponse::data($Label); } public function update(StoreLabelRequest $request, Label $Label) { $Label->update($request->all()); $Label->load([ 'user' => function ($query) { $query->select('id', 'name', 'medical_center_id'); }, 'user.medical_center' => function ($query) { $query->select('id', 'name'); }, 'package', 'package.items' ]); return MessageResponse::success(trans('messages.success'), null, $Label); } 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->delete(); return MessageResponse::success(trans('messages.success')); } public function getLabels() { $user = auth('api')->user(); $Labels = Label::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(); return MessageResponse::data($Labels); } public function showLabel(Label $Label) { $Label->load([ 'user' => function ($query) { $query->select('id', 'name', 'medical_center_id'); }, 'user.medical_center' => function ($query) { $query->select('id', 'name'); }, 'package', 'package.items' ]); return MessageResponse::data($Label); } }