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); }