<?php namespace App\Http\Requests\User; use App\Models\Order; use Illuminate\Foundation\Http\FormRequest; class AddOrderPaymentRequest extends FormRequest { public function rules() { $order = Order::find(request()->route('order')->id); if ($order->payment_status == 'Paid'){ $rules['payment_status'] = [ 'required', ]; } else { if ($this->input('vault_id')) { $rules['vault_id'] = [ 'exclude_if:payment_type,Purchase Order', 'gt:0', ]; } else if($this->input('card_number') && $this->input('expiry_year') && $this->input('expiry_month') && $this->input('ccv')) { $rules['card_number'] = [ 'required', ]; $rules['expiry_year'] = [ 'date_format:Y', ]; $rules['expiry_month'] = [ 'date_format:m', ]; $rules['ccv'] = [ 'integer', ]; $rules['save_card'] = [ 'boolean', 'nullable', ]; } else { $rules['payment_method'] = [ 'required', ]; } } return $rules; } public function messages(): array { return [ 'payment_method.required' => 'Credit card details or vault id needed.', 'payment_status.required' => 'This order has already been paid', ]; } }