private void LblSiguiente_Click(object sender, EventArgs e)
        {
            using (var transaccion = DBManager.Instance().Connection.BeginTransaction(IsolationLevel.Serializable))
            {
                try
                {
                    #region ValidacionesEnGral

                    var exceptionMessage = string.Empty;

                    if (string.IsNullOrEmpty(TxtMatricula.Text))
                        exceptionMessage += "La matricula no puede ser vacia.\n";

                    else if (!ValidadorDeTipos.IsMatriculaValida(TxtMatricula.Text))
                        exceptionMessage += "La matricula no es valida.\n";

                    if (string.IsNullOrEmpty(TxtFabricante.Text))
                        exceptionMessage += "El fabricante no puede ser vacío.\n";

                    if (string.IsNullOrEmpty(CboServicio.Text))
                        exceptionMessage += "El tipo de servicio no puede ser vacío.\n";

                    if (string.IsNullOrEmpty(TxtModelo.Text))
                        exceptionMessage += "El modelo no puede ser vacío.\n";

                    if (string.IsNullOrEmpty(TxtKG.Text))
                        exceptionMessage += "La cantidad de KG no puede ser vacia.\n";

                    else if (!ValidadorDeTipos.IsNumeric(TxtKG.Text))
                        exceptionMessage += "De ingresar un valo numerico entero para la cantidad de KG.\n";

                    if (string.IsNullOrEmpty(DtpFechaAlta.Text))
                        exceptionMessage += "La fecha de alta no puede ser vacia.\n";

                    if (!string.IsNullOrEmpty(exceptionMessage))
                        throw new Exception(exceptionMessage);

                    #endregion

                    //El usuario va a dar de alta una aeronave
                    if (modoInsertarComun || aeronaveAReemplazar != null)
                    {
                            //Valido que la fecha de alta sea menor al dia de hoy
                            if (DtpFechaAlta.Value.Date < DateTime.Today)
                                throw new Exception("La fecha ingresada no es válida.\n");

                            //Valido que no se dupliquen las matriculas
                            Aeronave a = AeronavePersistencia.ObtenerPorMatricula(TxtMatricula.Text, transaccion);
                            if (a != null)
                                 throw new Exception("Ya existe una aeronave con la matricula ingresada.");

                            #region Inserto la nueva aeronave

                            var aeronave = new Aeronave();
                            aeronave.Matricula = TxtMatricula.Text;
                            aeronave.Fabricante = TxtFabricante.Text;
                            aeronave.Modelo = TxtModelo.Text;
                            aeronave.ID_Servicio = ServicioPersistencia.ObtenerServicioPorNombre(CboServicio.Text,transaccion).ID_Servicio;
                            aeronave.Fecha_Alta = DtpFechaAlta.Value;
                            aeronave.KG_Totales = Convert.ToInt32(TxtKG.Text);

                            aeronaveNueva = AeronavePersistencia.InsertarAeronave(aeronave, transaccion);

                            #endregion

                            var butacas = new ABMAltaButacas(aeronaveNueva, transaccion, false, aeronaveAReemplazar);
                            butacas.ShowDialog();

                            if (butacas.accionTerminada)
                            {
                                transaccion.Commit();
                                MessageBox.Show("Aeronave insertada satisfactoriamente", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                if (aeronaveAReemplazar != null && FechaReinicio == DateTime.MinValue)
                                {
                                    //Asigna los viajes de la aeronave a dar de baja por fin de vida util a la nueva
                                    ViajePersistencia.ReemplazarViajesDePor(aeronaveAReemplazar,aeronaveNueva);
                                    accionTerminada = true;
                                }
                                if (FechaReinicio != DateTime.MinValue || FechaComienzo != DateTime.MinValue)
                                {
                                    //Asigna los viajes de la aeronave a dar de baja por fuera de servicio a la nueva
                                    ViajePersistencia.ReemplazarViajesDePorServicio(aeronaveAReemplazar, aeronaveNueva,FechaComienzo,FechaReinicio);
                                    accionTerminada = true;
                                }
                                Close();
                            }
                            else
                            {
                                transaccion.Rollback();
                                MessageBox.Show("La Aeronave no fue insertada correctamente", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                Close();
                            }
                    }
                    else if (aeronaveAModificar != null)
                    {
                        //Verifico que no modifique la matricula por otra que ya exista
                        Aeronave a = AeronavePersistencia.ObtenerPorMatricula(TxtMatricula.Text, transaccion);
                        if (a != null && a.ID != aeronaveAModificar.ID)
                            MessageBox.Show("Ya existe una aeronave con la matricula ingresada.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                        //El usuario va a modificar una aeronave, verifico que no tenga viajes asignados
                        var viajes = ViajePersistencia.ObtenerViajesPorAeronave(aeronaveAModificar, transaccion);
                        if (viajes != null)
                        {
                            MessageBox.Show("La aeronave no puede ser modificada porque tiene viajes asignados", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            transaccion.Rollback();
                            accionTerminada = false;
                            Close();
                        }
                        else
                        {
                            #region Modifico la aeronave

                            aeronaveAModificar.Matricula = TxtMatricula.Text;
                            aeronaveAModificar.Fabricante = TxtFabricante.Text;
                            aeronaveAModificar.Modelo = TxtModelo.Text;
                            aeronaveAModificar.ID_Servicio = ServicioPersistencia.ObtenerServicioPorNombre(CboServicio.Text, transaccion).ID_Servicio;
                            aeronaveAModificar.Fecha_Alta = DtpFechaAlta.Value;
                            aeronaveAModificar.KG_Totales = Convert.ToInt32(TxtKG.Text);

                            AeronavePersistencia.ModificarAeronave(aeronaveAModificar, transaccion);

                            #endregion

                            var butacas = new ABMButacas(aeronaveAModificar, transaccion);
                            butacas.ShowDialog();

                            if (butacas.accionTerminada)
                            {
                                transaccion.Commit();
                                accionTerminada = true;
                                MessageBox.Show("Aeronave modificada satisfactoriamente", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                Close();
                            }
                            else{
                                transaccion.Rollback();
                                MessageBox.Show("La Aeronave no fue modificada correctamente", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                Close();
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    transaccion.Rollback();
                    MessageBox.Show(ex.Message, "Atención");
                }
              }
        }
示例#2
0
        private void BtnAgregarButacas_Click(object sender, EventArgs e)
        {
            var alta = new ABMAltaButacas(aeronave, transaccionConcurrente, true, null);
            alta.ShowDialog();

            if (alta.accionTerminada)
            {
                accionTerminada = true;
                //Close();
            }
        }