Exemple #1
0
        public static void HistorificarDatosSemanas(int periodo, int anyo)
        {
            DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
            Calendar           cal = dfi.Calendar;

            using (var db = new DATA_DYNAEntities())
            {
                int semanaActual = cal.GetWeekOfYear(DateTime.Now, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);

                DateTime fechaInicial = new Week(anyo, periodo).FirstDayOfWeek;
                DateTime fechaFin     = new Week(anyo, periodo).LastDayOfWeek.AddDays(1);

                //HISTORIFICACION DE MÉTODOS
                var query = db.DatosDynatraceSemana.Where(s => s.Semana == periodo && s.Anyo == anyo).FirstOrDefault <DatosDynatraceSemana>();
                if (query != null) //Ya se ha historificado
                {
                    Registro.Mensaje(string.Format("La semana {0} ya está historificada", periodo));
                    return;
                }
                else //Historificamos la semana
                {
                    var datosBruto = db.DatosDynatrace.Where(p => p.Fecha_dato >= fechaInicial && p.Fecha_dato < fechaFin).GroupBy(s => new { s.Metrica, s.Canal }).ToList();
                    foreach (var row in datosBruto)
                    {
                        float  numPromedioTotal  = 0;
                        float  numPercentilTotal = 0;
                        float  promedioTotal     = 0;
                        float  percentilTotal    = 0;
                        float  excepcionTotal    = 0;
                        int    dias            = 0;
                        var    registroSemanal = new DatosDynatraceSemana();
                        string metrica         = "";
                        string canal           = "";

                        foreach (var col in row)
                        {
                            numPromedioTotal  = numPromedioTotal + col.NumPromedio;
                            numPercentilTotal = numPercentilTotal + col.NumPercentil;
                            promedioTotal     = promedioTotal + col.Promedio;
                            percentilTotal    = percentilTotal + col.Percentil95;
                            excepcionTotal    = excepcionTotal + col.Excepciones;
                            metrica           = col.Metrica;
                            canal             = col.Canal;

                            if (col.Promedio != 0)
                            {
                                dias++;
                            }
                        }
                        registroSemanal.NumPromedio      = numPromedioTotal;
                        registroSemanal.NumPercentil     = numPercentilTotal;
                        registroSemanal.Promedio         = (dias == 0) ? 0 : promedioTotal / dias;
                        registroSemanal.Percentil95      = (dias == 0) ? 0 : percentilTotal / dias;
                        registroSemanal.Excepciones      = excepcionTotal;
                        registroSemanal.Metrica          = metrica;
                        registroSemanal.Canal            = canal;
                        registroSemanal.Semana           = periodo;
                        registroSemanal.NumDiasActividad = dias;
                        registroSemanal.Anyo             = anyo;
                        db.DatosDynatraceSemana.Add(registroSemanal);
                        db.SaveChanges();
                    }
                }
            }
        }
