Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // ===++===
  2. //
  3. //    OrtizOL - xCSw
  4. //
  5. //  Proyecto: Cupi2.NET
  6. //
  7. // ===--===
  8. /*============================================================
  9. //
  10. // Clase(s): `ControlCarrito`
  11. //
  12. // Propósito: Implementar y representar el control visual
  13. // (DataGridView) con los ítems (libros) agregados al
  14. // carrito de compra.
  15. //
  16. // Original: http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/tienda-de-libros/visualizacion-codigo/tablamodelocarrocompras
  17. //
  18. ============================================================*/
  19.  
  20. using System;
  21. using System.Windows.Forms;
  22. using N3_TiendaLibros.Modelo;
  23.  
  24. namespace N3_TiendaLibros.GUI
  25. {
  26.     /// <summary>
  27.     /// Clase que representa el control personalizado para el carrito de compras.
  28.     /// </summary>
  29.     public partial class ControlCarrito : UserControl
  30.     {
  31.         #region Constructores
  32.         /// <summary>
  33.         /// Crea un nuevo carrito de compras visual.
  34.         /// </summary>
  35.         public ControlCarrito()
  36.         {
  37.             InitializeComponent();
  38.         }
  39.         #endregion
  40.  
  41.         #region Métodos:
  42.         /// <summary>
  43.         /// Adiciona un nuevo libro al carrito de compras.
  44.         /// </summary>
  45.         /// <param name="libro">Libro a agregar.</param>
  46.         /// <param name="cantidad">Cantidad del libro comprar.</param>
  47.         public void AdicionarLibroCarrito(Libro libro, int cantidad)
  48.         {
  49.             // Comprueba si ya existe el libro en el carrito de compra:
  50.             if (ExisteLibroEnCarrito(libro.Isbn))
  51.             {
  52.                 foreach (DataGridViewRow dvrLibro in dgvCarrito.Rows)
  53.                 {
  54.                     if (dvrLibro.Cells[0].Value.ToString().Equals(libro.Isbn))
  55.                     {
  56.                         dvrLibro.Cells[2].Value = ((int)dvrLibro.Cells[2].Value) + cantidad;
  57.                         dvrLibro.Cells[3].Value = ((int)dvrLibro.Cells[2].Value) * libro.Precio;
  58.                         break;
  59.                     }
  60.                 }
  61.             }
  62.             else
  63.             {
  64.                 int index = dgvCarrito.Rows.Add();
  65.  
  66.                 dgvCarrito.Rows[index].Cells[0].Value = libro.Isbn;
  67.                 dgvCarrito.Rows[index].Cells[1].Value = libro.Titulo;
  68.                 dgvCarrito.Rows[index].Cells[2].Value = cantidad;
  69.                 dgvCarrito.Rows[index].Cells[3].Value = (decimal)cantidad * libro.Precio;
  70.             }
  71.  
  72.             CalcularTotalCompra();
  73.         }
  74.  
  75.         /// <summary>
  76.         /// Calcula el total de la compra.
  77.         /// </summary>
  78.         private void CalcularTotalCompra()
  79.         {
  80.             decimal totalCompra = 0.0M;
  81.  
  82.             foreach (DataGridViewRow dgrLibro in dgvCarrito.Rows)
  83.             {
  84.                 totalCompra += Decimal.Parse(dgrLibro.Cells[3].Value.ToString());
  85.             }
  86.  
  87.             txtTotal.Text = String.Format("{0:C}", totalCompra);
  88.         }
  89.         /// <summary>
  90.         /// Comprueba si el libro ya existe en el carrito de compra visual.
  91.         /// </summary>
  92.         /// <param name="isbn">ISBN del libro a comprobar existencia.</param>
  93.         /// <returns><em>true</em> si el libro ya existe, <em>false</em> en caso contrario.</returns>
  94.         private bool ExisteLibroEnCarrito(String isbn)
  95.         {
  96.             foreach(DataGridViewRow libro in dgvCarrito.Rows)
  97.             {
  98.                 if (libro.Cells[0].Value.ToString().Equals(isbn))
  99.                 {
  100.                     return true;
  101.                 }
  102.             }
  103.  
  104.             return false;
  105.         }
  106.         #endregion
  107.  
  108.         /// <summary>
  109.         /// EVento que valida la eliminación de un ítem del carrito de compras.
  110.         /// </summary>
  111.         /// <param name="sender"></param>
  112.         /// <param name="e"></param>
  113.         private void btnBorrar_Click(object sender, EventArgs e)
  114.         {
  115.             if (dgvCarrito.Rows.Count > 0)
  116.             {
  117.                 dgvCarrito.Rows.RemoveAt(dgvCarrito.CurrentRow.Index);
  118.  
  119.                 CalcularTotalCompra();
  120.             }
  121.             else
  122.             {
  123.                 MessageBox.Show(this, "Aún no se han agregado libros al carrito.", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  124.             }
  125.         }
  126.     }
  127. }