protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    calFechaPublicacion.SelectedDate = DateTime.Today;
                    calFechaPublicacion.VisibleDate  = calFechaPublicacion.SelectedDate;

                    ddlArticulo.DataSource     = LogicaArticulo.ListarArticulos();
                    ddlArticulo.DataTextField  = "ATexto";
                    ddlArticulo.DataValueField = "Id";
                    ddlArticulo.DataBind();

                    if (ddlArticulo.Items.Count == 0)
                    {
                        lblMensaje.Text = "¡Atención! No hay artículos disponibles.";
                    }
                }

                txtNumero.Focus();
            }
            catch (ExcepcionSistema ex)
            {
                lblMensaje.Text = "¡Error! " + ex.Message;
            }
            catch (Exception ex)
            {
                lblMensaje.Text = "¡Error! Ocurrió un error al cargar la página.";
            }
        }
        protected void btnDarBaja_Click(object sender, EventArgs e)
        {
            try
            {
                int id;

                try
                {
                    id = Convert.ToInt32(txtId.Text);
                }
                catch (Exception ex)
                {
                    throw new ExcepcionPresentacion("El Id no es un número entero válido.");
                }

                LogicaArticulo.DarBajaArticulo(id);

                limpiarFormulario();

                lblMensaje.Text = "☺¡Artículo dado de baja con éxito!";
            }
            catch (ExcepcionSistema ex)
            {
                lblMensaje.Text = ex.Message;
            }
            catch (Exception ex)
            {
                lblMensaje.Text = "¡Error! Ocurrió un error al dar de baja el artículo.";
            }
        }
        protected void cargarArticulos()
        {
            if (ddlFuente.SelectedIndex != -1)
            {
                List <Articulo> articulos = LogicaArticulo.ListarArticulosXFuente(Convert.ToInt32(ddlFuente.SelectedValue));

                List <Articulo> ar = new List <Articulo>();

                foreach (Articulo a in articulos)
                {
                    if (!pertenece(ar, a))
                    {
                        ar.Add(a);
                    }
                }

                grdArticulos.DataSource = ar;
                grdArticulos.DataBind();
                lblMensaje.Text = "";
                if (ar.Count == 0)
                {
                    lblMensaje.Text = "No se han encontrado resultados para tu búsqueda ";
                }
            }
        }