Exemple #2
0
        public static void Calcula(int operacion, int periodo, int anyo)
        {
            DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
            Calendar           cal = dfi.Calendar;

            using (var db = new DATA_DYNAEntities())
            {
                if (operacion.Equals(1)) //Historificamos semanas
                {
                    int semanaActual = cal.GetWeekOfYear(DateTime.Now, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);

                    /*
                     * if (semanaActual <= periodo)
                     * {
                     *  Registro.Mensaje(string.Format("No se puede historificar la semana {0} hasta que haya acabado", semanaActual));
                     *  return;
                     * }
                     */

                    //IFormatProvider culture = new CultureInfo("en-ES", true);

                    DateTime fechaInicial = new Week(anyo, periodo).FirstDayOfWeek;
                    DateTime fechaFin     = new Week(anyo, periodo).LastDayOfWeek.AddDays(1);

                    //HISTORIFICACION DE MÉTODOS
                    var query = db.DatosDynatraceSemana.Where(s => s.Semana == periodo && s.Anyo == anyo).FirstOrDefault <DatosDynatraceSemana>();
                    if (query != null) //Ya se ha historificado
                    {
                        Registro.Mensaje(string.Format("La semana {0} ya está historificada", periodo));
                        return;
                    }
                    else //Historificamos la semana
                    {
                        var datosBruto = db.DatosDynatrace.Where(p => p.Fecha_dato >= fechaInicial && p.Fecha_dato < fechaFin).GroupBy(s => new { s.Metrica, s.Canal }).ToList();
                        foreach (var row in datosBruto)
                        {
                            float  numPromedioTotal  = 0;
                            float  numPercentilTotal = 0;
                            float  promedioTotal     = 0;
                            float  percentilTotal    = 0;
                            float  excepcionTotal    = 0;
                            int    dias            = 0;
                            var    registroSemanal = new DatosDynatraceSemana();
                            string metrica         = "";
                            string canal           = "";

                            foreach (var col in row)
                            {
                                numPromedioTotal  = numPromedioTotal + col.NumPromedio;
                                numPercentilTotal = numPercentilTotal + col.NumPercentil;
                                promedioTotal     = promedioTotal + col.Promedio;
                                percentilTotal    = percentilTotal + col.Percentil95;
                                excepcionTotal    = excepcionTotal + col.Excepciones;
                                metrica           = col.Metrica;
                                canal             = col.Canal;

                                if (col.Promedio != 0)
                                {
                                    dias++;
                                }
                            }
                            registroSemanal.NumPromedio      = numPromedioTotal;
                            registroSemanal.NumPercentil     = numPercentilTotal;
                            registroSemanal.Promedio         = (dias == 0) ? 0 : promedioTotal / dias;
                            registroSemanal.Percentil95      = (dias == 0) ? 0 : percentilTotal / dias;
                            registroSemanal.Excepciones      = excepcionTotal;
                            registroSemanal.Metrica          = metrica;
                            registroSemanal.Canal            = canal;
                            registroSemanal.Semana           = periodo;
                            registroSemanal.NumDiasActividad = dias;
                            registroSemanal.Anyo             = anyo;
                            db.DatosDynatraceSemana.Add(registroSemanal);
                            db.SaveChanges();
                        }
                    }

                    //HISTORIFICACION DE WEBREQUEST
                    var query2 = db.WebRequestsDynatraceSemana.Where(s => s.Semana == periodo && s.Anyo == anyo).FirstOrDefault <WebRequestsDynatraceSemana>();
                    if (query2 != null) //Ya se ha historificado
                    {
                        Registro.Mensaje(string.Format("La semana {0} ya está historificada", periodo));
                        return;
                    }
                    else //Historificamos la semana
                    {
                        var datosBruto2 = db.WebRequestsDynatrace.Where(p => p.Fecha_dato >= fechaInicial && p.Fecha_dato < fechaFin).GroupBy(s => new { s.URI, s.Canal }).ToList();
                        foreach (var row in datosBruto2)
                        {
                            float  numTotal        = 0;
                            float  tasaFalloTotal  = 0;
                            int    dias            = 0;
                            var    registroSemanal = new WebRequestsDynatraceSemana();
                            string URI             = "";
                            string canal           = "";

                            foreach (var col in row)
                            {
                                numTotal       = numTotal + col.Numero;
                                tasaFalloTotal = tasaFalloTotal + col.TasaFallo;
                                URI            = col.URI;
                                canal          = col.Canal;

                                if (col.Numero != 0)
                                {
                                    dias++;
                                }
                            }
                            registroSemanal.TasaFallo        = tasaFalloTotal / dias;
                            registroSemanal.Numero           = (int)numTotal;
                            registroSemanal.URI              = URI;
                            registroSemanal.Canal            = canal;
                            registroSemanal.Semana           = periodo;
                            registroSemanal.Anyo             = anyo;
                            registroSemanal.NumDiasActividad = dias;
                            db.WebRequestsDynatraceSemana.Add(registroSemanal);
                            db.SaveChanges();
                        }
                    }
                }

                else if (operacion.Equals(2)) //Historificamos meses
                {
                    //int mesActual = cal.GetMOnthOfYear(DateTime.Now, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);
                    int mesActual = DateTime.Now.Month;

                    /*
                     * if (mesActual <= periodo)
                     * {
                     *  Registro.Mensaje(string.Format("No se puede historificar el mes {0} hasta que haya acabado", mesActual));
                     *  return;
                     * }
                     */

                    //IFormatProvider culture = new CultureInfo("en-ES", true);

                    DateTime fechaInicial = new DateTime(anyo, periodo, 1);
                    DateTime fechaFin     = fechaInicial.AddMonths(1).AddDays(-1);
                    //HISTORIFICACION DE MÉTODOS
                    var query = db.DatosDynatraceMes.Where(s => s.Mes == periodo && s.Anyo == anyo).FirstOrDefault <DatosDynatraceMes>();
                    if (query != null) //Ya se ha historificado
                    {
                        Registro.Mensaje(string.Format("El mes {0} ya está historificado", periodo));
                        return;
                    }
                    else //Historificamos el mes
                    {
                        var datosBruto = db.DatosDynatrace.Where(p => p.Fecha_dato >= fechaInicial && p.Fecha_dato < fechaFin).GroupBy(s => new { s.Metrica, s.Canal }).ToList();
                        foreach (var row in datosBruto)
                        {
                            float  numPromedioTotal  = 0;
                            float  numPercentilTotal = 0;
                            float  promedioTotal     = 0;
                            float  percentilTotal    = 0;
                            float  excepcionTotal    = 0;
                            int    dias            = 0;
                            var    registroMensual = new DatosDynatraceMes();
                            string metrica         = "";
                            string canal           = "";

                            foreach (var col in row)
                            {
                                numPromedioTotal  = numPromedioTotal + col.NumPromedio;
                                numPercentilTotal = numPercentilTotal + col.NumPercentil;
                                promedioTotal     = promedioTotal + col.Promedio;
                                percentilTotal    = percentilTotal + col.Percentil95;
                                excepcionTotal    = excepcionTotal + col.Excepciones;
                                metrica           = col.Metrica;
                                canal             = col.Canal;

                                if (col.Promedio != 0)
                                {
                                    dias++;
                                }
                            }
                            registroMensual.NumPromedio      = numPromedioTotal;
                            registroMensual.NumPercentil     = numPercentilTotal;
                            registroMensual.Promedio         = (dias == 0) ? 0 : promedioTotal / dias;
                            registroMensual.Percentil95      = (dias == 0) ? 0 : percentilTotal / dias;
                            registroMensual.Excepciones      = excepcionTotal;
                            registroMensual.Metrica          = metrica;
                            registroMensual.Canal            = canal;
                            registroMensual.Mes              = periodo;
                            registroMensual.NumDiasActividad = dias;
                            registroMensual.Anyo             = anyo;
                            db.DatosDynatraceMes.Add(registroMensual);
                            db.SaveChanges();
                        }
                    }

                    //HISTORIFICACION DE WEBREQUEST
                    var query2 = db.WebRequestsDynatraceMes.Where(s => s.Mes == periodo && s.Anyo == anyo).FirstOrDefault <WebRequestsDynatraceMes>();
                    if (query2 != null) //Ya se ha historificado
                    {
                        Registro.Mensaje(string.Format("El mes {0} ya está historificado", periodo));
                        return;
                    }

                    else //Historificamos el mes
                    {
                        var datosBruto2 = db.WebRequestsDynatrace.Where(p => p.Fecha_dato >= fechaInicial && p.Fecha_dato < fechaFin).GroupBy(s => new { s.URI, s.Canal }).ToList();
                        foreach (var row in datosBruto2)
                        {
                            float  numTotal        = 0;
                            float  tasaFalloTotal  = 0;
                            int    dias            = 0;
                            var    registroMensual = new WebRequestsDynatraceMes();
                            string URI             = "";
                            string canal           = "";

                            foreach (var col in row)
                            {
                                numTotal       = numTotal + col.Numero;
                                tasaFalloTotal = tasaFalloTotal + col.TasaFallo;
                                URI            = col.URI;
                                canal          = col.Canal;

                                if (col.Numero != 0)
                                {
                                    dias++;
                                }
                            }
                            registroMensual.TasaFallo        = tasaFalloTotal / dias;
                            registroMensual.Numero           = numTotal;
                            registroMensual.URI              = URI;
                            registroMensual.Canal            = canal;
                            registroMensual.Mes              = periodo;
                            registroMensual.NumDiasActividad = dias;
                            registroMensual.Anyo             = anyo;
                            db.WebRequestsDynatraceMes.Add(registroMensual);
                            db.SaveChanges();
                        }
                    }
                }
                else
                {
                    return;
                }
            }
        }