/// <summary>
 /// Constructor del objecto
 /// </summary>
 /// <param name="nombre">Nombre de la disrucpión asociada</param>
 /// <param name="headers">Encabezados</param>
 /// <param name="agnoIni">Año inicial de consulta</param>
 /// <param name="funcion">Función de BD</param>
 public ObjetoActualizacionFactores(TipoDisrupcion nombre, List <string> headers, int agnoIni, string funcion)
 {
     this._headers = headers;
     this._agnoIni = agnoIni;
     this._funcion = funcion;
     this._nombre  = nombre;
 }
 /// <summary>
 /// Retorna la cantidad de periodos del día en que se divide la curva de un tipo de disrupción
 /// </summary>
 /// <param name="tipo">Tipo de disrupción</param>
 /// <returns></returns>
 private int GetPeriodos(TipoDisrupcion tipo)
 {
     if (tipo == TipoDisrupcion.ATC)
     {
         return(8);
     }
     else if (tipo == TipoDisrupcion.METEREOLOGIA)
     {
         return(4);
     }
     else if (tipo == TipoDisrupcion.OTROS)
     {
         return(12);
     }
     else if (tipo == TipoDisrupcion.RECURSOS_DEL_APTO)
     {
         return(6);
     }
     else if (tipo == TipoDisrupcion.TA_BAJO_ALA)
     {
         return(12);
     }
     else if (tipo == TipoDisrupcion.TA_SOBRE_ALA)
     {
         return(12);
     }
     else if (tipo == TipoDisrupcion.TRIPULACIONES)
     {
         return(6);
     }
     else
     {
         return(1);
     }
 }
 internal void AgregarAtraso(TipoDisrupcion tipo, double atraso)
 {
     if (atraso > 0)
     {
         this._atraso_por_disrupcion.Add(tipo, atraso);
     }
 }
 private double ObtenerAtraso(TipoDisrupcion tipo)
 {
     if (_atraso_por_disrupcion != null && _atraso_por_disrupcion.ContainsKey(tipo))
     {
         return _atraso_por_disrupcion[tipo];
     }
     else
     {
         return 0;
     }
 }
 public double ObtenerImpuntualidad(TipoDisrupcion tipo,int std)
 {
     if (_impuntualidad_por_disrupcion_std != null 
         && _impuntualidad_por_disrupcion_std.ContainsKey(std)
         && _impuntualidad_por_disrupcion_std[std].ContainsKey(tipo))
     {
         return _impuntualidad_por_disrupcion_std[std][tipo];
     }
     else
     {
         return 0;
     }
 } 
 /// <summary>
 /// Retorna la función de BD correspondiente a cada tipo de disrupción
 /// </summary>
 /// <param name="tipo">Tipo de disrupción</param>
 /// <returns></returns>
 private string GetFuncion(TipoDisrupcion tipo)
 {
     if (tipo == TipoDisrupcion.ADELANTO)
     {
         return("Fnc_Adelanto");
     }
     else if (tipo == TipoDisrupcion.ATC)
     {
         return("Fnc_Calibracion_Mes_Origen_Periodo");
     }
     else if (tipo == TipoDisrupcion.HBT)
     {
         return("Fnc_Calibracion_HBT");
     }
     else if (tipo == TipoDisrupcion.MANTENIMIENTO)
     {
         return("Fnc_Calibracion_Mantto");
     }
     else if (tipo == TipoDisrupcion.METEREOLOGIA)
     {
         return("Fnc_Calibracion_Mes_Origen_Periodo");
     }
     else if (tipo == TipoDisrupcion.OTROS)
     {
         return("Func_Calibracion_Origen_Periodo");
     }
     else if (tipo == TipoDisrupcion.RECURSOS_DEL_APTO)
     {
         return("Func_Calibracion_Origen_Periodo");
     }
     else if (tipo == TipoDisrupcion.TA_BAJO_ALA)
     {
         return("Func_Calibracion_Origen_Periodo");
     }
     else if (tipo == TipoDisrupcion.TA_SOBRE_ALA)
     {
         return("Func_Calibracion_Origen_Periodo");
     }
     else if (tipo == TipoDisrupcion.TRIPULACIONES)
     {
         return("Func_Calibracion_Origen_Periodo");
     }
     else
     {
         return("");
     }
 }