Exemple #4
0
    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        try
        {
            long codigoBarras;

            try
            {
                codigoBarras = Convert.ToInt64(txtCodigoBarras.Text.Trim());
            }
            catch
            {
                throw new ExcepcionPresentacion("El Código de barras no es válido.");
            }

            buscar = false;//busca solo los articulos no eliminados de la base de datos

            Articulo articulo = LogicaArticulo.Buscar(codigoBarras, buscar);

            if (articulo != null)
            {
                txtNombre.Text              = articulo.Nombre;
                txtPrecio.Text              = articulo.Precio.ToString();
                txtStock.Text               = articulo.Stock.ToString();
                txtDescripcion.Text         = articulo.Descripcion;
                imgImagen.ImageUrl          = articulo.Imagen;
                ddlCategorias.SelectedValue = articulo.Categoria.Nombre;

                AparecerDesaparecerBotonesBuscarNoNULL();

                Panel1.Visible       = true;
                lblMensaje.ForeColor = System.Drawing.Color.Green;
                lblMensaje.Text      = "¡Articulo Encontrado!";
            }
            else
            {
                AparecerDesaparecerBotonesBuscarNULL();

                Panel1.Visible       = true;
                lblMensaje.ForeColor = System.Drawing.Color.Red;
                lblMensaje.Text      = "No se encontró ningún Articulo con el Código de Barras " + codigoBarras + ", si lo desea puede agregar un articulo con ese codigo.";
            }
        }
        catch (ApplicationException ex)
        {
            Panel1.Visible       = true;
            lblMensaje.ForeColor = System.Drawing.Color.Red;
            lblMensaje.Text      = "¡ERROR! " + ex.Message;
        }
        catch
        {
            Panel1.Visible       = true;
            lblMensaje.ForeColor = System.Drawing.Color.Red;
            lblMensaje.Text      = "¡ERROR! Se produjo un error al buscar el Articulo.";
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            Panel2.Visible = false;

            List <Articulo> Articulos = LogicaArticulo.Listar(false);

            DataTable dtArticulos = new DataTable();
            dtArticulos.Columns.Add(new DataColumn("CodigoBarras"));
            dtArticulos.Columns.Add(new DataColumn("Imagen"));
            dtArticulos.Columns.Add(new DataColumn("Nombre"));
            dtArticulos.Columns.Add(new DataColumn("Precio"));
            dtArticulos.Columns.Add(new DataColumn("Stock"));
            dtArticulos.Columns.Add(new DataColumn("Categoria"));


            foreach (Articulo a in Articulos)
            {
                DataRow drwArticulos = dtArticulos.NewRow();
                drwArticulos["CodigoBarras"] = a.CodigoBarras;
                drwArticulos["Imagen"]       = a.Imagen;
                drwArticulos["Nombre"]       = a.Nombre;
                drwArticulos["Precio"]       = a.Precio;
                drwArticulos["Stock"]        = a.Stock;
                CategoriaArticulo categoria = a.Categoria;
                drwArticulos["categoria"] = categoria.Nombre;

                dtArticulos.Rows.Add(drwArticulos);
            }

            gvArticulos.DataSource = dtArticulos;

            if (Session["CodigoArticulo"] != null)
            {
                gvArticulos.PageIndex = ultimaPagina;
            }

            gvArticulos.DataBind();
        }
        catch (ApplicationException ex)
        {
            lblMensaje.ForeColor = System.Drawing.Color.Red;
            lblMensaje.Text      = "¡Error! " + ex.Message;
        }

        catch
        {
            lblMensaje.ForeColor = System.Drawing.Color.Red;
            lblMensaje.Text      = "¡Error! Al cargar la pagina, no se encontro el repositorio de base de datos.";
        }
    }
        protected void btnModificar_Click(object sender, EventArgs e)
        {
            try
            {
                int id;

                try
                {
                    id = Convert.ToInt32(txtId.Text);
                }
                catch (Exception ex)
                {
                    throw new ExcepcionPresentacion("El Id no es un número entero válido.");
                }

                Fuente fuente            = LogicaFuente.BuscarFuente(Convert.ToInt32(ddlFuente.SelectedValue));
                string seccion           = txtSeccion.Text;
                bool   imagenIlustrativa = chkImagenIlustrativa.Checked;

                decimal costo;

                try
                {
                    costo = Convert.ToDecimal(txtCosto.Text);
                }
                catch (Exception ex)
                {
                    throw new ExcepcionPresentacion("El Costo no es un número decimal válido.");
                }

                string contenido = txtContenido.Text;

                Articulo articulo = new Articulo(id, seccion, imagenIlustrativa, costo, contenido, fuente);

                LogicaArticulo.ModificarArticulo(articulo);

                limpiarFormulario();

                lblMensaje.Text = "☺¡Artículo modificado con éxito!";
            }
            catch (ExcepcionSistema ex)
            {
                lblMensaje.Text = ex.Message;
            }
            catch (Exception ex)
            {
                lblMensaje.Text = "¡Error! Ocurrió un error al modificar el artículo.";
            }
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            Response.CacheControl = "no-cache";

            if (Session["CodigoArticulo"] == null)
            {
                Session["Mensaje"] = "¡ERROR! Para acceder a los detalles de articulos debe seleccionar un link de detalles.";
                Response.Redirect("~/Error.aspx");
            }

            long codigo = (long)Session["CodigoArticulo"];
            bool buscar = false;

            Articulo          articulo  = LogicaArticulo.Buscar(codigo, buscar);
            CategoriaArticulo categoria = articulo.Categoria;

            if (articulo != null)
            {
                txtcodigoBarras.Text = articulo.CodigoBarras.ToString();
                lblNombre.Text       = articulo.Nombre;
                txtPrecio.Text       = "USD " + articulo.Precio.ToString() + "   Contado.";
                txtStock.Text        = articulo.Stock.ToString();
                lblDescripcion.Text  = articulo.Descripcion;
                txtCategoria.Text    = articulo.Categoria.Nombre;
                imgFoto.ImageUrl     = articulo.Imagen;
            }
            else
            {
                lblMensaje.ForeColor = System.Drawing.Color.Red;
                lblMensaje.Text      = "No se encontró el articulo con el código de barras " + codigo + ".";
            }

            Panel2.Visible = false;
        }
        catch (ApplicationException ex)
        {
            lblMensaje.ForeColor = System.Drawing.Color.Red;
            lblMensaje.Text      = "¡Error! " + ex.Message;
        }
        catch
        {
            lblMensaje.ForeColor = System.Drawing.Color.Red;
            lblMensaje.Text      = "¡Error! No se pudo mostrar el articulo.";
        }
    }
        protected void btnModificar_Click(object sender, EventArgs e)
        {
            try
            {
                int numero;

                try
                {
                    numero = Convert.ToInt32(txtNumero.Text);
                }
                catch (Exception ex)
                {
                    throw new ExcepcionPresentacion("El Id no es un número entero válido.");
                }

                DateTime fechaPublicacion = calFechaPublicacion.SelectedDate;

                Edicion edicion = new Edicion(numero, fechaPublicacion);

                Articulo articulo;

                foreach (ListItem li in lstArticulos.Items)
                {
                    articulo = LogicaArticulo.BuscarArticulo(Convert.ToInt32(li.Value));

                    edicion.AgregarArticulo(articulo);
                }

                LogicaEdicion.ModificarEdicion(edicion);

                limpiarFormulario();

                lblMensaje.Text = "☺¡Edición modificada con éxito!";
            }
            catch (ExcepcionSistema ex)
            {
                lblMensaje.Text = "¡Error! " + ex.Message;
            }
            catch (Exception ex)
            {
                lblMensaje.Text = "¡Error! Ocurrió un error al modificar la edición.";
            }
        }
    protected void gvArticulos_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "AgregarCarrito")
        {
            List <LineaPedido> lineasDePedido = new List <LineaPedido>();

            if ((List <LineaPedido>)Session["CarritoLineaPedido"] != null)
            {
                lineasDePedido = (List <LineaPedido>)Session["CarritoLineaPedido"];
            }

            LineaPedido nuevaLinea = new LineaPedido();

            int         index          = Convert.ToInt32(e.CommandArgument);
            GridViewRow row            = gvArticulos.Rows[index];
            long        codigoArticulo = Convert.ToInt64(row.Cells[0].Text);

            Articulo articulo = LogicaArticulo.Buscar(codigoArticulo, false);

            if (articulo.Stock >= 1)
            {
                nuevaLinea.Cantidad = 1;
            }
            else
            {
                lblAgregado.ForeColor = System.Drawing.Color.Red;
                lblAgregado.Text      = "Lo sentimos pero ya no hay stock de el producto.";
                Panel2.Visible        = true;
            }

            nuevaLinea.Numero    = lineasDePedido.Count;
            nuevaLinea.PArticulo = articulo;

            lineasDePedido.Add(nuevaLinea);

            Session["CarritoLineaPedido"] = lineasDePedido;

            lblAgregado.ForeColor = System.Drawing.Color.Green;
            lblAgregado.Text      = "Producto Agregado con exito a su carrito de compras.";
            Panel2.Visible        = true;
            //Response.Redirect("~/Ofertas.aspx");
        }
    }
        protected void btnDarAlta_Click(object sender, EventArgs e)
        {
            try
            {
                Fuente fuente            = LogicaFuente.BuscarFuente(Convert.ToInt32(ddlFuente.SelectedValue));
                string seccion           = txtSeccion.Text;
                bool   imagenIlustrativa = chkImagenIlustrativa.Checked;

                decimal costo;

                try
                {
                    costo = Convert.ToDecimal(txtCosto.Text);
                }
                catch (Exception ex)
                {
                    throw new ExcepcionPresentacion("El Costo no es un número decimal válido.");
                }

                string contenido = txtContenido.Text;

                Articulo articulo = new Articulo(0, seccion, imagenIlustrativa, costo, contenido, fuente);

                int id;
                LogicaArticulo.DarAltaArticulo(articulo, out id);

                limpiarFormulario();
                txtId.Text      = id.ToString();
                lblMensaje.Text = "☺¡Artículo dado de alta con éxito con Id: " + id + "!";
                txtId.Focus();
            }
            catch (ExcepcionSistema ex)
            {
                lblMensaje.Text = ex.Message;
            }
            catch (Exception ex)
            {
                lblMensaje.Text = "¡Error! Ocurrió un error al dar de alta el artículo.";
            }
        }
    protected void CargarGridXBsqueda()
    {
        string nombreBuscado = "%" + (string)Session["NombreBuscado"] + "%";
        bool   tipoBusqueda  = false;

        if (ddlOrdenXPrecio.SelectedValue == "SinOrdenar")
        {
            ddlOrdenXCategoria.Enabled = false;
        }

        List <Articulo> articulos = LogicaArticulo.BuscarXNombre(nombreBuscado, tipoBusqueda);

        seleccionDeOrdenamiento = "MayorAMenor";

        if (ddlOrdenXPrecio.SelectedValue == "MenorAMayor")
        {
            seleccionDeOrdenamiento = "MenorAMayor";
            tipoBusqueda            = true;
            articulos = LogicaArticulo.BuscarXNombre(nombreBuscado, tipoBusqueda);
        }

        if (articulos.Count == 0) //si la categoria no tiene articulos se muestra un mensaje y se vacia el gridview anterior
        {
            DataTable dtSinArticulos = new DataTable();

            gvArticulos.DataSource = dtSinArticulos;
            gvArticulos.DataBind();
            Panel1.Visible   = true;
            lblBuscando.Text = ((string)Session["NombreBuscado"]).ToUpper();

            throw new ExcepcionPresentacion("No se encontro ningun articulo con el nombre: " + ((string)Session["NombreBuscado"]).ToUpper());
        }

        Cargar1(articulos);
        Panel1.Visible   = true;
        lblBuscando.Text = ((string)Session["NombreBuscado"]).ToUpper();
        Session.Remove("CodigoArticulo");
        Session["SeleccionDeOrenamiento"] = seleccionDeOrdenamiento;
    }
        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                int id;
                try
                {
                    id = Convert.ToInt32(txtId.Text);
                }
                catch (Exception ex)
                {
                    throw new ExcepcionPresentacion("El Id no es un número entero válido.");
                }


                limpiarFormulario();
                Articulo articulo = LogicaArticulo.BuscarArticulo(id);


                txtId.Text = articulo.Id.ToString();
                ddlFuente.SelectedValue      = articulo.Fuente.Id.ToString();
                txtSeccion.Text              = articulo.Seccion;
                chkImagenIlustrativa.Checked = articulo.ImagenIlustrativa;
                txtCosto.Text     = articulo.Costo.ToString();
                txtContenido.Text = articulo.Contenido;

                lblMensaje.Text = "☺¡Artículo encontrado!";
                txtId.Focus();
            }
            catch (ExcepcionSistema ex)
            {
                lblMensaje.Text = ex.Message;
            }
            catch (Exception ex)
            {
                lblMensaje.Text = "¡Error! Ocurrió un error al buscar el artículo.";
            }
        }
