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

CreateTenantCommand

Назначение

Создание тенанта. При создании автоматически создаются роли из шаблонов (RoleTemplateEntity).

Цели

  • Регистрация нового тенанта (клиента, организации)
  • Уникальность по ИНН
  • Автоматическое создание ролей из шаблонов

Command: CreateTenantCommand

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

ПолеТипОбязательноеОписание
InnstringДаИНН компании
TypeTenantTypeДаТип тенанта (Developer, Distributor, Contractor)
ContactEmailstringДаEmail для связи
ContactPhonestringДаНомер телефона
IdempotencyKeyGuidДаКлюч идемпотентности

Result: CreateTenantCommandResult

ПолеТипОбязательноеОписание
TenantIdGuidДаID созданного тенанта
RolesIReadOnlyCollection<CreateTenantCommandResultRole>ДаСозданные роли из шаблонов

CreateTenantCommandResultRole

ПолеТипОбязательноеОписание
IdlongДаИдентификатор роли
NamestringДаНазвание роли
CodestringДаКод роли

Валидация

  • ИНН должен быть уникальным. При наличии тенанта с таким ИНН возвращается ошибка «В системе уже зарегистрирована компания с ИНН».

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

  1. Начать транзакцию (IsolationLevel.Serializable).
  2. Проверить, что тенанта с таким ИНН нет.
  3. Создать TenantEntity (таблица TenantEntity; Id = Guid.CreateVersion7, LegalEntity с Inn, Kpp=empty, Name=Inn, Address=empty, Ogrn=empty).
  4. Получить все RoleTemplateEntity (таблица RoleTemplateEntity).
  5. Для каждого шаблона создать RoleEntity (TenantId, Name, Code, RoleTemplateId) в таблице RoleEntity.
  6. Commit.
  7. Вернуть TenantId и список созданных ролей.

События

События не публикуются. CreateTenant — внутренняя операция.

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