es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Aumentar número hasta que se cumpla la condición.

Tengo la creación de inquilino

Aquí está el código

var tenant = new Tenant(tenancyName, name)
{
    IsActive = isActive,
    EditionId = editionId,
    SubscriptionEndDateUtc = subscriptionEndDate?.ToUniversalTime(),
    IsInTrialPeriod = isInTrialPeriod,
    ConnectionString = connectionString.IsNullOrWhiteSpace()
        ? null
        : SimpleStringCipher.Instance.Encrypt(connectionString)
};

await CreateAsync(tenant);
await _unitOfWorkManager.Current.SaveChangesAsync(); // Para obtener el id del nuevo inquilino.

tenancyName puede estar duplicado

Entonces, para verificarlo, uso esta condición

if (await TenantRepository.FirstOrDefaultAsync(t => t.TenancyName == tenant.TenancyName) != null)
{

}

Necesito agregar un contador para que sea único.

Por ejemplo, si EugeneTenant está duplicado, necesito agregarle 2, para que sea EugeneTenant2,

si EugeneTenant2 está duplicado, agregarle 3, así que sería EugeneTenant3

Por lo tanto, se incrementará automáticamente a partir de 2 hasta que se cumpla la condición.

Agregué este código

int startNumber = 2;
do
{
    tenant.TenancyName = $"{tenant.TenancyName}{startNumber}";
    tenant.Name = $"{tenant.TenancyName}{startNumber}";
    startNumber++;
}
while (await TenantRepository.FirstOrDefaultAsync(t => t.TenancyName == tenant.TenancyName) != null);

Pero, por ejemplo, si tengo EugeneTenancy2, el siguiente que tengo esEugeneTenancy23

¿Cómo puedo hacer esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para evitar el problema de agregar un número al final de TenancyName sin considerar la posición del dígito, puedes modificar el código de la siguiente manera:

    var count = 2;
    var baseTenancyName = tenancyName;
    while (await TenantRepository.FirstOrDefaultAsync(t => t.TenancyName == tenancyName) != null)
    {
        tenancyName = $"{baseTenancyName}{count}";
        name = $"{baseTenancyName}{count}";
        count++;
    }
    
    var tenant = new Tenant(tenancyName, name)
    {
        IsActive = isActive,
        EditionId = editionId,
        SubscriptionEndDateUtc = subscriptionEndDate?.ToUniversalTime(),
        IsInTrialPeriod = isInTrialPeriod,
        ConnectionString = connectionString.IsNullOrWhiteSpace()
            ? null
            : SimpleStringCipher.Instance.Encrypt(connectionString)
    };
    
    await CreateAsync(tenant);
    await _unitOfWorkManager.Current.SaveChangesAsync(); //Para obtener el id del nuevo inquilino.
    

    En este código modificado, se guarda el tenancyName base en una variable separada llamada baseTenancyName. Luego, se utiliza una variable count para realizar un seguimiento del número que se añadirá a tenancyName.

    Dentro del bucle while, se construye un nuevo tenancyName agregando el count a baseTenancyName. También se actualiza la variable name para que coincida con el nuevo tenancyName. Después de eso, se incrementa el count.

    De esta manera, te aseguras de que el número añadido solo aparezca en la última posición de tenancyName. Por ejemplo, si tienes EugeneTenancy2 y el siguiente es EugeneTenancy23, el código modificado generará EugeneTenancy3 en su lugar.

Comments are closed.