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"); } } }
private void BtnAgregarButacas_Click(object sender, EventArgs e) { var alta = new ABMAltaButacas(aeronave, transaccionConcurrente, true, null); alta.ShowDialog(); if (alta.accionTerminada) { accionTerminada = true; //Close(); } }