Перейти к основному содержимому

AddRoleToEmployeeCommand

Назначение

Добавление роли сотруднику. Создаётся запись UserRoleReferenceEntity. Требует разрешение Identity.Employees.Roles.Create.

Цели

  • Проверить существование UserId и RoleId
  • Проверить отсутствие пары (UserId, RoleId) в UserRoleReferenceEntity
  • Создать UserRoleReferenceEntity
  • Опубликовать AfterUserUpdatedNotification

Command: AddRoleToEmployeeCommand

Входные данные

ПолеТипОбязательноеОписание
UserIdGuidДаИдентификатор пользователя
RoleIdlongДаИдентификатор роли

Result: AddRoleToEmployeeCommandResult

ПолеТипОбязательноеОписание
UserRoleReferenceIdlongДаИдентификатор созданной связи UserRoleReference

Бизнес-логика

Основной сценарий

  1. Проверить существование UserId через userEntityRepository.IsExistId.
  2. Если не существует — ошибка «Пользователь не найден».
  3. Проверить существование RoleId через roleEntityRepository.IsExistId.
  4. Если не существует — ошибка «Роль не найдена».
  5. Проверить отсутствие пары (UserId, RoleId) через userRoleReferenceEntityRepository.Any.
  6. Если пара существует — ошибка «Пользователь уже имеет эту роль».
  7. Начать транзакцию (ReadCommitted).
  8. Создать UserRoleReferenceEntity (TenantId из контекста).
  9. Publish AfterUserUpdatedNotification.
  10. Commit.
  11. Вернуть UserRoleReferenceId.

Альтернативные сценарии

  • Пользователь не найден: ошибка «Пользователь не найден».
  • Роль не найдена: ошибка «Роль не найдена».
  • У пользователя уже есть эта роль: ошибка «Пользователь уже имеет эту роль».

Диаграмма алгоритма

События

Связанные сущности