user(); $Cycles = Cycle:: when($user->cant('showAll'), function($query) use ($user) { if ($user->hasRole('Supervisor')) { $query->whereHas('user', function($query) use ($user) { $query->where('medical_center_id', $user->medical_center_id); }); } if ($user->hasRole('User')) { $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); }) ->with('user')->paginate(10); return \MessageResponse::data($Cycles); } public function create() { } public function show(Cycle $Cycle) { $Cycle->load('user', 'user.medical_center', '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', 'user.medical_center', 'labels', 'labels.package', 'labels.package.items'); return \MessageResponse::data($Cycle); } }