<?php


namespace App\Http\Validators;

use App\Http\Services\SupplierReceiptService;
use App\Model\SupplierChannelModel;
use Validator;

class ReceiptValidator
{
    //保存相关的验证,别问我为什么不用laravel自带的form-request类
    //因为控制器那边已经被之前的人魔改的难用的一比,而且控制器那边还接收了一大堆统一变量
    public function checkSave($data, $returnAllError = false)
    {
        $receipt = $data;
        //整理下请求数据
        $rules = [
            "bank_name" => "required",
            "bank_adderss" => "required",
            "account_no" => 'required|alpha_num',
            //"account_no" => "required|regex:/^[0-9\-]+$/",
            "receipt_type" => 'required',
            "certificate" => "required",
        ];
        if ($receipt['receipt_type'] == 2) {
            $rules["swift_code"] = 'required';
            $rules["account_adderss"] = 'required';
            $rules["account_name"] = 'required';
            $rules["bank_adderss"] = 'required';
            $rules["nation_id"] = 'required';
            $rules['account_no'] = 'required|alpha_num';
            //$rules["international_code"] = 'required';
        }
        $messages = $this->messages();
        $validator = Validator::make($receipt, $rules, $messages);

        $otherErrors = [];
        if ($otherErrors) {
            return $otherErrors;
        }

        //判断联系方式的表单验证
        if ($validator->fails()) {
            if ($returnAllError) {
                return $validator->errors()->all();
            } else {
                return $validator->errors()->first();
            }
        }
    }

    private function messages()
    {
        return [
            'receipt_type.required' => '银行类型 不能为空',
            'bank_name.required' => '开户名称 不能为空',
            'bank_adderss.required' => '开户行 不能为空',
            'swift_code.required' => '银行国际代码 Swift Code 不能为空',
            'account_no.required' => '银行账号 不能为空',
            'account_no.regex' => '国内银行账号仅支持输入数字且中间不能有空格',
            'account_no.alpha_num' => '银行账号都只允许输入英文和数字',
            'account_name.required' => '账户名称 不能为空',
            'certificate.required' => '银行信息凭证 不能为空',
            'account_adderss.required' => '银行地址 不能为空',
            'nation_id.required' => '银行国家 不能为空',
            //'international_code.required' => '国际代码 不能为空',
        ];
    }
}