private void BuscarInfo(DateTime fechaInicio, DateTime fechaTermino) { eficienciTotal = new EficienciaPorDiaDto(); detalleEficiencia = new List <DetalleEficienciaDto>(); switch (opcion) { case "Cosecha": eficienciTotal = MovimientoCosechaBusiness.GetEfficiencyPerDay(fechaInicio, fechaTermino); break; case "Secado Inicio": eficienciTotal = MovimientoSecadoBusiness.GetEfficiencyPerDay(fechaInicio, fechaTermino, 1); break; case "Secado Termino": eficienciTotal = MovimientoSecadoBusiness.GetEfficiencyPerDay(fechaInicio, fechaTermino, 2); break; case "Desgrane": eficienciTotal = MovimientoDesgraneBusiness.GetEfficiencyPerDay(fechaInicio, fechaTermino); break; case "Packing": eficienciTotal = MovimientoPackingBusiness.GetEfficiencyPerDay(fechaInicio, fechaTermino); break; case "Shipping": break; default: break; } detalleEficiencia = eficienciTotal.Detalle; dataEuid.DataSource = detalleEficiencia; dataResumen.DataSource = eficienciTotal.Resumen; }
public static EficienciaPorDiaDto GetEfficiencyPerDay(DateTime fechaInicio, DateTime fechaTermino, int tipo) { #region Declaración EficienciaPorDiaDto eficienciaTotal = new EficienciaPorDiaDto(); List <DetalleEficienciaDto> lista = new List <DetalleEficienciaDto>(); DetalleEficienciaDto eficiencia = new DetalleEficienciaDto(); DetalleEficienciaDto separador = new DetalleEficienciaDto(); List <DetalleEficienciaDto> data = new List <DetalleEficienciaDto>(); ResumenEficienciaDto resumen = new ResumenEficienciaDto(); List <ResumenEficienciaDto> listaResumen = new List <ResumenEficienciaDto>(); bool primerUsuario = true; bool primeraFila = true; int sTotalE = 0; int sTotalI = 0; int totalE = 0; int totalI = 0; TimeSpan horaI = new TimeSpan(); TimeSpan horaF = new TimeSpan(); TimeSpan totalHora = new TimeSpan(); TimeSpan paramEuidHora = new TimeSpan(1, 0, 0); string usuario = ""; DateTime dateT = new DateTime(); repository = unitOfWork.Repository <MovimientoSecado>(); repositoryI = unitOfWork.Repository <InfoFieldBook>(); repositoryU = unitOfWork.Repository <Usuario>(); #endregion if (tipo == 1) { data = (from mc in repository.Table from us in repositoryU.Table from inf in repositoryI.Table where mc.fechaInicio >= fechaInicio && mc.fechaInicio <= fechaTermino && mc.usuario == us.nombre_usuario && mc.euid == inf.euid orderby mc.fechaInicio, us.nombre_usuario group mc by new { inf.euid, inf.crop, inf.client, inf.gmoEvent, inf.opExpName, inf.location, inf.projecLead, inf.sag, mc.usuario, mc.fechaInicio, us.nombre, us.apellido } into gcs select new DetalleEficienciaDto { Client = gcs.Key.client, Crop = gcs.Key.crop, Euid = gcs.Key.euid, ExpName = gcs.Key.opExpName, FechaPacking = gcs.Key.fechaInicio, Fecha = (DateTime)DbFunctions.TruncateTime(gcs.Key.fechaInicio), Time = (TimeSpan)DbFunctions.CreateTime(gcs.Key.fechaInicio.Hour, gcs.Key.fechaInicio.Minute, gcs.Key.fechaInicio.Second), GmoEvent = gcs.Key.gmoEvent, Location = gcs.Key.location, ProjectLead = gcs.Key.projecLead, Sag = gcs.Key.sag, Usuario = gcs.Key.usuario, NombreCompleto = gcs.Key.nombre + " " + gcs.Key.apellido }).ToList(); } else if (tipo == 2) { data = (from mc in repository.Table from us in repositoryU.Table from inf in repositoryI.Table where mc.fechaTermino >= fechaInicio && mc.fechaTermino <= fechaTermino && mc.usuario == us.nombre_usuario && mc.euid == inf.euid orderby mc.fechaInicio, us.nombre_usuario group mc by new { inf.euid, inf.crop, inf.client, inf.gmoEvent, inf.opExpName, inf.location, inf.projecLead, inf.sag, mc.usuario, mc.fechaTermino, us.nombre, us.apellido } into gcs select new DetalleEficienciaDto { Client = gcs.Key.client, Crop = gcs.Key.crop, Euid = gcs.Key.euid, ExpName = gcs.Key.opExpName, FechaPacking = (DateTime)gcs.Key.fechaTermino, Fecha = (DateTime)DbFunctions.TruncateTime(gcs.Key.fechaTermino), Time = (TimeSpan)DbFunctions.CreateTime(((DateTime)gcs.Key.fechaTermino).Hour, ((DateTime)gcs.Key.fechaTermino).Minute, ((DateTime)gcs.Key.fechaTermino).Second), GmoEvent = gcs.Key.gmoEvent, Location = gcs.Key.location, ProjectLead = gcs.Key.projecLead, Sag = gcs.Key.sag, Usuario = gcs.Key.usuario, NombreCompleto = gcs.Key.nombre + " " + gcs.Key.apellido }).ToList(); } if (data.Count > 0) { foreach (var item in data) { if (dateT != item.Fecha) { eficiencia.Fecha = item.Fecha; eficiencia.FechaPacking = item.FechaPacking; eficiencia.Usuario = item.Usuario; if (primeraFila) { horaI = item.Time; } if (!primerUsuario) { //Detalle horaF = lista[lista.Count - 1].Time; separador = new DetalleEficienciaDto(); separador.Usuario = "Sub Total"; separador.Euid = sTotalE.ToString("N0", CultureInfo.CurrentCulture); separador.IndEuid = sTotalI.ToString("N0", CultureInfo.CurrentCulture); separador.Time = horaF.Subtract(horaI); totalHora = totalHora.Add(separador.Time); if (separador.Time.TotalMinutes > 0) { var euidHora = 3600 / ((separador.Time.TotalMinutes / sTotalE) * 60); separador.EuidHora = euidHora.ToString("N0", CultureInfo.CurrentCulture); } sTotalE = 0; sTotalI = 0; horaI = item.Time; lista.Add(separador); //Resumen resumen = new ResumenEficienciaDto(); resumen.Usuario = item.Usuario; resumen.Fecha = dateT; resumen.Hora = separador.Time; resumen.NumeroEuid = separador.Euid; resumen.NumeroIndEuid = separador.IndEuid; resumen.EuidHora = separador.EuidHora ?? "0"; listaResumen.Add(resumen); } primerUsuario = false; dateT = item.Fecha; } if (usuario != item.Usuario) { if (!primeraFila) { //Detalle horaF = lista[lista.Count - 1].Time; separador = new DetalleEficienciaDto(); separador.Usuario = "Sub Total"; separador.Euid = sTotalE.ToString("N0", CultureInfo.CurrentCulture); separador.IndEuid = sTotalI.ToString("N0", CultureInfo.CurrentCulture); separador.Time = horaF.Subtract(horaI); totalHora = totalHora.Add(separador.Time); if (separador.Time.TotalMinutes > 0) { var euidHora = 3600 / ((separador.Time.TotalMinutes / sTotalE) * 60); separador.EuidHora = euidHora.ToString("N0", CultureInfo.CurrentCulture); } sTotalE = 0; sTotalI = 0; horaI = item.Time; lista.Add(separador); //Resumen resumen = new ResumenEficienciaDto(); resumen.Usuario = usuario; resumen.Fecha = item.Fecha; resumen.Hora = separador.Time; resumen.NumeroEuid = separador.Euid; resumen.NumeroIndEuid = separador.IndEuid; resumen.EuidHora = separador.EuidHora ?? "0"; listaResumen.Add(resumen); } eficiencia.Usuario = item.Usuario; usuario = item.Usuario; } eficiencia.Euid = item.Euid; eficiencia.IndEuid = item.IndEuid; eficiencia.Crop = item.Crop; eficiencia.Client = item.Client; eficiencia.ProjectLead = item.ProjectLead; eficiencia.Location = item.Location; eficiencia.ExpName = item.ExpName; eficiencia.GmoEvent = item.GmoEvent; eficiencia.Sag = item.Sag; eficiencia.Time = item.Time; if (eficiencia.Euid != "") { sTotalE++; totalE++; } if (eficiencia.IndEuid != "") { sTotalI++; totalI++; } lista.Add(eficiencia); eficiencia = new DetalleEficienciaDto(); primeraFila = false; } //Detalle separador = new DetalleEficienciaDto(); horaF = lista[lista.Count - 1].Time; separador.Usuario = "Sub Total"; separador.Euid = sTotalE.ToString("N0", CultureInfo.CurrentCulture); separador.IndEuid = sTotalI.ToString("N0", CultureInfo.CurrentCulture); separador.Time = horaF.Subtract(horaI); if (separador.Time.TotalMinutes > 0) { var euidHora = 3600 / ((separador.Time.TotalMinutes / sTotalE) * 60); separador.EuidHora = euidHora.ToString("N0", CultureInfo.CurrentCulture); } totalHora = totalHora.Add(separador.Time); sTotalE = 0; sTotalI = 0; lista.Add(separador); //Resumen resumen = new ResumenEficienciaDto(); resumen.Usuario = usuario; resumen.Fecha = dateT; resumen.Hora = separador.Time; resumen.NumeroEuid = separador.Euid; resumen.NumeroIndEuid = separador.IndEuid; resumen.EuidHora = separador.EuidHora ?? "0"; listaResumen.Add(resumen); //Total separador = new DetalleEficienciaDto(); separador.Usuario = "Total"; separador.Euid = totalE.ToString("N0", CultureInfo.CurrentCulture); separador.IndEuid = totalI.ToString("N0", CultureInfo.CurrentCulture); separador.Time = totalHora; if (separador.Time.TotalMinutes > 0) { var euidHora = 3600 / ((separador.Time.TotalMinutes / totalE) * 60); separador.EuidHora = euidHora.ToString("N0", CultureInfo.CurrentCulture); } lista.Add(separador); //Detalle y Resumen eficienciaTotal.Detalle = lista; eficienciaTotal.Resumen = listaResumen; } return(eficienciaTotal); }