Exemplo n.º 1
0
        /// <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);
            }
        }