Exemple #13
0
    protected void btnAceptar_Click(object sender, EventArgs e)
    {
        switch (opcion)
        {
        case "Modificar":
            try
            {
                long codigoBarras = Convert.ToInt64(txtCodigoBarras.Text.Trim());

                string nombre = txtNombre.Text.Trim();

                if (string.IsNullOrEmpty(nombre))
                {
                    throw new ExcepcionLogica("El Nombre del articulo no puede quedar vacío.");
                }

                double precio;

                try
                {
                    precio = Convert.ToDouble(txtPrecio.Text.Trim());
                }
                catch
                {
                    throw new ExcepcionPresentacion("El Precio no es válido.");
                }

                int stock;

                try
                {
                    stock = Convert.ToInt32(txtStock.Text.Trim());
                }
                catch
                {
                    throw new ExcepcionPresentacion("El Stock no es válido.");
                }

                string descripcion = txtDescripcion.Text.Trim();

                if (string.IsNullOrEmpty(descripcion))
                {
                    throw new ExcepcionLogica("La descripcion del articulo no puede quedar vacía.");
                }

                string nombreCategoria = ddlCategorias.SelectedValue;

                if (nombreCategoria == "Ninguno")
                {
                    throw new ExcepcionPresentacion("Debe seleccionar una categoria de la lista.");
                }

                bool buscarCategoria        = false;
                CategoriaArticulo categoria = LogicaCategoriaArticulo.Buscar(nombreCategoria, buscarCategoria);

                buscar = false;
                Articulo articuloImagen = LogicaArticulo.Buscar(codigoBarras, buscar);

                string origenImagen  = fuOrigenImagen.PostedFile.FileName;
                string destinoImagen = articuloImagen.Imagen;     //si no se proporciona una direccion de imagen queda la que tenia anteriormente

                if (origenImagen != string.Empty)
                {
                    string eliminarImagen = Server.MapPath(articuloImagen.Imagen);

                    if (System.IO.File.Exists(eliminarImagen) == true)
                    {
                        System.IO.File.Delete(eliminarImagen);
                    }

                    string nombreImagen = txtCodigoBarras.Text.Trim() + System.IO.Path.GetFileName(origenImagen);
                    destinoImagen = Server.MapPath("~/uploads/articulos/") + nombreImagen;

                    System.IO.File.Copy(origenImagen, destinoImagen, true);

                    destinoImagen = "~/uploads/articulos/" + nombreImagen;
                }

                bool eliminado = false;

                Articulo articulo = new Articulo(codigoBarras, nombre, precio, stock, descripcion, destinoImagen, categoria, eliminado);

                LogicaArticulo.Modificar(articulo);

                AparecerDesaparecerBotonesAceptar();

                Panel1.Visible       = true;
                lblMensaje.ForeColor = System.Drawing.Color.Green;
                lblMensaje.Text      = "¡Articulo modificado con éxito!";
            }

            catch (ApplicationException ex)
            {
                Panel1.Visible       = true;
                lblMensaje.ForeColor = System.Drawing.Color.Red;
                lblMensaje.Text      = "¡Error! " + ex.Message;
            }

            catch
            {
                Panel1.Visible       = true;
                lblMensaje.ForeColor = System.Drawing.Color.Red;
                lblMensaje.Text      = "¡Error! No se pudo modificar el Articulo.";
            }
            break;

        case "Eliminar":
            try
            {
                long codigoBarras = Convert.ToInt64(txtCodigoBarras.Text.Trim());

                string nombre = txtNombre.Text.Trim();

                bool     buscarArticulo = false;
                Articulo articuloImagen = LogicaArticulo.Buscar(codigoBarras, buscarArticulo);

                LogicaArticulo.Eliminar(codigoBarras);

                string eliminarImagen = Server.MapPath(articuloImagen.Imagen);

                if (System.IO.File.Exists(eliminarImagen) == true)
                {
                    System.IO.File.Delete(eliminarImagen);
                }

                AparecerDesaparecerBotonesAceptar();

                Panel1.Visible       = true;
                lblMensaje.ForeColor = System.Drawing.Color.Green;
                lblMensaje.Text      = "¡Articulo eliminado con éxito!";
            }
            catch (ApplicationException ex)
            {
                Panel1.Visible       = true;
                lblMensaje.ForeColor = System.Drawing.Color.Red;
                lblMensaje.Text      = "¡Error! " + ex.Message;
            }

            catch
            {
                Panel1.Visible       = true;
                lblMensaje.ForeColor = System.Drawing.Color.Red;
                lblMensaje.Text      = "¡Error! No se pudo eliminar el Articulo.";
            }
            break;
        }
    }
