-
- Клієнт реєструється в системі і складає Заявку: --кількість місць, --клас апартаментів --час перебування.
-
- Так само клієнт може обрати номер зі списку доступних номерів і забронювати його.
-
- Незареєстрований користувач не може залишити заявку або забронювати номер.
-
- Для переліку номерів реалізувати сортування:
- -- за ціною;
- -- за кількістю місць;
- -- за класом;
- -- за статусом (вільний, заброньований, зайнятий, недоступний).
-
- Менеджер переглядає заявки, що надійшли, виділяє найбільш вподобаний з доступних номерів і відправляє запит клієнту на підтвердження бронювання.
-
- Запит відображається в особистому кабінеті користувача.
-
- Після того, як номер заброньовано, система виставляє клієнту Рахунок, який необхідно сплатити протягом двох днів.
-
- Якщо рахунок не сплачений, бронь автоматично знімається.
-
- На основі сутностей предметної області створити класи, які їм відповідають.
-
- Класи і методи повинні мати назви, що відображають їх функціональність, і повинні бути рознесені по пакетам.
-
- Оформлення коду має відповідати Java Code Convention.
-
- Інформацію щодо предметної області зберігати у реляційній базі даних (в якості СУБД рекомендується використовувати MySQL або PostgreSQL).
-
-
Застосунок має підтримувати роботу з кирилицею (бути багатомовним), в тому числі при зберіганні інформації в базі даних:
- a. повинна бути можливість перемикання мови інтерфейсу;
- b. повинна бути підтримка введення, виведення і зберігання інформації (в базі даних), записаної на різних мовах;
- c. в якості мов обрати мінімум дві: одна на основі кирилиці (українська або російська), інша на основі латиниці (англійська);
- d. дати повинні бути реалізовані через DataTime бібліотеку (Java8).
-
-
- Реалізувати захист від повторної відправки даних на сервер при оновленні сторінки (реалізувати PRG).
-
- У застосунку повинні бути реалізовані аутентифікація і авторизація, розмежування прав доступу користувачів системи до компонентів програми. Шифрування паролів заохочується.
-
- Впровадити у проект журнал подій із використанням бібліотеки log4j.
-
- Код повинен містити коментарі документації (всі класи верхнього рівня, нетривіальні методи і конструктори).
-
- Застосунок має бути покритим модульними тестами (мінімальний відсоток покриття 40%). Написання інтеграційних тестів заохочуються. Використання Mockito заохочується.
-
- Реалізувати механізм пагінації сторінок з даними.
-
- Всі поля введення повинні бути із валідацією даних.
-
- Застосунок має коректно реагувати на помилки та виключні ситуації різного роду (кінцевий користувач не повинен бачити stack trace на стороні клієнта).
-
- Самостійне розширення постановки задачі по функціональності заохочується! (додавання капчі, формування звітів у різних форматах, тощо)
-
- Використання HTML, CSS, JS фреймворків для інтерфейсу користувача (Bootstrap, Materialize, ін.) заохочується!
-
- Розробка проектів за допомогою Git заохочується.
-
- Для доступу до даних використовувати JDBC API із
застосуванням готового або ж розробленого самостійно пулу з'єднань.
- НЕ допускається використання ORM фреймворків
- Для доступу до даних використовувати JDBC API із
застосуванням готового або ж розробленого самостійно пулу з'єднань.
-
- Архітектура застосунка повинна відповідати шаблону MVC.
- НЕ допускається використання MVC-фреймворків
- НЕ допускається використання Project Lombok
- Архітектура застосунка повинна відповідати шаблону MVC.
-
- При реалізації бізнес-логіки необхідно використовувати шаблони проектування: Команда, Стратегія, Фабрика, Будівельник, Сінглтон, Фронт-контролер, Спостерігач, Адаптер та ін. Використання шаблонів повинно бути обґрунтованим
-
- Використовуючи сервлети і JSP, реалізувати функціональність, наведену в постановці завдання.
-
- Використовувати Apache Tomcat у якості контейнера сервлетів.
-
- На сторінках JSP застосовувати теги з бібліотеки JSTL та розроблені власні теги (мінімум: один тег custom tag library і один тег tag file).
-
- При розробці використовувати сесії, фільтри, слухачі.
-
- Застосунок повинен буду структурованим за архітектурою MVC та Spring Boot. Дозволено використання Project Lombok.
-
- Використання Spring Resource Bundle заохочується.
-
- Повинно бути застосована Spring Authorization.
-
- Для доступу до даних використовувати JPA (Spring Data та/або Hibernate).
-
- Обробка виключних ситуацій за допомогою Exception Handling with Spring for REST API заохочується.
-
- Використання ThymeLeaf заохочується.
-
- Використання додаткових фреймворків (Swager та інші) заохочується.