Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. // ===++===
  2. //
  3. //  OrtizOL
  4. //
  5. // ===--===
  6. /*============================================================
  7. //
  8. // Clase: Principal.cs
  9. //
  10. // Original en: http://goo.gl/NmPCp1
  11. //
  12. // Propósito: Representar la ventana principal de la
  13. // aplicación.
  14. //
  15. ============================================================*/
  16.  
  17. using System;
  18. using System.ComponentModel;
  19. using System.Data;
  20. using System.Drawing;
  21. using System.Threading.Tasks;
  22. using System.Windows.Forms;
  23. using LaTienda.Modelo;
  24.  
  25. namespace LaTienda.GUI
  26. {
  27.     /// <summary>
  28.     /// Representa la ventana principal de la aplicación La Tienda.
  29.     /// </summary>
  30.     public partial class Principal : Form
  31.     {
  32.         #region Campos
  33.         /// <summary>
  34.         /// Representa la tienda a administrar.
  35.         /// </summary>
  36.         private Tienda tienda;
  37.         #endregion
  38.  
  39.         #region Campos (componentes de interfaz)
  40.         /// <summary>
  41.         /// Control con los componentes para realizar los cálculos
  42.         /// y estadísticas de los productos vendidos.
  43.         /// </summary>
  44.         private ControlCalculos controlCalculos;
  45.         /// <summary>
  46.         /// Control con los componentes para realizar las operaciones
  47.         /// de venta y pedido de productos.
  48.         /// </summary>
  49.         private ControlOperaciones controlOperaciones;
  50.         /// <summary>
  51.         /// Control con los componentes para representar los productos
  52.         /// que se venden en la tienda.
  53.         /// </summary>
  54.         private ControlProductos controlProductos;
  55.         #endregion
  56.  
  57.         #region Constructores
  58.         /// <summary>
  59.         /// Crea la ventana principal de la aplicación.
  60.         /// </summary>
  61.         public Principal()
  62.         {
  63.             InitializeComponent();
  64.             ConfiguracionComponentes();
  65.  
  66.             // Creación productos:
  67.             Producto producto1 = new Producto(TipoProducto.Papeleria, TipoIva.IvaPapeleria, "Lápiz", 550.0M, 18, 5);
  68.             Producto producto2 = new Producto(TipoProducto.Drogueria, TipoIva.IvaDrogueria, "Aspirina", 109.5M, 25, 8);
  69.             Producto producto3 = new Producto(TipoProducto.Papeleria, TipoIva.IvaPapeleria, "Borrador", 207.3M, 30, 10);
  70.             Producto producto4 = new Producto(TipoProducto.Supermercado, TipoIva.IvaSupermercado, "Pan", 150.0M, 15, 20);
  71.  
  72.             // Creación de la tienda:
  73.             tienda = new Tienda(producto1, producto2, producto3, producto4);
  74.  
  75.             // Refresca el control de productos:
  76.             RefrescarInformacion();
  77.         }
  78.         #endregion
  79.  
  80.         #region Métodos
  81.         /// <summary>
  82.         /// Configura los componentes integrales de la aplicación.
  83.         /// </summary>
  84.         private void ConfiguracionComponentes()
  85.         {
  86.             controlProductos = new ControlProductos();
  87.  
  88.             controlOperaciones = new ControlOperaciones(this);
  89.             controlOperaciones.Location = new Point(0,183);
  90.  
  91.             controlCalculos = new ControlCalculos();
  92.             controlCalculos.Location = new Point(0, 283);
  93.  
  94.             this.Icon = LaTienda.Properties.Resources.tienda;
  95.  
  96.             this.Controls.Add(controlProductos);
  97.             this.Controls.Add(controlOperaciones);
  98.             this.Controls.Add(controlCalculos);
  99.         }
  100.         /// <summary>
  101.         /// Obtiene los nombre de los productos como un arreglo (vector o matriz)
  102.         /// de cadena de caracters.
  103.         /// </summary>
  104.         /// <returns>Arreglo con los nombres de los productos.</returns>
  105.         public string[] ObtenerNombreProductos()
  106.         {
  107.             return new string[] {
  108.                 tienda.ObtenerProducto(1).Nombre,
  109.                 tienda.ObtenerProducto(2).Nombre,
  110.                 tienda.ObtenerProducto(3).Nombre,
  111.                 tienda.ObtenerProducto(4).Nombre
  112.             };
  113.         }
  114.         /// <summary>
  115.         /// Realiza un pedido.
  116.         /// </summary>
  117.         /// <param name="nombreProducto">Nombre del producto a realizar pedido.</param>
  118.         /// <param name="cantidad">Cantidad del producto a realizar pedido.</param>
  119.         public void RealizarPedido(string nombreProducto, int cantidad)
  120.         {
  121.             if (tienda.RealizarPedido(nombreProducto, cantidad))
  122.             {
  123.                 MessageBox.Show(this, String.Format("Pedidas {0} unidades de {1}.", cantidad, nombreProducto), "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
  124.                 RefrescarInformacion();
  125.             }
  126.             else
  127.             {
  128.                 MessageBox.Show(this, String.Format("No fue posible hacer el pedido de {0}.", nombreProducto), "Información", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
  129.             }
  130.         }
  131.         /// <summary>
  132.         /// Refresca las estadísticas y el estado de cada producto.
  133.         /// </summary>
  134.         public void RefrescarInformacion()
  135.         {
  136.             controlProductos.Refrescar(tienda.Productos);
  137.             controlCalculos.Refrescar(tienda);
  138.         }
  139.         /// <summary>
  140.         /// Vender un producto determinado.
  141.         /// </summary>
  142.         /// <param name="nombreProducto">Nombre del producto a vender.</param>
  143.         /// <param name="cantidad">Cantidad del producto a vender.</param>
  144.         public void VenderProducto(string nombreProducto, int cantidad)
  145.         {
  146.             int venta = tienda.VenderProducto(nombreProducto, cantidad);
  147.             RefrescarInformacion();
  148.             MessageBox.Show(this, String.Format("Vendidas {0} unidades de {1}", venta, nombreProducto), "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
  149.         }
  150.         #endregion
  151.  
  152.         #region Métodos de extensión
  153.         /// <summary>
  154.         /// Método de extensión no. 1.
  155.         /// </summary>
  156.         public void MetodoExtension1()
  157.         {
  158.             MessageBox.Show(this, tienda.Metodo1(), "Método de Extensión", MessageBoxButtons.OK, MessageBoxIcon.Information);
  159.         }
  160.         /// <summary>
  161.         /// Método de extensión no. 2.
  162.         /// </summary>
  163.         public void MetodoExtension2()
  164.         {
  165.             MessageBox.Show(this, tienda.Metodo2(), "Método de Extensión", MessageBoxButtons.OK, MessageBoxIcon.Information);
  166.         }
  167.         #endregion
  168.     }
  169. }