Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Last active August 29, 2015 14:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Fhernd/ec96990d75a9d069a38b to your computer and use it in GitHub Desktop.
Save Fhernd/ec96990d75a9d069a38b to your computer and use it in GitHub Desktop.
Diálogo `DialogoRegistrarPasajero`.
// ===++===
//
// OrtizOL - xCSw
//
// Proyecto: Cupi2.NET
//
// ===--===
/*============================================================
//
// Clase(s): DialogoRegistrarPasajero.
//
// Propósito: Represntar diálogo de registro de pasajero.
//
// Original: http://cupi2.uniandes.edu.co/sitio/index.php/cursos/apo1/nivel-3/avion/visualizacion-codigo/dialogoasignacion
//
============================================================*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ElAvión.Modelo;
namespace ElAvión.GUI
{
/// <summary>
/// Clase que representa el diálogo de captura del registro del pasajero.
/// </summary>
public partial class DialogoRegistrarPasajero : Form
{
#region Componentes
/// <summary>
/// Instancia de referencia de la interfaz de usuario principal.
/// </summary>
private Principal ventanaPrincipal;
#endregion
#region Campos
/// <summary>
/// Instancia de referencia del objeto `Avion` principal.
/// </summary>
private Avion m_avion;
#endregion
#region Constructores
/// <summary>
/// Crea un nuevo diálogo de captura del registro de un pasajero.
/// </summary>
/// <param name="principal">Referencia de la interfaz de usuario principal.</param>
/// <param name="avion">Referencia al objeto `Avión` principal.</param>
public DialogoRegistrarPasajero(Principal principal, Avion avion)
{
InitializeComponent();
this.m_avion = avion;
this.ventanaPrincipal = principal;
}
#endregion
#region Eventos.
/// <summary>
/// Activa la validación e ingreso de los datos del passajero.
/// </summary>
/// <param name="sender">Generador del evento.</param>
/// <param name="e">Argumentos del evento.</param>
private void txtAceptar_Click(object sender, EventArgs e)
{
Int64 numeroCedula;
if (Int64.TryParse(txtCedula.Text, out numeroCedula))
{
if(txtNombre.Text.Length > 0)
{
Pasajero pasajero = new Pasajero(numeroCedula, txtNombre.Text);
Silla sillaUsada = m_avion.BuscarPasajero(pasajero);
// Valida que el pasajero no ha ocupado una silla:
if (sillaUsada != null)
{
MessageBox.Show(this, "El pasajero ya tiene una silla asignada.", "Error Asignación Pasajero", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
Clase clase = (Clase)cbxClase.SelectedIndex + 1;
UbicacionSilla ubicacion = 0;
//***
if (clase == Clase.Economica)
{
switch(cbxUbicacion.SelectedIndex)
{
case 0:
ubicacion = UbicacionSilla.Ventana;
break;
case 1:
ubicacion = UbicacionSilla.Central;
break;
case 2:
ubicacion = UbicacionSilla.Pasillo;
break;
}
}
else
{
switch(cbxUbicacion.SelectedIndex)
{
case 0:
ubicacion = UbicacionSilla.Ventana;
break;
case 1:
ubicacion = UbicacionSilla.Pasillo;
break;
}
}
Silla silla = m_avion.AsignarSilla(clase, ubicacion, pasajero);
if (silla == null)
{
MessageBox.Show(this, "No hay sillas con dichas características.", "Error Número Cédula", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
ventanaPrincipal.Actualizar();
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
}
}
else
{
MessageBox.Show(this, "Introduzca su nombre.", "Error Nombre", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show(this, "El valor de cédula no es válido. Intente de nuevo.", "Error Número Cédula", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
/// Activa la cancelación del registro del pasajero.
/// </summary>
/// <param name="sender">Generador del evento.</param>
/// <param name="e">Argumentos del evento.</param>
private void txtCancelar_Click(object sender, EventArgs e)
{
this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
}
/// <summary>
/// Detecta cambios en la selección de la clase y la adaptación del contenido del tipo de silla.
/// </summary>
/// <param name="sender">Generador del evento.</param>
/// <param name="e">Argumentos del evento.</param>
private void cbxClase_SelectedIndexChanged(object sender, EventArgs e)
{
cbxUbicacion.Enabled = true;
if (cbxClase.SelectedIndex == 1)
{
cbxUbicacion.Items.Clear();
cbxUbicacion.Items.Add("Ventana");
cbxUbicacion.Items.Add("Pasillo");
}
else if (cbxClase.SelectedIndex == 0)
{
cbxUbicacion.Items.Clear();
cbxUbicacion.Items.Add("Ventana");
cbxUbicacion.Items.Add("Centro");
cbxUbicacion.Items.Add("Pasillo");
}
}
#endregion
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment