/*================================================================================ * GET LÍNEAS *================================================================================*/ public static ObservableCollection <Linea> GetLineas() { // Creamos la lista y el comando que extrae las líneas. ObservableCollection <Linea> lista = new ObservableCollection <Linea>(); using (OleDbConnection conexion = new OleDbConnection(App.Global.CadenaConexionLineas)) { string comandoSQL = "SELECT * FROM Lineas ORDER BY Nombre;"; OleDbCommand Comando = new OleDbCommand(comandoSQL, conexion); OleDbDataReader lector = null; try { conexion.Open(); lector = Comando.ExecuteReader(); while (lector.Read()) { Linea linea = new Linea(lector); linea.ListaItinerarios = BdItinerarios.GetItinerarios(linea.Id); lista.Add(linea); linea.Nuevo = false; linea.Modificado = false; } } catch (Exception ex) { Utils.VerError("BdLineas.GetLineas", ex); } finally { lector.Close(); } } return(lista); }
/*================================================================================ * GUARDAR LÍNEAS *================================================================================*/ public static void GuardarLineas(IEnumerable <Linea> lista) { // Si la lista está vacía, salimos. if (lista == null || lista.Count() == 0) { return; } using (OleDbConnection conexion = new OleDbConnection(App.Global.CadenaConexionLineas)) { string SQLInsertar = "INSERT INTO Lineas (Nombre, Descripcion) VALUES (?, ?)"; string SQLActualizar = "UPDATE Lineas SET Nombre=?, Descripcion=? WHERE Id=?"; string SQLGetID = "SELECT @@IDENTITY;"; try { conexion.Open(); foreach (Linea linea in lista) { if (linea.Nuevo) { OleDbCommand comando = new OleDbCommand(SQLInsertar, conexion); Linea.ParseToCommand(comando, linea); comando.ExecuteNonQuery(); comando.CommandText = SQLGetID; int idlinea = (int)comando.ExecuteScalar(); foreach (Itinerario itinerario in linea.ListaItinerarios) { itinerario.IdLinea = idlinea; } linea.Nuevo = false; linea.Modificado = false; } else if (linea.Modificado) { OleDbCommand comando = new OleDbCommand(SQLActualizar, conexion); Linea.ParseToCommand(comando, linea); comando.ExecuteNonQuery(); linea.Modificado = false; } } foreach (Linea linea in lista) { BdItinerarios.GuardarItinerarios(linea.ListaItinerarios.Where(item => item.Nuevo || item.Modificado)); BdItinerarios.BorrarItinerarios(linea.ItinerariosBorrados); } } catch (Exception ex) { Utils.VerError("BdLineas.GuardarLineas", ex); } } }