Edit File: AddCartRequest.php
<?php namespace App\Http\Requests\Api\Cart; use App\Models\ProductAdditiveCategory; use Illuminate\Foundation\Http\FormRequest; use App\Models\Cart; use App\Models\ProductGroup; use App\Models\ProductAdditive; use Illuminate\Contracts\Validation\Validator; use Illuminate\Http\Exceptions\HttpResponseException; use App\Traits\ApiTrait; class AddCartRequest extends FormRequest { use ApiTrait; public function rules() { return [ 'group_id' => 'required|exists:product_groups,id', 'store_id' => 'required|exists:stores,id', 'product_id'=> 'nullable', 'qty' => 'required|numeric', 'additives' => 'nullable', ]; } public function prepareForValidation(){ $group = ProductGroup::find($this->group_id); if ($group){ $this->merge(['product_id' => $group->product_id]); } if ($cart = Cart::where('user_id' , auth('api')->id())->where('group_id' , $this->group_id)->where('additives' , $this->additives)->first()){ $this->merge(['qty' => $cart->qty + $this->qty]); } } public function withValidator($validator){ $validator->after(function ($validator) { if($this->additives && $additives = json_decode($this->additives)){ foreach ($additives as $additive) { $get_additive = ProductAdditiveCategory::find($additive); if(!$get_additive){ $validator->errors()->add('additives', __('stores_dashboard.additive_not_available')); } } } }); } public function failedValidation(Validator $validator) { throw new HttpResponseException($this->requestFailsReturn($validator)); } }
Back to File Manager