diff --git a/app/Cycle.php b/app/Cycle.php index 2126c3ca..3b3af3d9 100644 --- a/app/Cycle.php +++ b/app/Cycle.php @@ -11,9 +11,9 @@ class Cycle extends Model { return $this->belongsTo('App\User'); } - public function packs() + public function labels() { - return $this->belongsToMany('App\Pack', 'cycle_pack'); + return $this->belongsToMany('App\Label', 'cycle_label')->withPivot('count'); } } diff --git a/app/Http/Controllers/CycleController.php b/app/Http/Controllers/CycleController.php index 10206c48..25a7be98 100644 --- a/app/Http/Controllers/CycleController.php +++ b/app/Http/Controllers/CycleController.php @@ -10,7 +10,21 @@ class CycleController extends Controller { public function index(Request $request) { - $Cycles = Cycle::when($request->has('name') && $request->name != '', function($query) use($request){ + $user = auth('api')->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('name') && $request->name != '', function($query) use($request){ $query->where('name', 'LIKE', '%'.$request->name.'%'); }) ->when($request->has('sterilizer_id') && $request->sterilizer_id != '', function($query) use($request){ @@ -31,7 +45,7 @@ class CycleController extends Controller } public function show(Cycle $Cycle) { - $Cycle->load('user', 'packs'); + $Cycle->load('user', 'labels', 'labels.package', 'labels.package.items'); return \MessageResponse::data($Cycle); } public function store(StoreCycleRequest $request) @@ -48,21 +62,59 @@ class CycleController extends Controller 'verified' => 'NotVerified', ]; $CycleObj = Cycle::create($CycleData); - $CycleObj->packs()->attach($request->packs); + $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) { - $Packs = $Cycle->packs->pluck('id')->toArray(); - unset($Cycle->packs); - $Cycle->packs = $Packs; + $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(['packs'])); - $Cycle->packs()->sync($request->packs); + $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) @@ -70,9 +122,9 @@ class CycleController extends Controller if (auth('api')->user()->cant('delete', $Cycle)) { return \MessageResponse::error(trans('messages.access_denied')); } - if(count($Cycle->packs)) + if(count($Cycle->labels)) { - $Cycle->packs()->detach(); + $Cycle->labels()->detach(); } $Cycle->delete(); return \MessageResponse::success(trans('messages.success')); diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index b505cfc7..cb1a126c 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -10,7 +10,21 @@ class ItemController extends Controller { public function index(Request $request) { + $user = auth('api')->user(); + $Items = Item::with('user') + + ->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('name') && $request->name != '', function($query) use($request){ $query->where('name', 'LIKE', '%'.$request->name.'%'); }) @@ -23,7 +37,6 @@ class ItemController extends Controller ->when($request->has('specific') && $request->specific != '', function($query) use($request){ $query->where('specific', $request->specific); }) - ->where('user_id', auth('api')->user()->id) ->paginate(10); return \MessageResponse::data($Items); } diff --git a/app/Http/Controllers/LabelController.php b/app/Http/Controllers/LabelController.php index 2bdcf644..425e5225 100644 --- a/app/Http/Controllers/LabelController.php +++ b/app/Http/Controllers/LabelController.php @@ -11,7 +11,25 @@ class LabelController extends Controller { public function index(Request $request) { - $Labels = Label::when($request->has('name') && $request->name != '', function($query) use($request){ + $user = auth('api')->user(); + + if ($user->hasRole('Supervisor|User')) { + $medical_center_id = $user->medical_center_id; + } + elseif($request->has('medicalCenter_id') && $request->medicalCenter_id != '') { + $medical_center_id = $request->medicalCenter_id; + } else { + $medical_center_id = null; + } + + $Labels = Label:: + when($user->cant('showAll'), function($query) use ($user) { + if ($user->hasRole('User')) { + $query->where('user_id', $user->id); + } + }) + + ->when($request->has('name') && $request->name != '', function($query) use($request){ $query->where('name', 'LIKE', '%'.$request->name.'%'); }) ->when($request->has('sterilizer_id') && $request->sterilizer_id != '', function($query) use($request){ @@ -26,7 +44,7 @@ class LabelController extends Controller ->when($request->has('department') && $request->department != '', function($query) use($request){ $query->where('department', 'LIKE', '%'.$request->department.'%'); }) - ->when($request->has('medical_center_id') && $request->medical_center_id != '', function($query) use($request){ + ->when($medical_center_id, function($query) use($request){ $query->whereHas('user', function($query) use($request){ $query->where('medical_center_id', $request->medical_center_id); }); @@ -40,7 +58,7 @@ class LabelController extends Controller } public function show(Label $Label) { - $Label->load('user', 'packages', 'user.medical_center'); + $Label->load('user', 'package', 'package.items', 'user.medical_center'); return \MessageResponse::data($Label); } public function store(StoreLabelRequest $request) @@ -55,27 +73,20 @@ class LabelController extends Controller 'department' => $request->department, 'note' => $request->note, 'user_id' => auth('api')->user()->id, + 'package_id' => $request->package_id ]; $LabelObj = Label::create($LabelData); - Package::find($request->package_id)->update(['label_id' => $Label->id]); return \MessageResponse::success(trans('messages.success')); } public function edit(Label $Label) { $Label->load('package'); - dd($Label); - // $Packages = $Label->packages->pluck('id')->toArray(); - // unset($Label->packages); - // $Label->package_id = $Label->package->id; return \MessageResponse::data($Label); } public function update(Request $request, Label $Label) { - $Label->update($request->except(['package_id'])); - Package::find($request->package_id)->update(['label_id' => $Label->id]); - // $Label->package()->save($request->package_id); - // $Label->packages()->sync($request->packages); + $Label->update($request->all()); return \MessageResponse::success(trans('messages.success')); } public function destroy(Label $Label) diff --git a/app/Http/Controllers/PackageController.php b/app/Http/Controllers/PackageController.php index 518a65a9..4c56a2c9 100644 --- a/app/Http/Controllers/PackageController.php +++ b/app/Http/Controllers/PackageController.php @@ -10,7 +10,21 @@ class PackageController extends Controller { public function index(Request $request) { - $Packages = Package::when($request->has('name') && $request->name != '', function($query) use($request){ + $user = auth('api')->user(); + + $Packages = Package:: + 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('name') && $request->name != '', function($query) use($request){ $query->where('name', 'LIKE', '%'.$request->name.'%'); }) ->when($request->has('unique_id') && $request->unique_id != '', function($query) use($request){ @@ -19,6 +33,7 @@ class PackageController extends Controller ->with('user')->paginate(10); return \MessageResponse::data($Packages); } + public function create() { @@ -50,10 +65,12 @@ class PackageController extends Controller $Items[$item['id']] = $count; } } + // dd($Items); foreach ($Items as $Item => $Count) { - $Package->items()->attach(array($Item), ['count' => $Count]); + // dump($Item); + $PackageObj->items()->attach(array($Item), ['count' => $Count]); } - $PackageObj->items()->attach($request->items); + // $PackageObj->items()->attach($request->items); return \MessageResponse::success(trans('messages.success')); } public function edit(Package $Package) @@ -72,7 +89,6 @@ class PackageController extends Controller } public function update(StorePackageRequest $request, Package $Package) { - // dd($request->items); $Package->update($request->except(['items'])); $Items = []; $count = 1; @@ -97,12 +113,13 @@ class PackageController extends Controller $Items[$item['id']] = $count; } } - // dd($Items); + $Package->items()->detach(); // foreach ($Items as $Item) { // $Package->items()->attach(array($Item['id']), ['count' => $Item['count']]); // } foreach ($Items as $Item => $Count) { + // dump($Item, array($Item)); $Package->items()->attach(array($Item), ['count' => $Count]); } // $Package->items()->sync($request->items); @@ -117,9 +134,9 @@ class PackageController extends Controller { $Package->items()->detach(); } - if(count($Package->packs)) + if(count($Package->labels)) { - $Package->packs()->detach(); + $Package->labels()->delete(); } $Package->delete(); return \MessageResponse::success(trans('messages.success')); diff --git a/app/Http/Requests/StoreCycleRequest.php b/app/Http/Requests/StoreCycleRequest.php index 109a79ca..1a4751f3 100644 --- a/app/Http/Requests/StoreCycleRequest.php +++ b/app/Http/Requests/StoreCycleRequest.php @@ -30,7 +30,7 @@ class StoreCycleRequest extends FormRequest 'sterilizer_id' => 'required', 'cycle_number' => 'required', 'note' => 'nullable', - 'packs' => 'required', + 'labels' => 'required', ]; break; } @@ -43,7 +43,7 @@ class StoreCycleRequest extends FormRequest 'sterilizer_id' => 'required', 'cycle_number' => 'required', 'note' => 'nullable', - 'packs' => 'required', + 'labels' => 'required', ]; break; diff --git a/app/Item.php b/app/Item.php index 3da99d7f..67787aab 100644 --- a/app/Item.php +++ b/app/Item.php @@ -9,7 +9,7 @@ class Item extends Model public $fillable = ['name', 'size', 'unique_id', 'specific', 'note', 'user_id']; public function packages() { - return $this->belongsToMany('App\Package', 'item_package'); + return $this->belongsToMany('App\Package', 'item_package')->withPivot('count'); } public function user() { diff --git a/app/Label.php b/app/Label.php index a5e83e78..f34d22d3 100644 --- a/app/Label.php +++ b/app/Label.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; class Label extends Model { - public $fillable = ['name', 'sterile_date', 'expire_date', 'sterilizer_id', 'cycle_number', 'lot_number', 'department', 'user_id', 'note']; + public $fillable = ['name', 'sterile_date', 'expire_date', 'sterilizer_id', 'cycle_number', 'lot_number', 'department', 'user_id', 'note', 'package_id']; public function user() { return $this->belongsTo('App\User'); @@ -15,13 +15,9 @@ class Label extends Model { return $this->belongsTo('App\Package'); } - // public function packages() - // { - // return $this->belongsToMany('App\Package', 'pack_package'); - // } public function cycles() { - return $this->belongsToMany('App\Cycle', 'cycle_pack'); + return $this->belongsToMany('App\Cycle', 'cycle_label')->withPivot('count'); } } diff --git a/app/Package.php b/app/Package.php index 7cba2091..4d77d543 100644 --- a/app/Package.php +++ b/app/Package.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; class Package extends Model { - public $fillable = ['name', 'unique_id', 'user_id', 'note', 'verified', 'label_id']; + public $fillable = ['name', 'unique_id', 'user_id', 'note', 'verified']; public function user() { return $this->belongsTo('App\User'); diff --git a/app/Policies/CyclePolicy.php b/app/Policies/CyclePolicy.php index 5e39ec76..d810b5f3 100644 --- a/app/Policies/CyclePolicy.php +++ b/app/Policies/CyclePolicy.php @@ -8,21 +8,25 @@ use Doctrine\Tests\Common\Inflector\InflectorTest; class CyclePolicy { + public function showAll(User $User) + { + if($User->hasRole('Admin')) + return true; + } public function delete(User $User, Cycle $Cycle) { - // if($User->hasRole('Admin') && $Cycle->users->count() == 0) + if($User->hasRole('Admin') || $Cycle->user_id == $User->id) return true; } public function update(User $User, Cycle $Cycle) { - // if($User->hasRole('Admin')) + if($User->hasRole('Admin') || $Cycle->user_id == $User->id) return true; } public function store(User $User) { - // if($User->hasRole('Admin')) return true; } public function verifyCycle(User $User, Cycle $Cycle) diff --git a/app/Policies/ItemPolicy.php b/app/Policies/ItemPolicy.php index c1aabce1..e1cfe7ed 100644 --- a/app/Policies/ItemPolicy.php +++ b/app/Policies/ItemPolicy.php @@ -8,21 +8,25 @@ use Doctrine\Tests\Common\Inflector\InflectorTest; class ItemPolicy { + public function showAll(User $User) + { + if($User->hasRole('Admin')) + return true; + } public function delete(User $User, Item $Item) { - // if($User->hasRole('Admin') && $Item->users->count() == 0) + if($User->hasRole('Admin') || $Item->user_id == $User->id) return true; } public function update(User $User, Item $Item) { - // if($User->hasRole('Admin')) + if($User->hasRole('Admin') || $Item->user_id == $User->id) return true; } public function store(User $User) { - // if($User->hasRole('Admin')) return true; } diff --git a/app/Policies/LabelPolicy.php b/app/Policies/LabelPolicy.php index 6ba23f25..45b0a9ac 100644 --- a/app/Policies/LabelPolicy.php +++ b/app/Policies/LabelPolicy.php @@ -8,21 +8,25 @@ use Doctrine\Tests\Common\Inflector\InflectorTest; class LabelPolicy { + public function showAll(User $User) + { + if($User->hasRole('Admin')) + return true; + } public function delete(User $User, Label $Label) { - // if($User->hasRole('Admin') && $Label->users->count() == 0) + if($User->hasRole('Admin') || $Label->user_id == $User->id) return true; } public function update(User $User, Label $Label) { - // if($User->hasRole('Admin')) + if($User->hasRole('Admin') || $Label->user_id == $User->id) return true; } public function store(User $User) { - // if($User->hasRole('Admin')) return true; } diff --git a/app/Policies/PackagePolicy.php b/app/Policies/PackagePolicy.php index 194ced8e..77af87bf 100644 --- a/app/Policies/PackagePolicy.php +++ b/app/Policies/PackagePolicy.php @@ -8,26 +8,30 @@ use Doctrine\Tests\Common\Inflector\InflectorTest; class PackagePolicy { + public function showAll(User $User) + { + if($User->hasRole('Admin')) + return true; + } public function delete(User $User, Package $Package) { - // if($User->hasRole('Admin') && $Package->users->count() == 0) + if($User->hasRole('Admin') || $Package->user_id == $User->id) return true; } public function update(User $User, Package $Package) { - // if($User->hasRole('Admin')) + if($User->hasRole('Admin') || $Package->user_id == $User->id) return true; } public function store(User $User) { - // if($User->hasRole('Admin')) - return true; + return true; } public function verifyPackage(User $User, Package $Package) { - // if($User->hasRole('Admin')) + if($User->hasRole('Admin') || ($User->hasRole('Supervisor') && $Package->user->medical_center_id == $User->medical_center_id)) return true; } diff --git a/app/Policies/TestResultPolicy.php b/app/Policies/TestResultPolicy.php index ae7d762a..0853c1ba 100644 --- a/app/Policies/TestResultPolicy.php +++ b/app/Policies/TestResultPolicy.php @@ -11,7 +11,7 @@ class TestResultPolicy public function delete(User $User, TestResult $TestResult) { - if($User->hasRole('Admin') || ($User->hasRole('User') && $TestResult->verified == 'NotVerified' && $TestResult->user_id == $User->id)) + if($User->hasRole('Admin') || ($User->hasRole('User') && $TestResult->verified == 'NotVerified' && $TestResult->user_id == $User->id)) return true; } diff --git a/resources/js/vue/components/modal/cycle/Show.vue b/resources/js/vue/components/modal/cycle/Show.vue index 8232a33d..98f02117 100644 --- a/resources/js/vue/components/modal/cycle/Show.vue +++ b/resources/js/vue/components/modal/cycle/Show.vue @@ -47,44 +47,53 @@ -

Packs

+

Labels


- -
- {{ key+1 + ": " + pack.name }} -
+ @@ -220,7 +224,16 @@ export default { } } } - } + }, + async generateBarcode(code) { + const result = await ApiService.post(urls.Barcode(code)); + if (result && result.status == 200) { + this.changeCurrentModal({ + modal: "modal-barcode-barcode", + properties: { result } + }); + } + } }, computed: { ...mapGetters("modal", ["getModalResult"]) diff --git a/resources/js/vue/views/Package/AddEdit.vue b/resources/js/vue/views/Package/AddEdit.vue index dd960424..65a386f9 100644 --- a/resources/js/vue/views/Package/AddEdit.vue +++ b/resources/js/vue/views/Package/AddEdit.vue @@ -38,7 +38,7 @@ > fas fa-plusADD -