UpdateUserStatusByIdCommand
Назначение
Изменение статуса активности сотрудника. В БД Status устанавливается в Active; Saga обновляет enabled в Keycloak. Требует разрешение Identity.Employees.Update.Status.
Цели
- Установить UserEntity.Status = Active в БД
- Запустить UpdateUserStatusById Saga (SetKeycloakUserEnabled) с Payload.Enabled
- Опубликовать AfterUserUpdatedNotification
Command: UpdateUserStatusByIdCommand
Входные данные
| Поле | Тип | Обязательное | Описание |
|---|
| UserId | Guid | Да | Идентификатор пользователя |
| Enabled | bool | Да | true — активен, false — неактивен (передаётся в Keycloak) |
Result: UpdateUserStatusByIdCommandResult
| Поле | Тип | Обязательное | Описание |
|---|
| UserId | Guid | Да | Идентификатор пользователя |
| Name | FullName | Да | ФИО сотрудника |
Бизнес-логика
Основной сценарий
- Начать транзакцию (ReadCommitted).
- Получить UserEntity через
userEntityRepository.FindById по UserId.
- Если не найден — ошибка «Сотрудник не найден».
- Обновить UserEntity: Status = Active через
userEntityRepository.Update.
- Создать Saga UpdateUserStatusById (SetKeycloakUserEnabled) с Payload.Enabled.
- Publish AfterUserUpdatedNotification.
- Commit.
- Вернуть Result.
Альтернативные сценарии
- Сотрудник не найден: ошибка «Сотрудник не найден» с метаданными UserId.
Диаграмма алгоритма
События
Связанные сущности