File "AddOrderPartialPaymentRequest.php"

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

<?php

namespace App\Http\Requests\Admin;

use App\Models\Order;
use App\Models\OrderPartialPayments;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Http\FormRequest;

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

    public function rules()
    {

        $rules = [
            'payment_type' => [
                'required',
                'in:'. implode(',', OrderPartialPayments::PAYMENT_TYPE_RADIO),
            ],
            'payment_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.',
        ];
    }
}