Merge pull request #2162 from pavel-mironchik/import-batch-rules
Allow using the dependent validation rules in import.
This commit is contained in:
commit
43e3a0a08a
@ -10,6 +10,7 @@ use Illuminate\Contracts\Translation\HasLocalePreference;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Support\Str;
|
||||
use Maatwebsite\Excel\Concerns\Importable;
|
||||
use Maatwebsite\Excel\Concerns\SkipsEmptyRows;
|
||||
use Maatwebsite\Excel\Concerns\ToModel;
|
||||
@ -102,4 +103,39 @@ abstract class Import implements HasLocalePreference, ShouldQueue, SkipsEmptyRow
|
||||
{
|
||||
return $this->user->locale;
|
||||
}
|
||||
|
||||
protected function replaceForBatchRules(array $rules): array
|
||||
{
|
||||
$dependent_rules = [
|
||||
'after',
|
||||
'after_or_equal',
|
||||
'before',
|
||||
'before_or_equal',
|
||||
'different',
|
||||
'exclude_if',
|
||||
'exclude_unless',
|
||||
'gt',
|
||||
'gte',
|
||||
'in_array',
|
||||
'lt',
|
||||
'lte',
|
||||
'prohibited_if',
|
||||
'prohibited_unless',
|
||||
'required_if',
|
||||
'required_unless',
|
||||
'required_with',
|
||||
'required_with_all',
|
||||
'required_without',
|
||||
'required_without_all',
|
||||
'same',
|
||||
];
|
||||
|
||||
foreach ($rules as $field => $rule) {
|
||||
foreach ($dependent_rules as $dependent_rule) {
|
||||
$rules[$field] = Str::replaceFirst($dependent_rule . ':', $dependent_rule . ':*.', $rules[$field]);
|
||||
}
|
||||
}
|
||||
|
||||
return $rules;
|
||||
}
|
||||
}
|
||||
|
@ -36,12 +36,10 @@ class Bills extends Import
|
||||
$rules = (new Request())->rules();
|
||||
|
||||
$rules['bill_number'] = Str::replaceFirst('unique:documents,NULL', 'unique:documents,document_number', $rules['document_number']);
|
||||
$rules['issued_at'] = Str::replaceFirst('|before_or_equal:due_at', '', $rules['issued_at']);
|
||||
$rules['due_at'] = Str::replaceFirst('|after_or_equal:issued_at', '', $rules['due_at']);
|
||||
$rules['billed_at'] = $rules['issued_at'];
|
||||
|
||||
unset($rules['document_number'], $rules['issued_at'], $rules['type']);
|
||||
|
||||
return $rules;
|
||||
return $this->replaceForBatchRules($rules);
|
||||
}
|
||||
}
|
||||
|
@ -36,12 +36,10 @@ class Invoices extends Import
|
||||
$rules = (new Request())->rules();
|
||||
|
||||
$rules['invoice_number'] = Str::replaceFirst('unique:documents,NULL', 'unique:documents,document_number', $rules['document_number']);
|
||||
$rules['issued_at'] = Str::replaceFirst('|before_or_equal:due_at', '', $rules['issued_at']);
|
||||
$rules['due_at'] = Str::replaceFirst('|after_or_equal:issued_at', '', $rules['due_at']);
|
||||
$rules['invoiced_at'] = $rules['issued_at'];
|
||||
|
||||
unset($rules['document_number'], $rules['issued_at'], $rules['type']);
|
||||
|
||||
return $rules;
|
||||
return $this->replaceForBatchRules($rules);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user