Edit File: CompleteOrderRequest.php
<?php namespace App\Http\Requests\Api\Provider\Order; use App\Enums\OrderStatusEnum; use App\Enums\ProductDeliveryTypesEnum; use App\Http\Requests\Api\BaseApiRequest; use App\Models\Order; use Illuminate\Validation\ValidationException; class CompleteOrderRequest extends BaseApiRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'order' => ['nullable'], 'status' => ['required'], ]; } public function prepareForValidation() { $order = Order::where([ 'provider_id' => auth()->id(), 'id' => $this->order_id ])->first(); if (!$order) { throw ValidationException::withMessages([ 'order_id' => __('apis.order_not_fount_or_not_for_you'), ]); } $this->merge([ 'order' => $order, 'status' => $order->receiving_method['value'] == ProductDeliveryTypesEnum::Home->value ? OrderStatusEnum::Delivered_to_delegate->value : OrderStatusEnum::Provider_delivered_to_client->value ]); } public function withValidator($validator) { $validator->after(function ($validator) { if ($this->order) { $old_status = $this->status == OrderStatusEnum::Delivered_to_delegate->value ? OrderStatusEnum::On_my_way_to_provider->value : OrderStatusEnum::Prepared->value; $result = Order::checkPreviousStatus( id: $this->order_id, newStatus: $this->status, oldStatus: $old_status, user: 'provider_id' ); if (is_string($result)) { $validator->errors()->add('order_id', $result); } }else{ $validator->errors()->add('order_id', __('apis.order_not_fount_or_not_for_you')); } }); } }
Back to File Manager