Exemple #14
0
    protected void btnAgregar_Click(object sender, EventArgs e)
    {
        try
        {
            long codigoBarras = 1;

            if (txtCodigoBarras.Text.Trim() != string.Empty)
            {
                codigoBarras = Convert.ToInt64(txtCodigoBarras.Text.Trim());
            }

            string nombre = txtNombre.Text.Trim();

            if (string.IsNullOrEmpty(nombre))
            {
                throw new ExcepcionLogica("El Nombre del articulo no puede quedar vacío.");
            }

            double precio;

            try
            {
                precio = Convert.ToDouble(txtPrecio.Text.Trim());
            }
            catch
            {
                throw new ExcepcionPresentacion("El Precio no es válido.");
            }

            int stock;

            try
            {
                stock = Convert.ToInt32(txtStock.Text.Trim());
            }
            catch
            {
                throw new ExcepcionPresentacion("El Stock no es válido.");
            }

            string descripcion = txtDescripcion.Text.Trim();

            if (string.IsNullOrEmpty(descripcion))
            {
                throw new ExcepcionLogica("La descripcion del articulo no puede quedar vacía.");
            }

            string nombreCategoria = ddlCategorias.SelectedValue;

            if (nombreCategoria == "Ninguno")
            {
                throw new ExcepcionPresentacion("Debe seleccionar una categoria de la lista.");
            }

            bool buscarCategoria        = false; //busca categorias no eliminadas de manera logica
            CategoriaArticulo categoria = LogicaCategoriaArticulo.Buscar(nombreCategoria, buscarCategoria);

            string origenImagen = fuOrigenImagen.PostedFile.FileName; //saca la ruta de donde se copia la imagen del Fileupload

            string destinoImagen;

            if (origenImagen != string.Empty)
            {
                string nombreImagen = txtCodigoBarras.Text.Trim() + System.IO.Path.GetFileName(origenImagen);//sacamos el codigo del articulo y se lo agregamos al nombre de la imagen

                string extension = nombreImagen.Substring(nombreImagen.Length - 4, 4);

                if (extension.ToLower() != ".jpg" && extension.ToLower() != ".png" && extension.ToLower() != ".bmp" && extension.ToLower() != "jpeg")
                {
                    throw new ExcepcionPresentacion("Formato de imagen no válido, coloque un archivo con extension: .jpg , .png , .bmp  o .jpeg ");
                }

                destinoImagen = Server.MapPath("~/uploads/articulos/") + nombreImagen; // ruta de destino donde se copiara la imagen

                System.IO.File.Copy(origenImagen, destinoImagen, true);                //copia la imagen y reemplaza si existe una con el mismo nombre

                destinoImagen = "~/uploads/articulos/" + nombreImagen;                 //generamos una ruta corta para la base de datos
            }
            else
            {
                throw new ExcepcionPresentacion("Debe seleccionar una imagen para el Articulo.");
            }

            bool eliminado = false;

            Articulo articulo = new Articulo(codigoBarras, nombre, precio, stock, descripcion, destinoImagen, categoria, eliminado);

            buscar = true; // busca los articulos aunque este eliminados de manera logica
            Articulo buscarArticulo = LogicaArticulo.Buscar(codigoBarras, buscar);

            if (buscarArticulo == null)
            {
                LogicaArticulo.Agregar(articulo);
            }
            else
            {
                LogicaArticulo.Modificar(articulo);
            }

            LimpiarFormulario();

            Panel1.Visible       = true;
            lblMensaje.ForeColor = System.Drawing.Color.Green;
            lblMensaje.Text      = "¡Articulo" + (stock > 1 ? "s" : "") + " agregado" + (stock > 1 ? "s" : "") + " con éxito! con el código de barras: " + codigoBarras;
        }
        catch (ApplicationException ex)
        {
            Panel1.Visible       = true;
            lblMensaje.ForeColor = System.Drawing.Color.Red;
            lblMensaje.Text      = "¡Error! " + ex.Message;
        }

        catch
        {
            Panel1.Visible       = true;
            lblMensaje.ForeColor = System.Drawing.Color.Red;
            lblMensaje.Text      = "¡Error! No se pudo agregar el Articulo.";
        }
    }
    protected void gvArticulos_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "AgregarCarrito")
        {
            try
            {
                if (Session["Usuario"] is Administrador)
                {
                    throw new ExcepcionPresentacion("Un administrador logueado no puede agregar productos al carrito de compras");
                }
                else
                {
                    List <LineaPedido> lineasDePedido = new List <LineaPedido>();

                    if ((List <LineaPedido>)Session["CarritoLineaPedido"] != null)
                    {
                        lineasDePedido = (List <LineaPedido>)Session["CarritoLineaPedido"];
                    }

                    LineaPedido nuevaLinea = new LineaPedido();

                    int         index          = Convert.ToInt32(e.CommandArgument);
                    GridViewRow row            = gvArticulos.Rows[index];
                    long        codigoArticulo = Convert.ToInt64(row.Cells[0].Text);

                    Articulo articulo = LogicaArticulo.Buscar(codigoArticulo, false);

                    int cantidadStockCarrito = 0;

                    foreach (LineaPedido lp in lineasDePedido)
                    {
                        if (lp.PArticulo.CodigoBarras == codigoArticulo)
                        {
                            cantidadStockCarrito += lp.Cantidad;
                        }
                    }

                    if (articulo.Stock > cantidadStockCarrito)
                    {
                        nuevaLinea.Cantidad = 1;

                        nuevaLinea.Numero    = lineasDePedido.Count;
                        nuevaLinea.PArticulo = articulo;

                        lineasDePedido.Add(nuevaLinea);

                        Session["CarritoLineaPedido"] = lineasDePedido;

                        lblAgregado.ForeColor = System.Drawing.Color.Green;
                        lblAgregado.Text      = "Producto Agregado con exito a su carrito de compras.";
                        Panel2.Visible        = true;
                    }
                    else
                    {
                        lblAgregado.ForeColor = System.Drawing.Color.Red;
                        lblAgregado.Text      = "Lo sentimos pero ya no hay stock de el producto.";
                        Panel2.Visible        = true;
                    }
                    //Response.Redirect("~/Default.aspx");
                }
            }
            catch (ApplicationException ex)
            {
                lblAgregado.ForeColor = System.Drawing.Color.Red;
                lblAgregado.Text      = "¡Error! " + ex.Message;
                Panel2.Visible        = true;
            }

            catch
            {
                lblAgregado.ForeColor = System.Drawing.Color.Red;
                lblAgregado.Text      = "¡Error! Al cargar la pagina.";
                Panel2.Visible        = true;
            }

            //Response.Redirect("~/Default.aspx");
        }
    }
    protected void CargarGridView()
    {
        string categoria = ddlCategorias.SelectedValue;

        List <Articulo> Articulos = LogicaArticulo.ListarTodosLosArticulos();

        bool ordenamiento; //variable para definir el ordenamiento por precio que tenga el grid view en la consulta a la base de datos

        if (categoria == "Todas")
        {
            if (ddlOrdenXPrecio.SelectedValue == "MayorAMenor")
            {
                ordenamiento            = true;
                seleccionDeOrdenamiento = "MayorAMenor";

                Articulos = LogicaArticulo.Listar(ordenamiento);
            }

            if (ddlOrdenXPrecio.SelectedValue == "MenorAMayor")
            {
                ordenamiento            = false;
                seleccionDeOrdenamiento = "MenorAMayor";

                Articulos = LogicaArticulo.Listar(ordenamiento);
            }


            if (ddlOrdenXCategoria.SelectedValue == "A - Z")
            {
                seleccionDeOrdenamiento = "A - Z";
                Articulos = LogicaArticulo.ListarArticulosGruposCategoria(true);
            }

            if (ddlOrdenXCategoria.SelectedValue == "Z - A")
            {
                seleccionDeOrdenamiento = "Z - A";
                Articulos = LogicaArticulo.ListarArticulosGruposCategoria(false);
            }

            if (ddlOrdenXPrecio.SelectedValue == "SinOrdenar" && ddlOrdenXCategoria.SelectedValue == "SinOrdenar")
            {
                seleccionDeOrdenamiento = "SinOrdenar";
            }

            Session["SeleccionDeOrenamiento"] = seleccionDeOrdenamiento;
            Cargar1(Articulos);
        }
        else
        {
            Articulos = LogicaArticulo.ListarXCategoriaDesordenado(categoria);

            if (ddlOrdenXPrecio.SelectedValue == "MayorAMenor")
            {
                ordenamiento            = true;
                seleccionDeOrdenamiento = "MayorAMenor";

                Articulos = LogicaArticulo.ListarXCategoria(categoria, ordenamiento);
            }

            if (ddlOrdenXPrecio.SelectedValue == "MenorAMayor")
            {
                ordenamiento            = false;
                seleccionDeOrdenamiento = "MenorAMayor";

                Articulos = LogicaArticulo.ListarXCategoria(categoria, ordenamiento);
            }

            if (Articulos.Count == 0) //si la categoria no tiene articulos se muestra un mensaje y se vacia el gridview anterior
            {
                DataTable dtSinArticulos = new DataTable();

                gvArticulos.DataSource = dtSinArticulos;
                gvArticulos.DataBind();

                throw new ExcepcionPresentacion("La categoria no tiene ningun articulo.");
            }

            if (ddlOrdenXPrecio.SelectedValue == "SinOrdenar" && ddlOrdenXCategoria.SelectedValue == "SinOrdenar")
            {
                seleccionDeOrdenamiento = "SinOrdenar";
            }

            Session["SeleccionDeOrenamiento"] = seleccionDeOrdenamiento;
            Cargar1(Articulos);
        }
    }
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        try
        {
            if (Session["Usuario"] is Administrador)
            {
                throw new ExcepcionPresentacion("Un administrador logueado no puede agregar productos al carrito de compras");
            }
            else
            {
                List <LineaPedido> lineasDePedido = (List <LineaPedido>)Session["CarritoLineaPedido"];

                LineaPedido nuevaLinea = new LineaPedido();

                long codigo = (long)Session["CodigoArticulo"];
                bool buscar = false;

                int cantidadSolicitada;

                try
                {
                    cantidadSolicitada = Convert.ToInt32(txtCantidad.Text.Trim());
                }
                catch
                {
                    throw new ExcepcionPresentacion("La cantidad solicitada del articulo no es correcta o esta vacia.");
                }

                Articulo articulo = LogicaArticulo.Buscar(codigo, buscar);

                int cantidadStockCarrito = 0;

                if (lineasDePedido != null)
                {
                    foreach (LineaPedido lp in lineasDePedido)
                    {
                        if (lp.PArticulo.CodigoBarras == articulo.CodigoBarras)
                        {
                            cantidadStockCarrito += lp.Cantidad;
                        }
                    }
                }

                if (articulo.Stock >= cantidadSolicitada && cantidadSolicitada > 0 && articulo.Stock > cantidadStockCarrito)
                {
                    nuevaLinea.Cantidad = cantidadSolicitada;
                }
                else
                {
                    throw new ExcepcionPresentacion("La cantidad solicitada no es correcta o sobrepasa el stock (" + articulo.Stock + " ) del producto.");
                }


                nuevaLinea.PArticulo = articulo;

                if (lineasDePedido != null)
                {
                    nuevaLinea.Numero = lineasDePedido.Count;
                    lineasDePedido.Add(nuevaLinea);
                }
                else
                {
                    nuevaLinea     = new LineaPedido(0, cantidadSolicitada, articulo);
                    lineasDePedido = new List <LineaPedido>();
                    lineasDePedido.Add(nuevaLinea);
                }



                Session["CarritoLineaPedido"] = lineasDePedido;

                Panel2.Visible        = true;
                lblAgregado.ForeColor = System.Drawing.Color.Green;
                lblAgregado.Text      = "Producto Agregado con exito a su carrito de compras.";
                lblMensaje.Text       = "";
                txtCantidad.Text      = "";
                //Response.Redirect("~/MostrarArticulo.aspx");
            }
        }
        catch (ApplicationException ex)
        {
            lblAgregado.ForeColor = System.Drawing.Color.Red;
            lblAgregado.Text      = "¡Error! " + ex.Message;
            Panel2.Visible        = true;
        }
        catch
        {
            lblMensaje.ForeColor = System.Drawing.Color.Red;
            lblMensaje.Text      = "¡Error! No se pudo agregar el articulo al carrito.";
        }
    }