Задание. Комментарии приветствуются
Скачать 192.27 Kb.
|
Вам предстоит разработать прототип системы для справочника сотрудников. В качестве основных инструментов необходимо использовать язык программирования C#, .NET Core версии 2.1+, фреймворк ASP.NET Core, СУБД MSSQL или PostgreSQL на выбор (обратите внимание, использование ORM, например, Entity Framework, НЕ РАЗРЕШАЕТСЯ!), всю разработку необходимо вести с помощью системы контроля версий git и публиковать в репозитории на github.com. Система должна представлять из себя клиент(WPF)-серверное(ASP.NET Core) приложение, взаимодействие должно осуществляться по протоколу HTTP, данные должны передаваться в формате JSON. Код должен быть написан лаконично и понятно, в соответствии с общепринятым C# coding-style ( https://docs.microsoft.com/ru- ru/dotnet/csharp/programming-guide/inside-a-program/coding-conventions ), комментарии приветствуются. Необходимо реализовать следующий функционала 1. Просмотр списка сотрудников (вывод ФИО, даты рождения) 2. Поиск сотрудника по ФИО 3. Добавление сотрудника 4. Изменение сотрудника 5. Удаление сотрудника Сотрудник должен содержать следующие данные: ● Фамилия text, ● Имя text, ● Отчество text ● ДатаРождения DateTime Дополнительно можно реализовать следующий функционал (это необязательно, но, несомненно, будет оценено): 1. Аутентификация - добавить возможность входить по логину/паролю. Логин и пароль должен указываться на странице пользователя. 2. Добавить к сотруднику список телефонов - массив из номеров телефонов сотрудника. Можно добавлять, удалять или изменять номера у сотрудника 3. Постраничный вывод - список сотрудников выводится не весь, а постранично, т.е. 10 сотрудников на страницу с возможностью переходить на следующую или предыдущую страницу В репозитории должен располагаться файл init.sql с набором запросов для первоначального создания базы данных. Предполагается, что файл можно быть открыть в Management Studio, PgAdmin, DataGrip и др., выполнить все запросы из файла на пустой, только что созданной базе данных, и после этого БД должна быть готова к работе. На что мы будем обращать внимание при оценке задания: 1. Лаконичность, понятность, самодокументированность кода, а также наличие полезных комментариев (комментарий ради комментария, т.е. описание очевидных вещей, будет скорее минусом). 2. Наличие логических ошибок в алгоритмах, багов. 3. Явные уязвимости (SQL-инъекции, пароль хранится в открытом виде и др) 4. Правильность написание запросов, а также правильность создания индексов. Все запросы должны быть оптимальны даже при большом количестве данных!!! Желательно наличие пагинации (постраничный вывод) для запросов. 5. Пользовательский интерфейс должен быть "юзабельным". 6. Все конфигурационные данные должны быть вынесены в конфигурационные файлы. "Хардкода" строк подключения, адреса сервера быть не должно. 7. Разработка должна вестись на github в несколько коммитов. Заливать весь код одним коммитом нельзя, должен быть виден процесс разработки. После выполнения задания Вы отправляете нам ссылку на свой публичный github репозиторий. Подсказки по выполнению задания: 1. При написании клиентской части для взаимодействия с сервером воспользуйтесь следующим вспомогательным кодом: https://gist.github.com/MaximKsh/acd77fc0352361a1fed64d146a694cf5 В коде приведены методы для выполнения HTTP запросов с учетом типовых потребностей, а также указан пример использования. При использовании кода будьте готовы объяснить как он работает. 2. Класс Employee, показанный в примере, используется как на сервере в контроллере, так и на клиенте. Подумайте, каким образом можно определить классы, используемые и на клиенте, и на сервере, чтобы избежать дублирования кода. |