namespace Deal.Modules.Tenants.Application.Models;
///
/// Результат операторского создания тенанта.
///
/// true — тенант создан (и, при email, пользователь-владелец).
/// Код ошибки при Ok=false (см. константы); null при успехе.
/// Созданный тенант (Status active); null при Ok=false.
/// Идентификатор созданного пользователя-владельца (email задан); null — не создавался.
/// Логин владельца (нормализованный email); null — не создавался.
/// Одноразовый пароль владельца (показывается один раз); null — email не задан.
public sealed record TenantCreateResultDto(
bool Ok,
string? Error,
TenantRecordDto? Tenant,
Guid? OwnerUserId = null,
string? OwnerLogin = null,
string? InitialPassword = null)
{
///
/// Код ошибки: имя тенанта пустое/пробельное
///
public const string ErrorNameRequired = "name_required";
///
/// Код ошибки: email имеет некорректный формат
///
public const string ErrorInvalidEmail = "invalid_email";
///
/// Код ошибки: пользователь с таким email уже зарегистрирован.
///
public const string ErrorEmailTaken = "email_taken";
///
/// Неуспешный результат без полезной нагрузки.
///
/// Код ошибки (см. константы).
/// TenantCreateResultDto с Ok=false.
public static TenantCreateResultDto Failed(string error) =>
new(Ok: false, Error: error, Tenant: null);
}