Пример #1
0
        private List <DateTime> ObtenerDiasDelMismoTipo(TipoDeDia tipoDeDia)
        {
            List <DateTime> diasDelMismoTipo = new List <DateTime>();

            // Se establace como límite 10 días hacia atrás del mismo tipo que se requiere.
            DateTime fecha = DateTime.Today.AddDays(-1);

            while (diasDelMismoTipo.Count < 10)
            {
                if (ObtenerTipoDeDia(fecha) == tipoDeDia)
                {
                    diasDelMismoTipo.Add(fecha);
                }
                fecha = fecha.AddDays(-1);
            }

            return(diasDelMismoTipo);
        }
Пример #2
0
        public void Generar()
        {
            // Busco en el historial de viajes los que correspondan al mismo tipo de día
            TipoDeDia       tipoDeDia        = ObtenerTipoDeDia(_fechaAGenerar);
            List <DateTime> diasDelMismoTipo = ObtenerDiasDelMismoTipo(tipoDeDia);

            // Proceso cada recorrido individualmente
            List <RecorridoBE>        recorridos          = Recorrido.ListarTodos();
            List <CalculoDeRecorrido> calculosDeRecorrido = new List <CalculoDeRecorrido>();

            foreach (RecorridoBE recorrido in recorridos)
            {
                CalculoDeRecorrido calcRecorrido = new CalculoDeRecorrido
                {
                    Recorrido = recorrido
                };
                CalcularIntervalos(calcRecorrido, diasDelMismoTipo);

                GenerarViajesYPlanillas(calcRecorrido);
                calculosDeRecorrido.Add(calcRecorrido);
            }

            bool hayVehiculos = ChequearDisponibilidadDeVehiculos(out int vehiculosFaltantes);
            bool hayChoferes  = ChequearDisponibilidadDeChoferes(out int choferesFaltantes);

            if (!hayVehiculos || !hayChoferes)
            {
                GenerarAlertaDeInsuficiencia(vehiculosFaltantes, choferesFaltantes);
                RecalcularFrecuencias(calculosDeRecorrido);
            }

            AsignarVehiculos();
            DividirEnDosTurnos();
            AsignarChoferes();

            PlanillaHoraria.GuardarMultiples(_planillasGeneradas);
        }