Exemplo n.º 1
0
function validate($input, $type, $minlength, $maxlength)
{
    $input = trimInput($input);
    global $error;
    if (strlen($input) < $minlength) {
        global $error;
        $error = $error . "Your {$type} is too short, minimum length is {$minlength} characters. ";
    } else {
        if (strlen($input) > $maxlength) {
            global $error;
            $error = $error . "Your {$type} is too long, maximum length is {$maxlength} characters. ";
        } else {
            return $input;
        }
    }
}
 public function getSimpleCsvValidator($file)
 {
     $transactions = Excel::load($file)->get()->toArray();
     $transactionHeader = Excel::load($file)->get()->first()->keys()->toArray();
     $templateHeader = Excel::load(app_path('Core/V201/Template/Csv/iati_transaction_template_simple.csv'))->get()->first()->keys()->toArray();
     if (count(array_intersect($transactionHeader, $templateHeader)) !== count($templateHeader)) {
         return null;
     }
     $transactionCurrency = implode(',', $this->getCodes('Currency', 'Organization'));
     $rules = [];
     $messages = [];
     foreach ($transactions as $transactionIndex => $transactionRow) {
         $requiredOnlyOneRule = sprintf('required_only_one:%s.incoming_fund,%s,%s.expenditure,%s,%s.commitment,%s,%s.disbursement,%s', $transactionIndex, trimInput($transactionRow['incoming_fund']), $transactionIndex, trimInput($transactionRow['expenditure']), $transactionIndex, trimInput($transactionRow['commitment']), $transactionIndex, trimInput($transactionRow['disbursement']));
         $rules = array_merge($rules, ["{$transactionIndex}.internal_reference" => sprintf('unique_validation:%s.internal_reference,%s,%s,internal_reference', $transactionIndex, trimInput($transactionRow['internal_reference']), $file), "{$transactionIndex}.incoming_fund" => trimInput($transactionRow['incoming_fund']) ? $requiredOnlyOneRule . '|numeric' : $requiredOnlyOneRule, "{$transactionIndex}.expenditure" => trimInput($transactionRow['expenditure']) ? 'numeric' : '', "{$transactionIndex}.disbursement" => trimInput($transactionRow['disbursement']) ? 'numeric' : '', "{$transactionIndex}.commitment" => trimInput($transactionRow['commitment']) ? 'numeric' : '', "{$transactionIndex}.transaction_date" => 'required|date', "{$transactionIndex}.transaction_currency" => 'in:' . $transactionCurrency, "{$transactionIndex}.description" => 'required']);
         $messages = array_merge($messages, ["{$transactionIndex}.internal_reference.required" => sprintf('At row %s Internal Reference is required', $transactionIndex + 1), "{$transactionIndex}.internal_reference.unique_validation" => sprintf('At row %s Internal Reference should be unique.', $transactionIndex + 1), "{$transactionIndex}.incoming_fund.numeric" => sprintf('At row %s Incoming Fund should be numeric', $transactionIndex + 1), "{$transactionIndex}.incoming_fund.required_only_one" => sprintf('At row %s only one among Incoming Fund ,expenditure, disbursement and commitment is required.', $transactionIndex + 1), "{$transactionIndex}.expenditure.numeric" => sprintf('At row %s Expenditure should be numeric', $transactionIndex + 1), "{$transactionIndex}.disbursement.numeric" => sprintf('At row %s Disbursement should be numeric', $transactionIndex + 1), "{$transactionIndex}.commitment.numeric" => sprintf('At row %s Commitment should be numeric', $transactionIndex + 1), "{$transactionIndex}.transaction_date.required" => sprintf('At row %s Transaction Date is required', $transactionIndex + 1), "{$transactionIndex}.transaction_date.date" => sprintf('At row %s Transaction Date is invalid', $transactionIndex + 1), "{$transactionIndex}.transaction_currency.in" => sprintf('At row %s Transaction Currency is invalid', $transactionIndex + 1), "{$transactionIndex}.description.required" => sprintf('At row %s Description is required', $transactionIndex + 1)]);
     }
     return Validator::make($transactions, $rules, $messages);
 }