Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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");
            }
        }