/// <summary> /// se ejecuta cuando el boton cargar es precionado /// </summary> /// <param name="sender">object sender</param> /// <param name="e">event args</param> protected void btnCargar_Click(object sender, EventArgs e) { try { BlockControls(false,false); btnLimpiar.Enabled = false; IArchivos archivo = new BusinessLogic(); IVentas ventasBdd = new BusinessLogic(); ISubProductos subproductos = new BusinessLogic(); ICorporaciones corporaciones = new BusinessLogic(); string fileName = Session["FileName"].ToString(); List<ArchivoLeido> resultados = null; List<VENTA> ventas = new List<VENTA>(); USUARIO usuarioConectado = Session["Usuario"] as USUARIO; bool existeProductoLab = false; string mensajeNoExiste = string.Empty; _laboratorios = Session["LaboratoriosTemp"] as List<LABORATORIO>; _corporaciones = Session["CorporacionesTemp"] as List<CORPORACION>; bool isCorp = false; int mes = int.Parse(Session["MesSelected"].ToString()); int year = int.Parse(Session["AñoSelected"].ToString()); switch (RadioOptions.SelectedValue) { case "1": isCorp = true; resultados = archivo.LeerHoja(ddlCorporaciones.Text, fileName); resultados.ForEach(resultado => { existeProductoLab = subproductos.ExisteCodigoLab(resultado.CodigoProductoLaboratorio); if (existeProductoLab) { ventas.Add(new VENTA { CANTIDADVENTA = resultado.CantidadVenta, FECHA = CalculaFechaPeriodo(mes,year), NOMBREINSTITUCION = resultado.NombreInstitucion, IDLABORATORIO = subproductos.ObtenerSubProductoPorCodigoLab(resultado.CodigoProductoLaboratorio).IDLABORATORIO, IDUBICACION = resultado.IdUbicacion == Guid.Empty ? corporaciones.GetIdUbicacionCorporacion(ddlCorporaciones.SelectedValue) : resultado.IdUbicacion, TOTALVENTA = resultado.TotalVenta, ESPUBLICO = checkPublicPrivate.Checked, IDUSUARIO = usuarioConectado.IDUSUARIO, CODIGOSUBPRODUCTO = subproductos.ObtenerSubProductoPorCodigoLab(resultado.CodigoProductoLaboratorio).CODIGOSUBPRODUCTO, IDVENTA = Guid.NewGuid() }); } else { if (string.IsNullOrEmpty(mensajeNoExiste)) mensajeNoExiste = string.Format("El codigo {0} no se encuenta en la base de datos, por favor cree el producto", resultado.CodigoProductoLaboratorio) + "|"; else mensajeNoExiste += string.Format("El codigo {0} no se encuenta en la base de datos, por favor cree el producto", resultado.CodigoProductoLaboratorio) + "|"; } }); break; case "2": resultados = archivo.LeerHoja(ddlLaboratorios.Text, fileName); resultados.ForEach(resultado => { existeProductoLab = subproductos.ExisteCodigoLab(resultado.CodigoProductoLaboratorio); if (existeProductoLab) { ventas.Add(new VENTA { CANTIDADVENTA = resultado.CantidadVenta, FECHA = CalculaFechaPeriodo(mes,year), NOMBREINSTITUCION = resultado.NombreInstitucion, IDLABORATORIO = _laboratorios.FirstOrDefault(x => x.NOMBRELABORATORIO == ddlLaboratorios.SelectedValue).IDLABORATORIO, IDUBICACION = resultado.IdUbicacion == Guid.Empty ? _laboratorios.FirstOrDefault(x => x.NOMBRELABORATORIO == ddlLaboratorios.SelectedValue).IDUBICACION : resultado.IdUbicacion, TOTALVENTA = resultado.TotalVenta, ESPUBLICO = checkPublicPrivate.Checked, IDUSUARIO = usuarioConectado.IDUSUARIO, CODIGOSUBPRODUCTO = subproductos.ObtenerSubProductoPorCodigoLab(resultado.CodigoProductoLaboratorio).CODIGOSUBPRODUCTO, IDVENTA = Guid.NewGuid() }); } else { if (string.IsNullOrEmpty(mensajeNoExiste)) mensajeNoExiste = string.Format("El codigo {0} no se encuenta en la base de datos, por favor cree el producto", resultado.CodigoProductoLaboratorio) + "|"; else mensajeNoExiste += string.Format("El codigo {0} no se encuenta en la base de datos, por favor cree el producto", resultado.CodigoProductoLaboratorio) + "|"; } }); break; } ventasBdd.GuardarVentas(ventas, isCorp); if (string.IsNullOrEmpty(mensajeNoExiste)) { ShowError("Archivo procesado con éxito", false); BlockControls(false, false); btnCargar.Enabled = false; } else { ShowError("El archivo se ha procesado con los siguientes errores:", true); char[] separator = { '|' }; List<string> errorList = mensajeNoExiste.Split(separator).Where(x => !string.IsNullOrEmpty(x)).ToList(); Errores.DataSource = errorList; Errores.DataBind(); Errores.Visible = true; } btnLimpiar.Enabled = true; } catch (Exception ex) { btnLimpiar.Enabled = true; ShowError(ex.Message, true); } }