user = user(); } public function map($row): array { $row['company_id'] = company_id(); $row['created_by'] = $this->user->id; // Make enabled field integer if (isset($row['enabled'])) { $row['enabled'] = (int) $row['enabled']; } // Make reconciled field integer if (isset($row['reconciled'])) { $row['reconciled'] = (int) $row['reconciled']; } $date_fields = ['paid_at', 'invoiced_at', 'billed_at', 'due_at', 'issued_at', 'created_at', 'transferred_at']; foreach ($date_fields as $date_field) { if (!isset($row[$date_field])) { continue; } try { $row[$date_field] = Date::parse(ExcelDate::excelToDateTimeObject($row[$date_field])) ->format('Y-m-d H:i:s'); } catch (InvalidFormatException | \Exception $e) { Log::info($e->getMessage()); } } return $row; } public function rules(): array { return []; } public function chunkSize(): int { return config('excel.imports.chunk_size'); } public function limit(): int { return config('excel.imports.row_limit'); } public function isNotValid($row) { return Validator::make($row, $this->rules())->fails(); } public function isEmpty($row, $fields) { $fields = Arr::wrap($fields); foreach ($fields as $field) { if (!empty($row[$field])) { continue; } return true; } return false; } public function preferredLocale() { 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; } }