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 { 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 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 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; } }
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 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."; } }