// ==================================================================================================== // ==================================================================================================== #region MÉTODOS PRIVADOS // ==================================================================================================== private List <Horario> ParseHorarios(DiaCalendario dia) { List <Horario> lista = new List <Horario>(); int inicio = dia.Inicio.TotalMinutos; int final = dia.Final.TotalMinutos; if (final < inicio) { final += 1440; } lista.Add(new Horario { Inicio = inicio, Final = final }); foreach (var servicio in dia.Servicios) { inicio = servicio.Inicio.TotalMinutos; final = servicio.Final.TotalMinutos; if (final < inicio) { final += 1440; } lista.Add(new Horario { Inicio = inicio, Final = final }); } return(lista); }
// ==================================================================================================== #region MÉTODOS PÚBLICOS // ==================================================================================================== public void RecalcularDia(DiaCalendario dia) { var Horarios = ParseHorarios(dia); var Dietas = CalcularHorarios(Horarios, dia.Turno); decimal Trabajadas = Math.Round(Convert.ToDecimal(Dietas.Trabajadas / 60d), 2); decimal Nocturnas = Math.Round(Convert.ToDecimal(Dietas.Nocturnas / 60d), 2); // Rellenamos los datos según el tipo de incidencia. switch (dia.Incidencia.Tipo) { case 1: // Trabajo dia.Trabajadas = Trabajadas; dia.Acumuladas = Trabajadas < JornadaMinima ? 0 : Trabajadas - JornadaMedia; dia.Nocturnas = Nocturnas; dia.Desayuno = Dietas.Desayuno; dia.Comida = Dietas.Comida; dia.Cena = Dietas.Cena; break; case 2: // Franqueo A Trabajar dia.Trabajadas = Trabajadas; dia.Acumuladas = Trabajadas; dia.Nocturnas = Nocturnas; dia.Desayuno = Dietas.Desayuno; dia.Comida = Dietas.Comida; dia.Cena = Dietas.Cena; break; case 3: // Fiesta Por Otro Día dia.Trabajadas = 0m; dia.Acumuladas = -JornadaMedia; dia.Nocturnas = 0m; dia.Desayuno = false; dia.Comida = false; dia.Cena = false; break; case 6: // Jornada Media dia.Trabajadas = JornadaMedia; dia.Acumuladas = 0; dia.Nocturnas = 0; dia.Desayuno = false; dia.Comida = false; dia.Cena = false; break; default: // Resto de incidencias. dia.Trabajadas = 0; dia.Acumuladas = 0; dia.Nocturnas = 0; dia.Desayuno = false; dia.Comida = false; dia.Cena = false; break; } }