/// <summary> /// Construye la estructura y camputa sus estadísticos generales. /// </summary> /// <param name="valores">Lista con los detalles de cada réplica</param> public InfoReporteUtilizacion(List <UnidadBackup> valores) { UnidadBackup unidadBackup = valores[0]; this.valores = valores; this.subflota = unidadBackup.TramoBase.Ac_Owner + " " + unidadBackup.TramoBase.Numero_Vuelo; this.estacion = unidadBackup.Estacion; this.id = unidadBackup.Id; this.tiempo_ini_slot = unidadBackup.TramoBase.Hora_Salida; this.tiempo_fin_slot = unidadBackup.TramoBase.Hora_Llegada; this.duracion_slot = unidadBackup.TiempoFinPrg - unidadBackup.TiempoIniPrg; List <double> valoresUtilizacionNeta = new List <double>(); List <double> valoresTramosRecuperados = new List <double>(); List <double> valoresMinutosRecuperados = new List <double>(); List <double> valoresUtilizacionSlotSinTA = new List <double>(); List <double> valoresUtilizacionSlotConTA = new List <double>(); foreach (UnidadBackup bu in valores) { EstadisticosUtilizacion estadisticos_replica = bu.Estadisticos; valoresUtilizacionNeta.Add(estadisticos_replica.porcentajeUtilizacionNeta); valoresTramosRecuperados.Add(estadisticos_replica.tramosRecuperados); valoresMinutosRecuperados.Add(estadisticos_replica.minutosRecuperados); valoresUtilizacionSlotSinTA.Add(estadisticos_replica.porcentajeUtilizacionSlotSinTA); valoresUtilizacionSlotConTA.Add(estadisticos_replica.porcentajeUtilizacionSlotConTA); } this.estadisticosMinutosRecuperados = new EstadisticosGenerales(valoresMinutosRecuperados); this.estadisticosPorcentajeUtilizacionNeta = new EstadisticosGenerales(valoresUtilizacionNeta); this.estadisticosTramosRecuperados = new EstadisticosGenerales(valoresTramosRecuperados); this.estadisticosUtilizacionSlot = new EstadisticosGenerales(valoresUtilizacionSlotConTA); }
/// <summary> /// Agrega unidad de backup. /// Se ejecuta al hacer click sobre el botón aceptar /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Aceptar_Click(object sender, EventArgs e) { _main._itinerarioBase.ContadorTramos++; _tramo_base_slot.Numero_Global++; UnidadBackup bu = new UnidadBackup(_tramo_base_slot, _main._itinerarioBase.FechaInicio); _main._itinerarioBase.ControladorBackups.BackupsLista.Add(bu); Avion avionSeleccionado = _tramo_ini.GetAvion(_tramo_ini.TramoBase.Numero_Ac.ToString()); if (_tramo_ini.Tramo_Previo == null) { if (_tramo_ini.Tramo_Siguiente == null) { avionSeleccionado.Tramo_Raiz = null; avionSeleccionado.Tramo_Actual = null; } else { avionSeleccionado.Tramo_Raiz = _tramo_final.Tramo_Siguiente; avionSeleccionado.Tramo_Actual = _tramo_final.Tramo_Siguiente; if (_tramo_final.Tramo_Siguiente != null) { _tramo_final.Tramo_Siguiente.Tramo_Previo = null; } } } else { if (_tramo_final.Tramo_Siguiente == null) { _tramo_ini.Tramo_Previo.Tramo_Siguiente = null; } else { _tramo_ini.Tramo_Previo.Tramo_Siguiente = _tramo_final.Tramo_Siguiente; _tramo_final.Tramo_Siguiente.Tramo_Previo = _tramo_ini.Tramo_Previo; Tramo aux = _tramo_ini; Avion a = _tramo_ini.GetAvion(_tramo_ini.IdAvionProgramado); while (aux != null && aux != _tramo_final.Tramo_Siguiente) { a.Legs.Remove(aux); aux = aux.Tramo_Siguiente; } } } _tramo_ini.Tramo_Previo = null; _tramo_final.Tramo_Siguiente = null; _main.CargarItinerarioEnListView(null, new EventArgs()); _main.Refresh(); Close(); }
/// <summary> /// Procesa una fila del archivo de itinerario /// </summary> /// <param name="items">Arreglo con la información</param> /// <param name="camposIndices">Diccionario con el número de columna para cada campo leido del itinerario</param> /// <param name="itinerario">Itinerario en construcción</param> /// <param name="fuente">Tipo de origen del itinerario</param> /// <param name="parametros">Objeto de parámetros de la simulación</param> private static void AgregarFila(object[] items, Dictionary <CamposArchivoItinerario, int> camposIndices, Itinerario itinerario, OrigenItinerario fuente, ParametrosSimuLAN parametros) { try { //Carga objeto buffer con la información de la fila. DataObjetoTramoXLS dataObjeto = new DataObjetoTramoXLS(items, camposIndices); #region Carga aeropuertos y aviones //Actualiza aeropuertos if (!itinerario.AeropuertosDictionary.ContainsKey(dataObjeto.origen)) { Aeropuerto a = new Aeropuerto(dataObjeto.origen, 0); itinerario.AgregarAeropuerto(a, dataObjeto.origen); } if (!itinerario.AeropuertosDictionary.ContainsKey(dataObjeto.destino)) { Aeropuerto a = new Aeropuerto(dataObjeto.destino, 0); itinerario.AgregarAeropuerto(a, dataObjeto.destino); } //Carga aviones if (!itinerario.AvionesDictionary.ContainsKey(dataObjeto.idAvion)) { string subFlota = dataObjeto.operador + " " + dataObjeto.acType; //Cargar AcTypes if (!itinerario.AcTypeDictionary.ContainsKey(dataObjeto.acType)) { itinerario.AcTypeDictionary.Add(dataObjeto.acType, new AcType(dataObjeto.acType)); } Avion a = new Avion(dataObjeto.acType, subFlota, dataObjeto.idAvion); itinerario.AgregarAvion(dataObjeto.idAvion, a); } #endregion #region Carga tramos/mantto/backups //procesa las fechas itinerario.ContadorTramos++; DateTime fecha_ini_base = new DateTime(); DateTime fecha_fin_base = new DateTime(); if (_primera_fila) { _primera_fila = false; try { fecha_ini_base = Itinerario.FechaDesdeNumeroSerieExcel(dataObjeto.fechaInicio); fecha_fin_base = Itinerario.FechaDesdeNumeroSerieExcel(dataObjeto.fechaTermino); _tipo_fecha = TipoFecha.Serial; } catch { fecha_ini_base = Convert.ToDateTime(dataObjeto.fechaInicio); fecha_fin_base = Convert.ToDateTime(dataObjeto.fechaTermino); _tipo_fecha = TipoFecha.Texto; } } else { if (_tipo_fecha == TipoFecha.Serial) { fecha_ini_base = Itinerario.FechaDesdeNumeroSerieExcel(dataObjeto.fechaInicio); fecha_fin_base = Itinerario.FechaDesdeNumeroSerieExcel(dataObjeto.fechaTermino); } else { fecha_ini_base = Convert.ToDateTime(dataObjeto.fechaInicio); fecha_fin_base = Convert.ToDateTime(dataObjeto.fechaTermino); } } //Carga tramo base TramoBase tramoBase = new TramoBase(itinerario.ContadorTramos, dataObjeto.idAvion, dataObjeto.idTramoAvion, dataObjeto.numSubFlota, dataObjeto.acType, dataObjeto.operador, dataObjeto.carrier, dataObjeto.idTramoGlobal, dataObjeto.op_suf, dataObjeto.stc, dataObjeto.config_asientos, dataObjeto.origen, fecha_ini_base, dataObjeto.STD.ToString(), dataObjeto.domInt, dataObjeto.destino, fecha_fin_base, dataObjeto.STA.ToString()); //Agrega Backup if (tramoBase.Tipo == TipoTramoBase.Backup) { UnidadBackup bu = new UnidadBackup(tramoBase, itinerario.FechaInicio); itinerario.ControladorBackups.BackupsLista.Add(bu); } //Agrega Mantto else if (tramoBase.Tipo == TipoTramoBase.Mantto) { Avion avion_actual = itinerario.AvionesDictionary[dataObjeto.idAvion]; SlotMantenimiento slotMantto = new SlotMantenimiento(tramoBase, itinerario.AcTypeDictionary[tramoBase.AcType].Flota, avion_actual.Ultimo_Tramo_Agregado, itinerario.FechaInicio); avion_actual.SlotsMantenimiento.Add(slotMantto); //Caso en que hay un mantto programado al inicio del itinerario if (avion_actual.Ultimo_Tramo_Agregado == null) { avion_actual.PrimerSlotEsMantenimiento = true; } else { slotMantto.TramoPrevio.MantenimientoPosterior = slotMantto; } } //Agrega Tramo else { Tramo tramo = new Tramo(tramoBase, itinerario.AvionesDictionary[dataObjeto.idAvion].UltimoTramoAgregado, itinerario.FechaInicio); tramo.GetAvion = itinerario.GetAvion; tramo.GetTurnAroundMinimo = parametros.GetDelegateTurnAroundMin(); itinerario.AvionesDictionary[dataObjeto.idAvion].AgregarTramoEnOrden(tramo); itinerario.Tramos.Add(itinerario.ContadorTramos, tramo); } #endregion } catch (Exception) { throw new Exception("Problemas al cargar itinerario de Excel"); } }