Клиенты (агентства) покупают у тур.оператора отели. У клиентов есть список правил, на соответствие которым нужно проверить отель. Для этого к клиенту привязывается список правил, проверка по которому будет запускаться автоматически. В случае, когда правило сработает, скрипт должен уведомить менеджера соответствующим предупреждением.
У каждого правила есть атрибуты:
- Название правила: text
- Клиент (агентство) к которому оно привязано: agencies.id
- Условие срабатывания (может быть цепочка условий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
- Текст для менеджера: text
- Активное правило: boolean
Когда открываем главную страницу, проверяем выбранный отель $hotel_id по списку правил каждого клиента (агентства). Если все условия правила соблюдаются, выводим "Текст для менеджера" (атрибут правила) с указанием агентства agencies.name для которого оно сработало.
- Таблицу/ы для хранения списка правил в БД.
- Проверку выбранного отеля по списку правил каждого агентства index.php.
- Страница добавления/редактирования новых правил rules.php.
- Код должен быть рабочим. Он не должен выводить ошибок и предупреждений.
- Должен присутствовать начальный тестовый набор правил для проверки бизнес логики.
- Список условий будет постоянно дополняться, должна быть возможность легко добавить новое условие.
- Язык PHP8.
- Код должен соблюдать принципы SOLID.
- Если нужен фреймворк - выбираем Laravel.
- Запуcкаем проект: docker compose up -d.
- Проект доступен по адресу http://localhost/.
- Админер для БД доступен по адресу: http://localhost:8080 (login: developer, password: 123).
Footnotes
-
Цепочка условий - список условий, причем одно и тоже условие может повторяться много раз с разными значениями. Например, такая цепочка: Если в договоре комиссия или скидка больше 10 и Если в договоре комиссия или скидка меньше 15 и Если страна отеля не равно Россия и Если страна отеля не равно Беларусь и Если страна отеля не равно Казахстан; ↩