diff --git a/app/Http/Controllers/Accessories/AccessoriesController.php b/app/Http/Controllers/Accessories/AccessoriesController.php index aa5c6158c0..d1af79adf1 100755 --- a/app/Http/Controllers/Accessories/AccessoriesController.php +++ b/app/Http/Controllers/Accessories/AccessoriesController.php @@ -9,6 +9,7 @@ use App\Models\Accessory; use App\Models\Company; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Facades\Validator; use Redirect; /** This controller handles all actions related to Accessories for @@ -130,6 +131,17 @@ class AccessoriesController extends Controller return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist')); } + $min = $accessory->numCheckedOut(); + $validator = Validator::make($request->all(), [ + "qty" => "required|numeric|min:$min" + ]); + + if ($validator->fails()) { + return redirect()->back() + ->withErrors($validator) + ->withInput(); + } + $this->authorize($accessory); // Update the accessory data diff --git a/app/Http/Controllers/Components/ComponentsController.php b/app/Http/Controllers/Components/ComponentsController.php index 7e606fec26..f943a71a2e 100644 --- a/app/Http/Controllers/Components/ComponentsController.php +++ b/app/Http/Controllers/Components/ComponentsController.php @@ -129,7 +129,7 @@ class ComponentsController extends Controller if (is_null($component = Component::find($componentId))) { return redirect()->route('components.index')->with('error', trans('admin/components/message.does_not_exist')); } - $min = $component->numCHeckedOut(); + $min = $component->numCheckedOut(); $validator = Validator::make($request->all(), [ 'qty' => "required|numeric|min:$min", ]); diff --git a/app/Http/Controllers/Consumables/ConsumablesController.php b/app/Http/Controllers/Consumables/ConsumablesController.php index ebab91a1d5..f068e9868d 100644 --- a/app/Http/Controllers/Consumables/ConsumablesController.php +++ b/app/Http/Controllers/Consumables/ConsumablesController.php @@ -9,6 +9,7 @@ use App\Models\Company; use App\Models\Consumable; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Input; +use Illuminate\Support\Facades\Validator; /** * This controller handles all actions related to Consumables for @@ -128,6 +129,17 @@ class ConsumablesController extends Controller return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.does_not_exist')); } + $min = $consumable->numCheckedOut(); + $validator = Validator::make($request->all(), [ + "qty" => "required|numeric|min:$min" + ]); + + if ($validator->fails()) { + return redirect()->back() + ->withErrors($validator) + ->withInput(); + } + $this->authorize($consumable); $consumable->name = $request->input('name'); diff --git a/app/Models/Accessory.php b/app/Models/Accessory.php index 50abf84b21..42b5481322 100755 --- a/app/Models/Accessory.php +++ b/app/Models/Accessory.php @@ -310,6 +310,21 @@ class Accessory extends SnipeModel return null; } + /** + * Check how many items within an accessory are checked out + * + * @author [A. Gianotto] [] + * @since [v5.0] + * @return int + */ + public function numCheckedOut() + { + $checkedout = 0; + $checkedout = $this->users->count(); + + return $checkedout; + } + /** * Check how many items of an accessory remain * diff --git a/app/Models/Consumable.php b/app/Models/Consumable.php index bb0ebb60de..6607ca586e 100644 --- a/app/Models/Consumable.php +++ b/app/Models/Consumable.php @@ -276,6 +276,21 @@ class Consumable extends SnipeModel } } + /** + * Check how many items within a consumable are checked out + * + * @author [A. Gianotto] [] + * @since [v5.0] + * @return int + */ + public function numCheckedOut() + { + $checkedout = 0; + $checkedout = $this->users->count(); + + return $checkedout; + } + /** * Checks the number of available consumables *