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

UpdateUserStatusByIdCommand

Назначение

Изменение статуса активности сотрудника. В БД Status устанавливается в Active; Saga обновляет enabled в Keycloak. Требует разрешение Identity.Employees.Update.Status.

Цели

  • Установить UserEntity.Status = Active в БД
  • Запустить UpdateUserStatusById Saga (SetKeycloakUserEnabled) с Payload.Enabled
  • Опубликовать AfterUserUpdatedNotification

Command: UpdateUserStatusByIdCommand

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

ПолеТипОбязательноеОписание
UserIdGuidДаИдентификатор пользователя
EnabledboolДаtrue — активен, false — неактивен (передаётся в Keycloak)

Result: UpdateUserStatusByIdCommandResult

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

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

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

  1. Начать транзакцию (ReadCommitted).
  2. Получить UserEntity через userEntityRepository.FindById по UserId.
  3. Если не найден — ошибка «Сотрудник не найден».
  4. Обновить UserEntity: Status = Active через userEntityRepository.Update.
  5. Создать Saga UpdateUserStatusById (SetKeycloakUserEnabled) с Payload.Enabled.
  6. Publish AfterUserUpdatedNotification.
  7. Commit.
  8. Вернуть Result.

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

  • Сотрудник не найден: ошибка «Сотрудник не найден» с метаданными UserId.

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

События

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