Edit File: PayInvoiceRequest.php
<?php namespace App\Http\Requests\Api\User\UnPricingOrders; use App\Enums\NegotiationOrderStatusEnum; use App\Enums\OrderPayType; use App\Enums\ProductDeliveryTypesEnum; use App\Http\Requests\Api\BaseApiRequest; use App\Models\Message; use App\Models\MessageNotification; use App\Models\NegotiationOrder; use Illuminate\Validation\Rule; class PayInvoiceRequest extends BaseApiRequest { public function rules() { return [ 'order' => ['required'], 'message_id' => ['required', 'numeric', Rule::exists('message_notifications', 'id')], 'pay_type' => ['required', Rule::in(array_column(OrderPayType::cases(), 'value'))], 'msg_id' => ['required', 'numeric', Rule::exists('messages', 'id')], ]; } public function prepareForValidation() { $order = NegotiationOrder::find($this->order_id); $msgNotification = MessageNotification::find($this->message_id); $msg_id = Message::where('type', 'invoice')->find($msgNotification->message_id)?->id; $this->merge([ 'order' => $order, 'msg_id' => $msg_id ]); } public function withValidator($validator) { $validator->after(function ($validator) { if ($this->order && (int)$this->pay_type == OrderPayType::CASH->value && $this->order->receiving_method['value'] == ProductDeliveryTypesEnum::Store->value) { $validator->errors()->add('unavailable_method', __('apis.unavailable_method')); } if ($this->order && $this->order->status['value'] == NegotiationOrderStatusEnum::Invoice_paid->value) { $validator->errors()->add('order_is_paid', __('apis.order_is_paid')); } }); } }
Back to File Manager