namespace Deal.Modules.Tenants.Application.Models;
///
/// Результат активации приглашения через /api/join; тексты HTTP-ошибок фиксирует слой эндпоинтов.
///
/// true — пользователь создан, тенант (при необходимости) создан и приглашение активировано.
/// Код ошибки (/// /// ) или null при успехе.
/// Нормализованный email (логин пользователя) при Ok=true; иначе null.
/// Идентификатор созданного пользователя при Ok=true (для аудита invite_activated); иначе null.
/// Тенант пользователя при Ok=true (существующий из инвайта или созданный); иначе null.
public sealed record JoinResultDto(bool Ok, string? Error, string? Login, Guid? UserId, Guid? TenantId)
{
///
/// Ошибка: приглашение с таким кодом не найдено
///
public const string ErrorNotFound = "notFound";
///
/// Ошибка: срок действия приглашения истёк
///
public const string ErrorExpired = "expired";
///
/// Ошибка: приглашение уже активировано
///
public const string ErrorUsed = "used";
///
/// Ошибка: приглашение отозвано оператором.
///
public const string ErrorRevoked = "revoked";
///
/// Ошибка: email запроса не совпадает с email приглашения.
///
public const string ErrorEmailMismatch = "emailMismatch";
///
/// Ошибка: пользователь с таким email
///
public const string ErrorEmailTaken = "emailTaken";
///
/// Ошибка: пароль пустой или короче символов.
///
public const string ErrorPasswordTooShort = "passwordTooShort";
///
/// Ошибка: целевой тенант инвайта не существует
///
public const string ErrorTenantNotFound = "tenantNotFound";
///
/// Ошибка: целевой тенант инвайта приостановлен
///
public const string ErrorTenantSuspended = "tenantSuspended";
}