File "AddOrderPaymentRequest.php"

Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Http/Requests/Admin/AddOrderPaymentRequest.php
File size: 3.02 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace App\Http\Requests\Admin;

use App\Models\Order;
use Gate;
use Illuminate\Foundation\Http\FormRequest;

class AddOrderPaymentRequest extends FormRequest
{
    public function authorize()
    {
        return Gate::allows('order_edit');
    }

    public function rules()
    {
        $order = Order::find(request()->route('order')->id);
        if ($order->payment_status == 'Paid'){
            $rules['payment_status'] = [
                'required',
            ];
        } else {
            $rules = [
                'payment_type' => [
                    'required',
                    'in:'. implode(',', Order::PAYMENT_TYPE_RADIO),
                ],
                'amount' => [
                    'required',
                    'min:1',
                ],
            ];

            if ($this->input('payment_type') == 'Credit Card') {
                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['expiry_year'] = [
                        'exclude_if:payment_type,Purchase Order',
                        'date_format:Y',
                    ];
                    $rules['expiry_month'] = [
                        'exclude_if:payment_type,Purchase Order',
                        'date_format:m',
                    ];
                    $rules['ccv'] = [
                        'exclude_if:payment_type,Purchase Order',
                        'integer',
                    ];
                    $rules['save_card'] = [
                        'exclude_if:payment_type,Purchase Order',
                        'boolean',
                        'nullable',
                    ];
                } else {
                    $rules['payment_method'] = [
                        'required',
                    ];
                }

            } else if($this->input('payment_type') == 'Purchase Order') {

                $rules['purchase_order_number'] = [
                    'required',
                    'string',
                    'max:25',
                ];

                $rules['purchase_order_copy'] = [
                    'required',
                    'mimes:pdf,jpg,jpeg,png,xlsx',
                ];
            } else if($this->input('payment_type') == 'Check') {
                $rules['cheque_number'] = [
                    'required',
                    'string',
                    'max:25',
                ];
            }
        }

        return $rules;
    }

    public function messages(): array
    {
        return [
            'payment_method.required' => 'Credit card details or vault id needed when payment type is credit card.',
            'amount.min' => 'Enter a valid amount.',
            'payment_status.required' => 'This order has already been paid',
        ];
    }
}