-
Турагенство має каталог турів з певною інформацією: назва туру, ціна та кількість осіб.
-
Користувач реєструється в системі, обирає Тур і робить Замовлення.
-
Незареєстрований користувач не має можливості замовляти тур.
-
Замовлення може мати статус: зареєстроване, сплачене чи скасоване.
-
Менеджер визначає тур як 'палаючий'. 'Палаючі' тури завжди відображаються нагорі переліку. Менеджер має можливість змінити статус Замовлення. На кожен замовлений тур користувачу визначається знижка з кроком, який встановлюється менеджером, але не більше відсотка, який так само визначає менеджер.
-
Адміністратор системи може:
- додати/видалити тур;
- заблокувати/розблокувати користувача.
- Заблокований користувач може зайти у свій кабінет та має доступ до перегляду списку турів, але не може здійснити замовлення.
Розробити веб-застосунок, що підтримує функціональність відповідно до варіанту завдання.
-
На основі сутностей предметної області створити класи, які їм відповідають.
-
Класи і методи повинні мати назви, що відображають їх функціональність, і повинні бути рознесені по пакетам.
-
Оформлення коду має відповідати Java Code Convention.
-
Інформацію щодо предметної області зберігати у реляційній базі даних (в якості СУБД рекомендується використовувати MySQL або PostgreSQL).
-
Для доступу до даних використовувати JDBC API із застосуванням готового або ж розробленого самостійно пулу з'єднань.
НЕ допускається використання ORM фреймворків.
- Архітектура застосунка повинна відповідати шаблону MVC.
НЕ допускається використання MVC-фреймворків.
- При реалізації бізнес-логіки необхідно використовувати шаблони проектування (мінімум 3).
Використання шаблонів повинно бути обґрунтованим.
-
Використовуючи сервлети і JSP, реалізувати функціональність, наведену в постановці завдання.
-
Використовувати Apache Tomcat у якості контейнера сервлетів.
-
Реалізувати захист від повторної відправки даних на сервер при оновленні сторінки (реалізувати PRG).
-
При розробці використовувати сесії, фільтри, слухачі.
-
У застосунку повинні бути реалізовані аутентифікація і авторизація, розмежування прав доступу користувачів системи до компонентів програми. Шифрування паролів заохочується.
-
Використовувати Впровадити у проект журнал подій із використанням бібліотеки log4j.
-
Код повинен містити коментарі документації (всі класи верхнього рівня, нетривіальні методи і конструктори).
-
Застосунок має бути покритим модульними тестами (мінімальний відсоток покриття - 40%). Написання інтеграційних тестів заохочуються.
-
Реалізувати механізм пагінації сторінок з даними.
-
Всі поля введення повинні бути із валідацією даних.
-
Застосунок має коректно реагувати на помилки та виключні ситуації різного роду (кінцевий користувач не повинен бачити stack trace на стороні клієнта).
-
Самостійне розширення постановки задачі по функціональності заохочується (додавання капчі, формування звітів у різних форматах, тощо)!
-
Використання HTML, CSS, JS фреймворків для інтерфейсу користувача (Bootstrap, Materialize та ін.) заохочується!
За три дні до моменту старту захистів проектів (інтерв’ю) необхідно підготувати у вигляді окремого файлу схему бази даних, а також надати посилання на репозиторій із проектом.