public static void HistorificarWebRequestSemana(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 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(); } } } }
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; } } }