Giter Club home page Giter Club logo

test_job_2's Introduction

Тестовое задание #2

Создание команды Artisan для добавления данных из CSV файла в базу данных

Описание задачи:

Необходимо разработать команду для фреймворка Laravel с использованием Artisan, которая будет считывать данные из CSV файла, выполнять их валидацию и добавлять в базу данных.

Требования:

  1. Создать команду makeMove, которая будет доступна через Artisan.
  2. При запуске команды, пользователь должен иметь возможность указать путь к CSV файлу.
  3. При отсутствии указанного файла, необходимо выдать сообщение об ошибке.
  4. Пользователь должен иметь возможность выбрать разделитель для CSV файла из предопределенного списка (, ,; :).
  5. Данные из CSV файла должны быть считаны и обработаны.
  6. Для каждой записи из CSV файла необходимо выполнить следующие действия:
    • Проверить валидность данных:
      • Имя и фамилия: строковые значения, обязательные, максимальная длина 255 символов.
      • Email: корректный email-адрес, обязательный, максимальная длина 255 символов, уникальный в базе данных.
      • Дата рождения: обязательная, должна быть валидной датой.
      • Местоположение: строковое значение, обязательное, минимальная длина 1 символа, максимальная длина 255 символов.
      • Код страны: строковое значение, обязательное, максимальная длина 3 символа.
    • Если данные не прошли валидацию, записать ошибки валидации.
    • Если ошибки связаны только с местоположением, установить местоположение как "Unknown" и добавить запись в базу данных.
    • Если все данные валидны, добавить запись в базу данных.
  7. После обработки всех записей, вывести сообщение о количестве успешно добавленных записей и сообщение о количестве записей с ошибками.
  8. Если есть записи с ошибками, создать файл Excel с отчетом об ошибках и указать путь к файлу в сообщении для пользователя.

Дополнительные задания (необязательные):

  1. Реализовать возможность указания файла с кодами стран в формате JSON для привязки местоположения к коду страны.
  2. Обработать случай, когда возраст указан вместо даты рождения и конвертировать его в дату.

Примеры данных CSV файла:

"Name","Email","Age","Location","Country"
"John Doe","[email protected]",30,"New York","US"
"Alice Smith","[email protected]",25,"London","GB"

Примечания:

  • Пожалуйста, предоставьте код в соответствии с принятными стандартами оформления и комментируйте ключевые моменты.
  • Предполагается, что в системе уже существует модель Customer для сохранения данных о клиентах в базе данных.
  • Необходимо убедиться, что код проходит базовые тесты и возвращает ожидаемые результаты в соответствии с требованиями.

Установка

  1. Установка пакетов php
composer install
  1. Ключ приложения
php artisan key:generate
  1. Настройте файл .env
   DB_CONNECTION=mysql  
   DB_HOST=localhost  
   DB_PORT=3306  
   DB_DATABASE=your_database
   DB_USERNAME=your_login  
   DB_PASSWORD=your_password
  1. Загрузка таблиц
php artisan migrate
  1. Подготовка файла random.csv
Переместите файл random.csv в папку /storage/app
  1. Запуск тестовой команды
php artisan makeMove
  1. Отчет с ошибками можно найти по адресу:
/storage/app/failed.xlsx

test_job_2's People

Contributors

smartcoder01 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.