Edit File: CreateOrderRequest.php
<?php namespace App\Http\Requests\Api\Order; use App\Traits\ApiTrait; use Carbon\Carbon; use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Http\Exceptions\HttpResponseException; use Illuminate\Http\Request; use App\Models\Store; class CreateOrderRequest extends FormRequest { use ApiTrait; public function rules() { return [ 'store_id' => 'required', 'store_name' => 'nullable', 'store_icon' => 'nullable', 'deliver_time' => 'required', 'deliver_date' => 'required | after:yesterday', 'coupon' => 'nullable', 'type' => 'nullable', 'payment_type' => 'required', ]; } public function withValidator(Validator $validator){ $validator->after(function ($validator) { if ($this->payment_type == 'online'){ $validator->errors()->add('payment_type', __('order.payment_type_not_available')); } $store = Store::find($this->store_id); if (!$store) { $msg = trans('stores.not_available'); $validator->errors()->add('store_id', $msg); } if (! $store->openingHours()['open_status']) { $msg = trans('order.time_not_available'); $validator->errors()->add('store_id', $msg); } if (Carbon::parse($this->deliver_date)->isToday()){ $inputTime = Carbon::parse($this->deliver_time); $currentTime = Carbon::now()->addMinutes(10); if ($inputTime->lessThanOrEqualTo($currentTime)) { $msg = trans('order.after_now'); $validator->errors()->add('deliver_time', $msg); } } if (!$store->dayOpeningHours($this->deliver_date ,$this->deliver_time)) { $msg = trans('order.time_not_available'); $validator->errors()->add('store_id', $msg); } // if (Carbon::parse($this->deliver_date) == Carbon::today() && Carbon::parse($this->deliver_time) < Carbon::now()) { // $validator->errors()->add('deliver_time', __('order.deliver_time_after')); // } }); } public function prepareForValidation(){ $this->merge([ 'type' => 'special_stores', 'deliver_time'=>date('H:i:s',strtotime($this->deliver_time) ), 'deliver_date'=>date('Y-m-d',strtotime($this->deliver_date)), ]); } protected function failedValidation(Validator $validator) { throw new HttpResponseException($this->requestFailsReturn($validator)); } }
Back to File Manager