Skip to content

AAAMsk/testtask_1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Описание

Клиенты (агентства) покупают у тур.оператора отели. У клиентов есть список правил, на соответствие которым нужно проверить отель. Для этого к клиенту привязывается список правил, проверка по которому будет запускаться автоматически. В случае, когда правило сработает, скрипт должен уведомить менеджера соответствующим предупреждением.

У каждого правила есть атрибуты:

  1. Название правила: text
  2. Клиент (агентство) к которому оно привязано: agencies.id
  3. Условие срабатывания (может быть цепочка условий1):
  • Если страна отеля (равно | не равно) countries.id
  • Если город отеля (равно | не равно) cities.id
  • Если звездность отеля (равно | не равно) hotels.stars
  • Если в договоре комиссия или скидка hotel_agreements.discount_percent или hotel_agreements.comission_percent (равно | не равно | больше | меньше) integer
  • Если договор по умолчанию hotel_agreements.is_default (равно) boolean
  • Если компания в договоре с отелем hotel_agreements.company_id (равно | не равно) companies.id
  • Если черный список agency_hotel_options.is_black (равно) boolean
  • Если рекомендованный отель agency_hotel_options.is_recomend (равно) boolean
  • Если белый список agency_hotel_options.is_white (равно) boolean
  1. Текст для менеджера: text
  2. Активное правило: boolean

Когда открываем главную страницу, проверяем выбранный отель $hotel_id по списку правил каждого клиента (агентства). Если все условия правила соблюдаются, выводим "Текст для менеджера" (атрибут правила) с указанием агентства agencies.name для которого оно сработало.

Нужно сделать

  1. Таблицу/ы для хранения списка правил в БД.
  2. Проверку выбранного отеля по списку правил каждого агентства index.php.

Будет плюсом

  1. Страница добавления/редактирования новых правил rules.php.

Дополнительно

  • Код должен быть рабочим. Он не должен выводить ошибок и предупреждений.
  • Должен присутствовать начальный тестовый набор правил для проверки бизнес логики.
  • Список условий будет постоянно дополняться, должна быть возможность легко добавить новое условие.
  • Язык PHP8.
  • Код должен соблюдать принципы SOLID.
  • Если нужен фреймворк - выбираем Laravel.

Запуск

  • Запуcкаем проект: docker compose up -d.
  • Проект доступен по адресу http://localhost/.
  • Админер для БД доступен по адресу: http://localhost:8080 (login: developer, password: 123).

Footnotes

  1. Цепочка условий - список условий, причем одно и тоже условие может повторяться много раз с разными значениями. Например, такая цепочка: Если в договоре комиссия или скидка больше 10 и Если в договоре комиссия или скидка меньше 15 и Если страна отеля не равно Россия и Если страна отеля не равно Беларусь и Если страна отеля не равно Казахстан;

About

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

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors