// ===++===
//
// OrtizOL
//
// ===--===
/*============================================================
//
// Clase: Principal.cs
//
// Original en: http://goo.gl/NmPCp1
//
// Propósito: Representar la ventana principal de la
// aplicación.
//
============================================================*/
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Threading.Tasks;
using System.Windows.Forms;
using LaTienda.Modelo;
namespace LaTienda.GUI
{
/// <summary>
/// Representa la ventana principal de la aplicación La Tienda.
/// </summary>
public partial class Principal : Form
{
#region Campos
/// <summary>
/// Representa la tienda a administrar.
/// </summary>
private Tienda tienda;
#endregion
#region Campos (componentes de interfaz)
/// <summary>
/// Control con los componentes para realizar los cálculos
/// y estadísticas de los productos vendidos.
/// </summary>
private ControlCalculos controlCalculos;
/// <summary>
/// Control con los componentes para realizar las operaciones
/// de venta y pedido de productos.
/// </summary>
private ControlOperaciones controlOperaciones;
/// <summary>
/// Control con los componentes para representar los productos
/// que se venden en la tienda.
/// </summary>
private ControlProductos controlProductos;
#endregion
#region Constructores
/// <summary>
/// Crea la ventana principal de la aplicación.
/// </summary>
public Principal()
{
InitializeComponent();
ConfiguracionComponentes();
// Creación productos:
Producto producto1 = new Producto(TipoProducto.Papeleria, TipoIva.IvaPapeleria, "Lápiz", 550.0M, 18, 5);
Producto producto2 = new Producto(TipoProducto.Drogueria, TipoIva.IvaDrogueria, "Aspirina", 109.5M, 25, 8);
Producto producto3 = new Producto(TipoProducto.Papeleria, TipoIva.IvaPapeleria, "Borrador", 207.3M, 30, 10);
Producto producto4 = new Producto(TipoProducto.Supermercado, TipoIva.IvaSupermercado, "Pan", 150.0M, 15, 20);
// Creación de la tienda:
tienda = new Tienda(producto1, producto2, producto3, producto4);
// Refresca el control de productos:
RefrescarInformacion();
}
#endregion
#region Métodos
/// <summary>
/// Configura los componentes integrales de la aplicación.
/// </summary>
private void ConfiguracionComponentes()
{
controlProductos = new ControlProductos();
controlOperaciones = new ControlOperaciones(this);
controlOperaciones.Location = new Point(0,183);
controlCalculos = new ControlCalculos();
controlCalculos.Location = new Point(0, 283);
this.Icon = LaTienda.Properties.Resources.tienda;
this.Controls.Add(controlProductos);
this.Controls.Add(controlOperaciones);
this.Controls.Add(controlCalculos);
}
/// <summary>
/// Obtiene los nombre de los productos como un arreglo (vector o matriz)
/// de cadena de caracters.
/// </summary>
/// <returns>Arreglo con los nombres de los productos.</returns>
public string[] ObtenerNombreProductos()
{
return new string[] {
tienda.ObtenerProducto(1).Nombre,
tienda.ObtenerProducto(2).Nombre,
tienda.ObtenerProducto(3).Nombre,
tienda.ObtenerProducto(4).Nombre
};
}
/// <summary>
/// Realiza un pedido.
/// </summary>
/// <param name="nombreProducto">Nombre del producto a realizar pedido.</param>
/// <param name="cantidad">Cantidad del producto a realizar pedido.</param>
public void RealizarPedido(string nombreProducto, int cantidad)
{
if (tienda.RealizarPedido(nombreProducto, cantidad))
{
MessageBox.Show(this, String.Format("Pedidas {0} unidades de {1}.", cantidad, nombreProducto), "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
RefrescarInformacion();
}
else
{
MessageBox.Show(this, String.Format("No fue posible hacer el pedido de {0}.", nombreProducto), "Información", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
/// <summary>
/// Refresca las estadísticas y el estado de cada producto.
/// </summary>
public void RefrescarInformacion()
{
controlProductos.Refrescar(tienda.Productos);
controlCalculos.Refrescar(tienda);
}
/// <summary>
/// Vender un producto determinado.
/// </summary>
/// <param name="nombreProducto">Nombre del producto a vender.</param>
/// <param name="cantidad">Cantidad del producto a vender.</param>
public void VenderProducto(string nombreProducto, int cantidad)
{
int venta = tienda.VenderProducto(nombreProducto, cantidad);
RefrescarInformacion();
MessageBox.Show(this, String.Format("Vendidas {0} unidades de {1}", venta, nombreProducto), "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
#endregion
#region Métodos de extensión
/// <summary>
/// Método de extensión no. 1.
/// </summary>
public void MetodoExtension1()
{
MessageBox.Show(this, tienda.Metodo1(), "Método de Extensión", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
/// <summary>
/// Método de extensión no. 2.
/// </summary>
public void MetodoExtension2()
{
MessageBox.Show(this, tienda.Metodo2(), "Método de Extensión", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
#endregion
}
}