Ejemplo n.º 1
0
        // ====================================================================================================


        // ====================================================================================================
        #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);
        }
Ejemplo n.º 2
0
        // ====================================================================================================
        #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;
            }
        }