Skip to content

Latest commit

 

History

History
41 lines (28 loc) · 3.26 KB

README.md

File metadata and controls

41 lines (28 loc) · 3.26 KB

Подробнее о проекте: https://github.com/POMXARK/example-app/blob/master/DOCS.md

Laravel Framework 9.52.15 (PHP 8.1.2-1ubuntu2.11) node 20

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

На вакансию: https://khabarovsk.hh.ru/vacancy/81007713?hhtmFrom=chat

Необходимо попробовать максимально задействовать возможности фреймворка по канонам паттерна MVC. Есть сущность "Пациент" с полями first_name, last_name, birthdate, age, age_type Необходимо описать роутер и контроллер который:

  1. принимает только поля first_name, last_name и birthdate
  2. Создает сущность "Пациент" через модель Patient
  3. поля age(int возраст) и age_type(char день/месяц/год) заполняются в зависимости от пришеднего в контроллер birthdate(date дата рождения). Если возраст меньше месяца, то это дни. Если меньше года, то месяцы
  4. созданную и сохраненную сущность отправить в 5ти минутный кеш и в очередь

Обработчик очереди и делать не надо. БД создавать и подключать тоже. Работоспособность кода не важна, главное - способ реализации

  1. запросом из роута нужно выгрузить список сущностей и также задействовать кеш (если есть и не просрочился). Выгружается полями name (конкатенация first_name + last_name), дата рождения в формате (d.m.Y) и возвраст в формате "4 день" (склонять не надо)

P.S. В лоб пилить логику в контроллере - не интересно. Необходимо учесть, что контроллер должен быть максимально "тонким" и с минимальным вызовом вспомогательных сервисов вида $this->userService->age()

  1. age содержит цифру согласно указанному age_type - кол-во дней, месяцев или лет
  2. age_type поле в любом формате, главное показать логику вычисления
  3. если дата рождения меньше месяца назад - указываем в age кол-во дней, а в age_type - дни (21 день) если дата рождения меньше года (очевидно что более 1 месяца) - указываем age кол-во целых месяцев, а в age_type - месяцы (1 месяц) в остальных случаях - указываем age кол-во целых лет, а в age_type - год (21 год)

Запуск

  • cp .env.example .env
  • php artisan optimize
  • chmod -R 777 storage/logs
  • docker-compose up -d --build

demo-deploy (all in one)

  • sudo rm -r docker
  • docker build -t example-app .
  • docker run -d -p 8000:80 --name example-app example-app