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): `CarroCompras`
  11. //
  12. // Propósito: Implementar y representar la entidad
  13. // `CarroCompras` del dominio.
  14. //
  15. // Original: http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/tienda-de-libros/visualizacion-codigo/carrocompras
  16. //
  17. ============================================================*/
  18.  
  19. using System;
  20. using System.Collections;
  21.  
  22. namespace N3_TiendaLibros.Modelo
  23. {
  24.     /// <summary>
  25.     /// Representa la entidad `CarroCompras`.
  26.     /// </summary>
  27.     public class CarroCompras
  28.     {
  29.         #region Campos
  30.         /// <summary>
  31.         /// Ïtems de la compra de libros.
  32.         /// </summary>
  33.         private ArrayList m_itemsCompra;
  34.         #endregion
  35.  
  36.         #region Propiedades
  37.         /// <summary>
  38.         /// Recupera y modifica los ítems de compra.
  39.         /// </summary>
  40.         public ArrayList ItemsCompra
  41.         {
  42.             get
  43.             {
  44.                 return m_itemsCompra;
  45.             }
  46.             set
  47.             {
  48.                 m_itemsCompra = value;
  49.             }
  50.         }
  51.         #endregion
  52.  
  53.         #region Constructores
  54.         /// <summary>
  55.         /// Crea un nuevo carrito de compras de libros.
  56.         /// </summary>
  57.         public CarroCompras()
  58.         {
  59.             m_itemsCompra = new ArrayList();
  60.         }
  61.         #endregion
  62.  
  63.         #region Métodos
  64.         /// <summary>
  65.         /// Adiciona un libro como ítem en el carrito de compras.
  66.         /// </summary>
  67.         /// <param name="libro">Libro a agregar al carrito de compras.</param>
  68.         /// <param name="cantidad">Cantidad de este libro a agregar.</param>
  69.         public void AdicionarCompra(Libro libro, int cantidad)
  70.         {
  71.             // Busca un ítem de compra donde exista el libro:
  72.             ItemCompra item = BuscarItemCompraLibro(libro.Isbn);
  73.  
  74.             // Si no existe ese libro en el carrito, crea el ítem y lo agrega:
  75.             if (item == null)
  76.             {
  77.                 ItemCompra nuevoItem = new ItemCompra(libro, cantidad);
  78.                 m_itemsCompra.Add(nuevoItem);
  79.             }
  80.             else
  81.             {
  82.                 // Si ya existe, sólo aumenta la cantidad del pedido:
  83.                 item.CantidadSolicitada += cantidad;
  84.             }
  85.         }
  86.         /// <summary>
  87.         /// Borra un ítem de compra del carrito de compras.
  88.         /// </summary>
  89.         /// <param name="item">Ítem de compra a eliminar.</param>
  90.         public void BorrarItemCompra(ItemCompra item)
  91.         {
  92.             ItemCompra itemAux = null;
  93.             bool encontrado = false;
  94.  
  95.             // El índice para recorrer los elementos:
  96.             int i = 0;
  97.             int tamanio = m_itemsCompra.Count;
  98.  
  99.             // Avanza mientras no encuentre el libro en un ítem:
  100.             while (i < tamanio && !encontrado)
  101.             {
  102.                 itemAux = (ItemCompra)m_itemsCompra[i];
  103.  
  104.                 if (itemAux.IgualAItem(item))
  105.                 {
  106.                     encontrado = true;
  107.                 }
  108.  
  109.  
  110.                 ++i;
  111.             }
  112.  
  113.             if (encontrado)
  114.             {
  115.                 m_itemsCompra.Remove(itemAux);
  116.             }
  117.         }
  118.         /// <summary>
  119.         /// Busca un ítem de compra por el ISBN del libro.
  120.         /// </summary>
  121.         /// <param name="isbn">ISBN del libro a buscar.</param>
  122.         /// <returns>Ítem de compra del libro buscado.</returns>
  123.         public ItemCompra BuscarItemCompraLibro(String isbn)
  124.         {
  125.             foreach (ItemCompra item in m_itemsCompra)
  126.             {
  127.                 if (item.Libro.Isbn.Equals(isbn))
  128.                 {
  129.                     return item;
  130.                 }
  131.             }
  132.  
  133.             return null;
  134.         }
  135.         /// <summary>
  136.         /// CAlcula el total de la compra para este carrito de compra.
  137.         /// </summary>
  138.         /// <returns>Total de la compra.</returns>
  139.         public decimal CalcularValorTotalCompra()
  140.         {
  141.             decimal total = 0.0M;
  142.  
  143.             foreach (ItemCompra item in m_itemsCompra)
  144.             {
  145.                 total += item.CalcularSubtotalItem();
  146.             }
  147.  
  148.             return total;
  149.         }
  150.         #endregion
  151.     }
  152. }