Skip to content

Успешно выполненное тестовое задание. Кэширование, очередь, обработка дат, тестирование

Notifications You must be signed in to change notification settings

POMXARK/example-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

369a27b · Oct 3, 2023

History

18 Commits
Oct 1, 2023
Jun 3, 2023
Oct 1, 2023
Jun 6, 2023
Jun 3, 2023
Oct 1, 2023
Oct 3, 2023
Oct 1, 2023
Oct 1, 2023
Oct 1, 2023
Jun 6, 2023
Jun 3, 2023
Oct 1, 2023
Jun 3, 2023
Jun 3, 2023
Oct 1, 2023
Oct 3, 2023
Oct 1, 2023
Oct 1, 2023
Oct 1, 2023
Jun 3, 2023
Oct 1, 2023
Oct 1, 2023
Oct 1, 2023
Oct 1, 2023
Oct 1, 2023
Oct 1, 2023
Jun 4, 2023
Oct 1, 2023
Oct 1, 2023
Oct 1, 2023

Repository files navigation

Подробнее о проекте: 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

About

Успешно выполненное тестовое задание. Кэширование, очередь, обработка дат, тестирование

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published