// ==================================================================================================== #region MÉTODOS PÚBLICOS // ==================================================================================================== public void CargarGraficos() { if (App.Global.CadenaConexion == null || GrupoSeleccionado == null) { ListaGraficos.Clear(); return; } ListaGraficos = BdGraficos.getGraficos(GrupoSeleccionado.Id); }
public static async Task CrearEstadisticasGraficosEnPdf(Workbook libro, DateTime fecha, long idGrupoGrafico) { await Task.Run(() => { // Definimos las hojas. Worksheet Hoja = libro.Worksheets[1]; // Hoja de datos // Definimos y llenamos la lista de estadisticas. List <EstadisticasGraficos> lista = BdGraficos.GetEstadisticasGrupoGraficos(idGrupoGrafico); // Definimos el título y el centro de la hoja de datos. Hoja.Range["O1"].Value = App.Global.CentroActual.ToString().ToUpper(); // Escribimos las estadísticas en la hoja. SetEstadisticasEnHoja(Hoja, lista, fecha, 4); // Establecemos la gráfica y la serie de la gráfica. //Chart grafica = Hoja2.ChartObjects("Grafico1").Chart; Chart grafica = libro.Charts[1]; Series serie = grafica.SeriesCollection(1); // Establecemos el título de la serie y su formato. //serie.Name = "Grupo de gráficos => " + fecha.ToString("dd-MMM-yyyy").Replace(".", ""); //serie.Name = "Días trabajados por turno."; grafica.ChartTitle.Text = "Porcentaje de gráficos por turno."; //grafica.ChartTitle.Top = 410; //grafica.ChartTitle.Font.Size = 22; //grafica.ChartTitle.Font.Bold = true; //grafica.ChartTitle.Font.Color = Color.FromArgb(0, 255, 255, 153); grafica.ChartTitle.Left = (grafica.ChartArea.Width - grafica.ChartTitle.Width) / 2; grafica.ChartArea.RoundedCorners = true; //grafica.HasLegend = false; // Establecemos el origen de datos de la serie. serie.Values = Hoja.Range["D4:D7"]; //serie.HasDataLabels = true; // Formateamos la serie. Esto lo dejaremos fijo en la plantilla. //foreach (DataLabel dl in serie.DataLabels()) { // dl.Font.Size = 16; // dl.Font.Color = Color.FromArgb(0, 255, 255, 255); // dl.Separator = ": "; // dl.Position = XlDataLabelPosition.xlLabelPositionOutsideEnd; // dl.ShowCategoryName = true; // dl.ShowValue = true; //} //serie.HasLeaderLines = false; //serie.Explosion = 10; // Con esto, separamos los sectores. // Seleccionamos todas las hojas. libro.Worksheets.Select(); }); }
public void GuardarGraficos() { try { HayCambios = false; if (ListaGraficos != null && ListaGraficos.Count > 0) { BdGraficos.GuardarGraficos(ListaGraficos.Where(gg => gg.Nuevo || gg.Modificado)); } if (_listaborrados.Count > 0) { BdGraficos.BorrarGraficos(_listaborrados); _listaborrados.Clear(); } if (_valoracionesborradas.Count > 0) { BdValoracionesGraficos.BorrarValoraciones(_valoracionesborradas); _valoracionesborradas.Clear(); } } catch (Exception ex) { Mensajes.VerError("GraficosViewModel.GuardarGraficos", ex); HayCambios = true; } }
public static async Task CrearEstadisticasGruposGraficosEnPdf(Workbook libro, DateTime fecha) { await Task.Run(() => { // Definimos la hoja. Worksheet Hoja = libro.Worksheets[1]; // Definimos y llenamos la lista de estadisticas. List <EstadisticasGraficos> lista = BdGraficos.GetEstadisticasGraficosDesdeFecha(fecha); // Definimos el título y el centro Hoja.Range["O1"].Value = App.Global.CentroActual.ToString().ToUpper(); // Establecemos la fila inicial, los grupos procesados la última fecha procesada y la lista temporal. int fila = 0; int grupos = 0; int totalgrupos = 0; double num = 1; DateTime ultimafecha = new DateTime(0); List <EstadisticasGraficos> listatemporal = new List <EstadisticasGraficos>(); // Pasamos centro a centro y lo generamos. foreach (EstadisticasGraficos estadistica in lista) { double valor = num / lista.Count * 100; //modificaBarra.Invoke(valor); App.Global.ValorBarraProgreso = valor; num++; // Si la fecha es igual a la última, la añadimos a la lista. if (estadistica.Validez == ultimafecha) { listatemporal.Add(estadistica); // Si no es igual, reiniciamos la lista temporal, } else { if (fila == 0) { listatemporal.Add(estadistica); fila = 4; grupos = 1; ultimafecha = estadistica.Validez; continue; } if (fila > 4) { Hoja.Range["A3:O8"].Copy(Hoja.Cells[fila - 1, 1]); } if (grupos == 3) { Hoja.HPageBreaks.Add(Hoja.Cells[fila + 7, 1]); } SetEstadisticasEnHoja(Hoja, listatemporal, ultimafecha, fila); totalgrupos++; listatemporal = new List <EstadisticasGraficos>(); listatemporal.Add(estadistica); fila += 8; grupos = grupos == 3 ? 1 : grupos + 1; ultimafecha = estadistica.Validez; } if (totalgrupos > 0) { if (fila > 3) { Hoja.Range["A3:O8"].Copy(Hoja.Cells[fila - 1, 1]); } SetEstadisticasEnHoja(Hoja, listatemporal, ultimafecha, fila); } } // Establecemos el rango de impresión. Hoja.PageSetup.PrintArea = Hoja.Range["A1", Hoja.Cells[fila + 4, 15]].Address; // Seleccionamos sólo la primera hoja del libro. libro.Worksheets[1].Select(); }); }
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); } } }
// Ejecución del comando private void Aceptar(object parametro) { if (parametro == null) { return; } Window ventana = (Window)parametro; try { // Si la fecha ya existe, mostramos mensaje if (BdGruposGraficos.ExisteGrupo(FechaActual)) { mensajes.VerMensaje("Ya existe un grupo con la fecha elegida.", "ERROR"); return; } if (NuevoMarcado) { if (String.IsNullOrEmpty(Notas.Trim())) { Notas = FechaActual.ToString("dd-MM-yyyy"); } BdGruposGraficos.NuevoGrupo(FechaActual, Notas); ventana.DialogResult = true; ventana.Close(); } if (RepetirMarcado) //TODO: Sustituir por grupo seleccionado. { ObservableCollection <Grafico> graficos = BdGraficos.getGraficosGrupoPorFecha(GrupoSeleccionado.Validez); ObservableCollection <ValoracionGrafico> valoraciones = new ObservableCollection <ValoracionGrafico>(); if (String.IsNullOrEmpty(Notas.Trim())) { Notas = FechaActual.ToString("dd-MM-yyyy"); } int idgruponuevo = BdGruposGraficos.NuevoGrupo(FechaActual, Notas); int idgraficonuevo = -1; foreach (Grafico grafico in graficos) { grafico.IdGrupo = idgruponuevo; idgraficonuevo = BdGraficos.InsertarGrafico(grafico); valoraciones = BdValoracionesGraficos.getValoraciones(grafico.Id); foreach (ValoracionGrafico valoracion in valoraciones) { valoracion.IdGrafico = idgraficonuevo; BdValoracionesGraficos.InsertarValoracion(valoracion); } } // Cerramos la ventana enviando True. ventana.DialogResult = true; ventana.Close(); } if (WordMarcado) { if (String.IsNullOrEmpty(ArchivoWord)) { mensajes.VerMensaje("No ha seleccionado ningún archivo.", "ERROR"); return; } CrearGrupoDeWord(); // Cerramos la ventana enviando True. ventana.DialogResult = true; ventana.Close(); } } catch (Exception ex) { mensajes.VerError("VentanaNuevoGrupoVM.Aceptar", ex); } }