/*================================================================================ * INSERTAR VALORACION *================================================================================*/ /// <summary> /// Guarda la lista de valoraciones que se le pasa en la base de datos, actualizando las modificadas e insertando las nuevas. /// </summary> /// <param name="lista">Lista con las valoraciones a guardar.</param> public static void InsertarValoracion(ValoracionGrafico valoracion) { // Si la conexión no existe o la valoracion es nula, devolvemos nulo. if (App.Global.CadenaConexion == null || valoracion == null) { return; } string SQLInsertar = "INSERT INTO Valoraciones (IdGrafico, Inicio, Linea, Descripcion, Final, Tiempo) " + "VALUES (?, ?, ?, ?, ?, ?);"; using (OleDbConnection conexion = new OleDbConnection(App.Global.CadenaConexion)) { OleDbCommand comando = new OleDbCommand(SQLInsertar, conexion); ValoracionGrafico.ParseToCommand(comando, valoracion); try { //App.Global.AbrirConexion(); conexion.Open(); comando.ExecuteNonQuery(); } catch (OleDbException ex) { Utils.VerError("BdValoracionesGraficos.InsertarValoracion", ex); } } }
/// <summary> /// Devuelve el tipo de valoración que se ha detectado en el texto y modifica la valoración pasada en consecuencia al tipo devuelto. /// </summary> /// <param name="texto">Texto del que deducir la valoración. Debe estar limpio.</param> /// <param name="valoracion">Valoración que se modificará en función del tipo devuelto.</param> /// <returns>Tipo de valoración detectado.</returns> public static TipoValoracion ParseaTexto(string texto, ref ValoracionGrafico valoracion) { // Si la cadena está vacía, devolvemos vacío. if (String.IsNullOrEmpty(texto.Trim())) { return(TipoValoracion.Vacio); } // Iniciamos las variables. string[] subtextos = texto.Split(' '); TipoValoracion resultado = TipoValoracion.Desconocido; // Evaluamos el primer elemento del texto. if (subtextos.Length > 0) { // Si el primer elemento es una hora... if (Utils.ParseHora(subtextos[0], out TimeSpan hora, true)) { // Guardamos la hora en la valoración. valoracion.Inicio = hora; // Si no es una hora... } else { // Si empieza por Gráfico, es un inicio de gráfico. if (subtextos[0].StartsWith("Grafico")) { // Insertamos el número de gráfico en el campo Línea de la valoración. valoracion.Linea = getNumeroGrafico(texto); return(TipoValoracion.InicioGrafico); // Si empieza por Valoración es un final de gráfico. } else if (subtextos[0].StartsWith("Valoracion")) { // Insertamos el tiempo de valoración del gráfico en el campo Tiempo de la valoración. valoracion.Tiempo = getValoracionGrafico(texto); return(TipoValoracion.FinalGrafico); // Si no empieza por Aldaketa, es una información } else if (subtextos[0].StartsWith("Aldaketa")) { return(TipoValoracion.Vacio); } else { valoracion.Descripcion = texto; return(TipoValoracion.Informacion); } } }
/*================================================================================ * GET GRÁFICOS *================================================================================*/ /// <summary> /// Devuelve una colección con los gráficos pertenecientes a un grupo /// </summary> /// <param name="IdGrupo">Id del grupo al que pertenecen los gráficos.</param> /// <returns>Colección de gráficos.</returns> public static ObservableCollection <Grafico> getGraficos(long IdGrupo) { ObservableCollection <Grafico> lista = new ObservableCollection <Grafico>(); using (OleDbConnection conexion = new OleDbConnection(App.Global.CadenaConexion)) { OleDbDataReader lector = null; OleDbDataReader lectorValoraciones = null; try { // Ejecutamos el comando y extraemos los gráficos del lector a la lista. conexion.Open(); OleDbTransaction transaccion = conexion.BeginTransaction(); string comandoSQL = "SELECT * FROM Graficos WHERE IdGrupo=? ORDER BY Numero"; OleDbCommand Comando = new OleDbCommand(comandoSQL, conexion, transaccion); Comando.Parameters.AddWithValue("idgrupo", IdGrupo); lector = Comando.ExecuteReader(); while (lector.Read()) { Grafico grafico = new Grafico(lector); grafico.ListaValoraciones = new ObservableCollection <ValoracionGrafico>(); string comandoSQLValoraciones = "SELECT * FROM Valoraciones WHERE IdGrafico=? ORDER BY Inicio, Id"; OleDbCommand ComandoValoraciones = new OleDbCommand(comandoSQLValoraciones, conexion, transaccion); ComandoValoraciones.Parameters.AddWithValue("idgrafico", grafico.Id); lectorValoraciones = ComandoValoraciones.ExecuteReader(); while (lectorValoraciones.Read()) { ValoracionGrafico valoracion = new ValoracionGrafico(lectorValoraciones); grafico.ListaValoraciones.Add(valoracion); valoracion.Nuevo = false; valoracion.Modificado = false; } //grafico.ListaValoraciones = BdValoracionesGraficos.getValoraciones(grafico.Id); lista.Add(grafico); grafico.Nuevo = false; grafico.Modificado = false; } } catch (Exception ex) { Utils.VerError("BdGraficos.getGraficos", ex); } finally { lector.Close(); } } return(lista); }
/*================================================================================ * GUARDAR VALORACIONES *================================================================================*/ /// <summary> /// Guarda la lista de valoraciones que se le pasa en la base de datos, actualizando las modificadas e insertando las nuevas. /// </summary> /// <param name="lista">Lista con las valoraciones a guardar.</param> public static void GuardarValoraciones(IEnumerable <ValoracionGrafico> lista) { // Si la lista está vacía, salimos. if (lista == null || lista.Count() == 0) { return; } using (OleDbConnection conexion = new OleDbConnection(App.Global.CadenaConexion)) { string SQLInsertar = "INSERT INTO Valoraciones (IdGrafico, Inicio, Linea, Descripcion, Final, Tiempo) " + "VALUES (?, ?, ?, ?, ?, ?);"; string SQLActualizar = "UPDATE Valoraciones SET IdGrafico=?, Inicio=?, Linea=?, Descripcion=?, " + "Final=?, Tiempo=? WHERE Id=?;"; try { foreach (ValoracionGrafico valoracion in lista) { if (valoracion.Nuevo) { OleDbCommand comando = new OleDbCommand(SQLInsertar, conexion); ValoracionGrafico.ParseToCommand(comando, valoracion); if (conexion.State == System.Data.ConnectionState.Closed) { conexion.Open(); } comando.ExecuteNonQuery(); valoracion.Nuevo = false; valoracion.Modificado = false; } else if (valoracion.Modificado) { OleDbCommand comando = new OleDbCommand(SQLActualizar, conexion); ValoracionGrafico.ParseToCommand(comando, valoracion); conexion.Open(); comando.ExecuteNonQuery(); valoracion.Modificado = false; } } } catch (OleDbException ex) { Utils.VerError("BdValoracionesGraficos.GuardarValoraciones", ex); } } }
/*================================================================================ * GET VALORACIONES *================================================================================*/ /// <summary> /// Devuelve una colección con las valoraciones pertenecientes a un gráfico /// </summary> /// <param name="IdGrafico">Id del gráfico al que pertenecen las valoraciones.</param> /// <returns>Colección de valoraciones.</returns> public static ObservableCollection <ValoracionGrafico> getValoraciones(long IdGrafico) { // Creamos la lista y el comando que extrae los gráficos. ObservableCollection <ValoracionGrafico> lista = new ObservableCollection <ValoracionGrafico>(); using (OleDbConnection conexion = new OleDbConnection(App.Global.CadenaConexion)) { OleDbDataReader lector = null; // Ejecutamos el comando y extraemos los gráficos del lector a la lista. try { if (conexion.State != System.Data.ConnectionState.Open) { conexion.Open(); } string comandoSQL = "SELECT * FROM Valoraciones WHERE IdGrafico=? ORDER BY Inicio, Id"; OleDbCommand Comando = new OleDbCommand(comandoSQL, conexion); Comando.Parameters.AddWithValue("idgrafico", IdGrafico); lector = Comando.ExecuteReader(); while (lector.Read()) { ValoracionGrafico valoracion = new ValoracionGrafico(lector); lista.Add(valoracion); valoracion.Nuevo = false; valoracion.Modificado = false; } } catch (Exception ex) { Utils.VerError("BdValoracionesGraficos.GetValoraciones", ex); } finally { lector.Close(); } } return(lista); }
private void CrearGrupoDeWord() { // Si el archivo no existe, salimos. if (!File.Exists(ArchivoWord)) { return; } // Creamos la aplicación de Word. Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document wordDoc = null; wordApp.Visible = false; try { // Abrimos el documento de word. wordDoc = wordApp.Documents.Open(ArchivoWord); StringBuilder sb = new StringBuilder(); foreach (Microsoft.Office.Interop.Word.Paragraph parrafo in wordDoc.Paragraphs) { string t = parrafo.Range.Text + "\n"; //t.Replace("\r", "\n"); t = t.Replace("Balorazioa", "Final\nBalorazioa"); t = t.Replace("0h", "0"); t = t.Replace("5h", "5"); sb.Append(t); } string[] todo = sb.ToString().Split('\n'); // Creamos el grupo nuevo if (String.IsNullOrEmpty(Notas.Trim())) { Notas = FechaActual.ToString("dd-MM-yyyy"); } int idgruponuevo = BdGruposGraficos.NuevoGrupo(FechaActual, Notas); // Definimos las variables a usar bool EnUnGrafico = false; Grafico grafico = new Grafico(); ValoracionGrafico valoracionanterior = new ValoracionGrafico(); bool IniciaGrafico = false; bool SalirDelBucle = false; // Recorremos los párrafos del documento. foreach (string parrafo in todo) { ValoracionGrafico valoracion = new ValoracionGrafico(); string texto = GestionGraficos.LimpiarTexto(parrafo); GestionGraficos.TipoValoracion tipo = GestionGraficos.ParseaTexto(texto, ref valoracion); switch (tipo) { case GestionGraficos.TipoValoracion.InicioGrafico: if (EnUnGrafico) { // Gestionamos el error if (VerErrorGrafico(grafico.Numero, parrafo, texto)) { grafico = new Grafico(); grafico.IdGrupo = idgruponuevo; grafico.Numero = (int)valoracion.Linea; IniciaGrafico = true; EnUnGrafico = true; continue; } else { SalirDelBucle = true; } } else { grafico = new Grafico(); grafico.IdGrupo = idgruponuevo; grafico.Numero = (int)valoracion.Linea; if (grafico.Numero % 2 == 0) { grafico.Turno = 2; } IniciaGrafico = true; EnUnGrafico = true; } break; case GestionGraficos.TipoValoracion.FinalGrafico: if (!EnUnGrafico) { // Gestionamos el error if (VerErrorGrafico(grafico.Numero, parrafo, texto)) { EnUnGrafico = false; IniciaGrafico = false; continue; } else { SalirDelBucle = true; } } else { grafico.Final = valoracionanterior.Inicio; grafico.Valoracion = valoracion.Tiempo; grafico.Recalcular(); // Inferimos el día de la semana a la que pertenece. if (grafico.Numero >= App.Global.PorCentro.LunDel && grafico.Numero <= App.Global.PorCentro.LunAl) { grafico.DiaSemana = "L"; } if (grafico.Numero >= App.Global.PorCentro.VieDel && grafico.Numero <= App.Global.PorCentro.VieAl) { grafico.DiaSemana = "V"; } if (grafico.Numero >= App.Global.PorCentro.SabDel && grafico.Numero <= App.Global.PorCentro.SabAl) { grafico.DiaSemana = "S"; } if (grafico.Numero >= App.Global.PorCentro.DomDel && grafico.Numero <= App.Global.PorCentro.DomAl) { grafico.DiaSemana = "F"; } BdGraficos.InsertarGrafico(grafico); IniciaGrafico = false; EnUnGrafico = false; } break; case GestionGraficos.TipoValoracion.Completo: case GestionGraficos.TipoValoracion.Parcial: case GestionGraficos.TipoValoracion.ParcialCodigo: case GestionGraficos.TipoValoracion.ParcialLinea: case GestionGraficos.TipoValoracion.ParcialVacio: if (EnUnGrafico) { if (IniciaGrafico) { grafico.Inicio = valoracion.Inicio; IniciaGrafico = false; } else { valoracionanterior.Final = valoracion.Inicio; } grafico.ListaValoraciones.Add(valoracion); valoracionanterior = valoracion; } break; case GestionGraficos.TipoValoracion.Informacion: if (EnUnGrafico) { if (!IniciaGrafico) { valoracion.Inicio = valoracionanterior.Inicio; } grafico.ListaValoraciones.Add(valoracion); } break; } if (SalirDelBucle) { break; } } } catch (Exception ex) { mensajes.VerError("VentanaNuevoGrupoVM.CrearGrupoDeWord", ex); return; } finally { if (wordDoc != null) { wordDoc.Close(false); } if (wordApp != null) { wordApp.Quit(false); } } }
// ==================================================================================================== #region MÉTODOS AUXILIARES // ==================================================================================================== private void CrearGrupoDeWord2() { // Si el archivo no existe, salimos. if (!File.Exists(ArchivoWord)) { return; } // Creamos la aplicación de Word. Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document wordDoc = null; wordApp.Visible = false; try { // Abrimos el documento de word. wordDoc = wordApp.Documents.Open(ArchivoWord); // Añadimos un retorno de carro delante de las valoraciones. wordDoc.Content.Find.Execute("Balorazioa", false, true, false, false, false, true, 1, false, "\rBalorazioa", 2, false, false, false, false); // Creamos el grupo nuevo if (String.IsNullOrEmpty(Notas.Trim())) { Notas = FechaActual.ToString("dd-MM-yyyy"); } int idgruponuevo = BdGruposGraficos.NuevoGrupo(FechaActual, Notas); // Definimos las variables a usar bool EnUnGrafico = false; Grafico grafico = new Grafico(); ValoracionGrafico valoracionanterior = new ValoracionGrafico(); bool IniciaGrafico = false; bool SalirDelBucle = false; // Recorremos los párrafos del documento. foreach (Microsoft.Office.Interop.Word.Paragraph parrafo in wordDoc.Paragraphs) { ValoracionGrafico valoracion = new ValoracionGrafico(); string texto = GestionGraficos.LimpiarTexto(parrafo.Range.Text); GestionGraficos.TipoValoracion tipo = GestionGraficos.ParseaTexto(texto, ref valoracion); switch (tipo) { case GestionGraficos.TipoValoracion.InicioGrafico: if (EnUnGrafico) { // Gestionamos el error if (VerErrorGrafico(grafico.Numero, parrafo.Range.Text, texto)) { grafico = new Grafico(); grafico.IdGrupo = idgruponuevo; grafico.Numero = (int)valoracion.Linea; IniciaGrafico = true; EnUnGrafico = true; continue; } else { SalirDelBucle = true; } } else { grafico = new Grafico(); grafico.IdGrupo = idgruponuevo; grafico.Numero = (int)valoracion.Linea; if (grafico.Numero % 2 == 0) { grafico.Turno = 2; } IniciaGrafico = true; EnUnGrafico = true; } break; case GestionGraficos.TipoValoracion.FinalGrafico: if (!EnUnGrafico) { // Gestionamos el error if (VerErrorGrafico(grafico.Numero, parrafo.Range.Text, texto)) { EnUnGrafico = false; IniciaGrafico = false; continue; } else { SalirDelBucle = true; } } else { grafico.Final = valoracionanterior.Inicio; grafico.Valoracion = valoracion.Tiempo; grafico.Recalcular(); BdGraficos.InsertarGrafico(grafico); IniciaGrafico = false; EnUnGrafico = false; } break; case GestionGraficos.TipoValoracion.Completo: case GestionGraficos.TipoValoracion.Parcial: case GestionGraficos.TipoValoracion.ParcialCodigo: case GestionGraficos.TipoValoracion.ParcialLinea: case GestionGraficos.TipoValoracion.ParcialVacio: if (EnUnGrafico) { if (IniciaGrafico) { grafico.Inicio = valoracion.Inicio; IniciaGrafico = false; } else { valoracionanterior.Final = valoracion.Inicio; } grafico.ListaValoraciones.Add(valoracion); valoracionanterior = valoracion; } break; case GestionGraficos.TipoValoracion.Informacion: if (EnUnGrafico) { if (!IniciaGrafico) { valoracion.Inicio = valoracionanterior.Inicio; } grafico.ListaValoraciones.Add(valoracion); } break; } if (SalirDelBucle) { break; } } } catch (Exception ex) { mensajes.VerError("VentanaNuevoGrupoVM.CrearGrupoDeWord", ex); return; } finally { if (wordDoc != null) { wordDoc.Close(false); } if (wordApp != null) { wordApp.Quit(false); } } }