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 роли).
- Все поля ввода должны быть с валидацией данных.
Дополнительно, к требованиям изложенным выше, более чем желательно
обеспечить выполнение следующих требований.
- покрытие юнит-тестами бизнес-логики.
- Использовать журналирование событий.
- Обработка исключений.
- Самостоятельное расширение постановки задачи по
функциональности приветствуется.
Автобаза
Диспетчер создает Рейсы, которые представлены в системе в
виде списка, для которого необходимо реализовать возможность
сортировки по:
номеру рейса;
дате создания рейса;
статусу (открыт, в прогрессе, закрыт, отменен).
Водитель делает Заявку на рейс, в которой указывает
характеристики автомобиля, необходимых для рейса. Диспетчер
просматривает Заявку и назначает на рейс Автомобиль, который
соответствует требованиям и находится в исправном состоянии.
Водитель делает отметку о выполнении рейса и состоянии
автомобиля.
Администратор владеет такими же правами, как и диспетчер,
кроме того может:
регистрировать водителей и диспетчеров в системе;
добавлять/удалять автомобили, редактировать информацию об
автомобилях.