Необходимо разработать команду для фреймворка Laravel с использованием Artisan, которая будет считывать данные из CSV файла, выполнять их валидацию и добавлять в базу данных.
- Создать команду
makeMove
, которая будет доступна через Artisan. - При запуске команды, пользователь должен иметь возможность указать путь к CSV файлу.
- При отсутствии указанного файла, необходимо выдать сообщение об ошибке.
- Пользователь должен иметь возможность выбрать разделитель для CSV файла из предопределенного списка (
,
,
;:
). - Данные из CSV файла должны быть считаны и обработаны.
- Для каждой записи из CSV файла необходимо выполнить следующие действия:
- Проверить валидность данных:
- Имя и фамилия: строковые значения, обязательные, максимальная длина 255 символов.
- Email: корректный email-адрес, обязательный, максимальная длина 255 символов, уникальный в базе данных.
- Дата рождения: обязательная, должна быть валидной датой.
- Местоположение: строковое значение, обязательное, минимальная длина 1 символа, максимальная длина 255 символов.
- Код страны: строковое значение, обязательное, максимальная длина 3 символа.
- Если данные не прошли валидацию, записать ошибки валидации.
- Если ошибки связаны только с местоположением, установить местоположение как "Unknown" и добавить запись в базу данных.
- Если все данные валидны, добавить запись в базу данных.
- Проверить валидность данных:
- После обработки всех записей, вывести сообщение о количестве успешно добавленных записей и сообщение о количестве записей с ошибками.
- Если есть записи с ошибками, создать файл Excel с отчетом об ошибках и указать путь к файлу в сообщении для пользователя.
- Реализовать возможность указания файла с кодами стран в формате JSON для привязки местоположения к коду страны.
- Обработать случай, когда возраст указан вместо даты рождения и конвертировать его в дату.
"Name","Email","Age","Location","Country"
"John Doe","[email protected]",30,"New York","US"
"Alice Smith","[email protected]",25,"London","GB"
- Пожалуйста, предоставьте код в соответствии с принятными стандартами оформления и комментируйте ключевые моменты.
- Предполагается, что в системе уже существует модель
Customer
для сохранения данных о клиентах в базе данных. - Необходимо убедиться, что код проходит базовые тесты и возвращает ожидаемые результаты в соответствии с требованиями.
- Установка пакетов php
composer install
- Ключ приложения
php artisan key:generate
- Настройте файл .env
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=your_login
DB_PASSWORD=your_password
- Загрузка таблиц
php artisan migrate
- Подготовка файла random.csv
Переместите файл random.csv в папку /storage/app
- Запуск тестовой команды
php artisan makeMove
- Отчет с ошибками можно найти по адресу:
/storage/app/failed.xlsx