Skip to content

Latest commit

 

History

History
49 lines (40 loc) · 3.82 KB

README.md

File metadata and controls

49 lines (40 loc) · 3.82 KB

Тестовое задание - сервис ведения студентов

Разработать сервис отвечающий за ведение данных студентов.

Сервис ответственен за сущности:

  1. Студент a. ID (required, PK). Можно использовать любой вариант. Это может быть как GUID, так и обычный int/long + increment. Это поле системное, изменение данного поля не допускается. b. Пол (обязательное поле). c. Фамилия (обязательное, максимальная длина 40 символов) d. Имя (обязательное, максимальная длина 40 символов) e. Отчество ( не обязательное, максимальная длина 60 символов) f. Уникальный идентификатор студента (not required, должен быть уникальным в рамках всех студентов, минимальная длина 6 символов, максимальная длина 16). Опциональный, например мы хотим задать для студента позывной, но не хотим чтобы два студента были с одинаковыми позывными.
  2. Группа a. ID (required, PK). Можно использовать любой вариант. Это может быть как GUID, так и обычный int/long + increment. Это поле системное, изменение данного поля не допускается. b. Имя группы. (обязательное, максимальная длина 25 символов)

Студент может находится одновременно в нескольких группах (многие ко многим).

Предусмотреть все виды операций над сущностями (CRUD).

Контроллеры должны содержать следующие методы:

  1. Создание/удаление/редактирование студента
  2. Создание/удаление/редактирование группы.
  3. Добавление/Удаление студента из группы.
  4. Получение списка студентов с возможностью фильтрации по полям (Пол, ФИО, уникальный идентификатор, название группы) и ограничением по результату (пагинация). a. Результатом должен список где каждый элемент содержит поля: ID, ФИО, уникальный идентификатор, список групп через запятую.
  5. Получение списка групп с возможностью фильтрации по полю «Имя группы». a. Результатом должен список где каждый элемент содержит поля: ID, Имя группы, кол-во студентов в группе.

Общие требования к коду:

  1. Dotnet core 2.0 +
  2. EF
  3. JSON как формат отдачи данных.

Дополнительно:

  1. Docker
  2. Swagger
  3. Unit testing.
  4. Защитить контроллеры с помощью JWT.

Выделить как минимум три слоя

  1. Domain Layer
  2. Data Layer
  3. Presentation Layer

Попытаться соблюсти правила зависимостей Clean Architecture https://proandroiddev.com/clean-architecture-data-flow-dependency-rule-615ffdd79e29

  1. Presentation Layer depends on Domain Layer.
  2. Data Layer depends on Domain Layer.
  3. Domain Layer does NOT depend on Data Layer.