UpdateEmployeeByUserIdCommand
Назначение
Обновление профиля сотрудника (Name, Email, PhoneNumber) и синхронизация с Keycloak через Saga. Требует разрешение Identity.Employees.Update.
Цели
- Обновить UserEntity: Name, Email, PhoneNumber
- Запустить UpdateEmployeeByUserId Saga (UpdateKeycloakUserProfile)
- Опубликовать AfterUserUpdatedNotification
Command: UpdateEmployeeByUserIdCommand
Входные данные
| Поле | Тип | Обязательное | Описание |
|---|
| UserId | Guid | Да | Идентификатор пользователя |
| Name | FullName | Да | ФИО |
| Email | string | Да | Email |
| PhoneNumber | string? | Нет | Телефон |
Result: UpdateEmployeeByUserIdCommandResult
| Поле | Тип | Обязательное | Описание |
|---|
| UserId | Guid | Да | Идентификатор пользователя |
| Name | FullName | Да | ФИО |
| Email | string | Да | Email |
| PhoneNumber | string? | Нет | Телефон |
Бизнес-логика
Основной сценарий
- Начать транзакцию (ReadCommitted).
- Получить UserEntity через
userEntityRepository.FindById по UserId.
- Если не найден — ошибка «Сотрудник не найден».
- Обновить UserEntity: Name, Email, PhoneNumber через
userEntityRepository.Update.
- Создать Saga UpdateEmployeeByUserId (UpdateKeycloakUserProfile).
- Publish AfterUserUpdatedNotification.
- Commit.
- Вернуть Result.
Альтернативные сценарии
- Сотрудник не найден: ошибка «Сотрудник не найден» с метаданными UserId.
Диаграмма алгоритма
События
Связанные сущности