Cómo mejorar la funcionalidad de este código ante nuevos requerimientos
Publicado por Fabi (3 intervenciones) el 09/04/2021 04:11:58
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).
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.
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,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
}
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,
Valora esta pregunta
0