none
Cómo mejorar la funcionalidad de este código ante nuevos requerimientos RRS feed

  • Pregunta

  • Hola a todos!! Les cuento mi problema, tengo una aplicación web, utilizo asp.net mvc c# y sql server. En un formulario los empleados cargan el motivo de su ausencia. Inicialmente este formulario tenía solo tres campos, un combo con la lista de motivos de ausencia(Enfermedad, Día de Estudio, Otros motivo), fecha (el sistema toma la fecha) y descripción, mi tabla tenía estos Ausencia (Id, MotivoId, Fecha, Descripcion). Luego me pidieron que cuando los usuario seleccionen por ej. Enfermedad les muestre otro combo con (Fiebre, Dolor abdominal) y si es por Día de Estudio se le permita seleccionar una fecha pero con la restricción de notificar su ausencia con 5 días de anticipación. Como ya tenía mi tabla Motivo (Id, Descripcion) entonces cree una nueva tabla SubMotivo (Id, Descripcion, MotivoId) y actualicé mi tabla Ausencia (Id, SubMotivoId, FechaRegistro, FechaSeleccionada, Descripcion).

    public bool CrearAusencia (Ausencia a)
    {
        /*Id Motivo Día estudio = 2*/ 
        if (a.MotivoId == 2)
        {
             int dia = FechaSeleccionada.Day;
             if (dia < 5)
             {
                 //No se permite crear ausencia.
             }
        }
        
        //Se permite crear ausencia
    }

    Luego me pidieron, cuando seleccionen la opción Otros Motivos se cargue un combo con las siguientes items Día Free, Mudanza y Trámite. Con las restricciones, para Día Free sólo se debe permitir entre el día 1 al 5 de cada mes, pasado esos día ya no debe permitir registrar una ausencia. Para Mudanza con tres días de anticipación se debe registrar la ausencia y para la opción Trámite con 1 día de anticipación.

    Entonces Modifiqué el código anterior.

    public bool CrearAusencia (Ausencia a)
    {
        /*Id Motivo Día estudio = 2*/ 
        if (a.MotivoId == 2)
        {
             int dia = FechaSeleccionada.Day;
             int diaActual = FechaActual.Day;
             if ((dia - diaActual) <= 5) //Se debe registrar con 5 días de anticipación.
             {
                 //No se permite crear ausencia.
             }
        }
        
        /*Id Día Free = 5*/ 
        else if (a.SubMitvo == 5)
        {
            int dia = FechaSeleccionada.Day;
            if (dia >= 5) //Solo se permite hasta el día 5 de cada mes.
            {
                 //No se permite crear ausencia.
            }
        }
    
        /*Id Mudanza = 8*/ 
        else if (a.SubMitvo == 8)
        {
            int dia = FechaSeleccionada.Day;
            int diaActual = FechaActual.Day;
            if ((dia - diaActual) <= 2) //Se debe registrar con 3 días de anticipación.
            {
                 //No se permite crear ausencia.
            }
        }
        
        //Se permite crear ausencia
    }

    Quiero saber cómo puedo mejorar este código ante la aparición de nuevos requerimientos.

    Que me recomiendan ustedes. Estoy viendo un poco de los principios SOLID pero aún no me doy cuenta cómo solucionar esto.

    Disculpen si me extendí demasiado. Gracias,

    jueves, 8 de abril de 2021 13:10

Todas las respuestas

  • Hola Fabiola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    jueves, 8 de abril de 2021 16:05
    Moderador