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); }
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); }