Technologies: ASP .NET MVC, MS SQL, Entity Framework, Bootstrap 3, JQuery, Ninject, Owin, AspNet.Indentity, AutoMapper
Построить веб-приложение, поддерживающую заданную функциональность:
- На основе сущностей предметной области создать классы их описывающие, соблюдая принципы SOLID. (DI по желанию).
- Классы и методы должны иметь отражающую их функциональность названия и должны быть грамотно структурированы в приложении (folders, namespaces).
- Оформление кода должно соответствовать C# Code Conventions.
- Информацию о предметной области хранить в БД, для доступа использовать Entity Framework. В качестве СУБД использовать MS SQL (не Compact).
- Архитектура приложения должна соответствовать шаблону MVC.
- Выполнить журналирование событий, то есть информацию о возникающих исключениях и событиях в системе обрабатывать средствами среды.
- Код должен содержать комментарии (все классы верхнего уровня, нетривиальные методы и конструкторы).
- Уровень доступа к данным должен быть вынесен в отдельный проект.
- Реализовать разграничение прав доступа пользователей системы к компонентам приложения (минимум 3 роли).
- Все поля ввода должны быть с валидацией данных.
Дополнительно, к требованиям изложенным выше, более чем желательно обеспечить выполнение следующих требований.
- покрытие юнит-тестами бизнес-логики.
- Использовать журналирование событий.
- Обработка исключений.
- Самостоятельное расширение постановки задачи по функциональности приветствуется. Автобаза Диспетчер создает Рейсы, которые представлены в системе в виде списка, для которого необходимо реализовать возможность сортировки по: номеру рейса; дате создания рейса; статусу (открыт, в прогрессе, закрыт, отменен).
Водитель делает Заявку на рейс, в которой указывает характеристики автомобиля, необходимых для рейса. Диспетчер просматривает Заявку и назначает на рейс Автомобиль, который соответствует требованиям и находится в исправном состоянии. Водитель делает отметку о выполнении рейса и состоянии автомобиля. Администратор владеет такими же правами, как и диспетчер, кроме того может: регистрировать водителей и диспетчеров в системе; добавлять/удалять автомобили, редактировать информацию об автомобилях.