예제 #1
0
 // ====================================================================================================
 #region MÉTODOS PÚBLICOS
 // ====================================================================================================
 public void CargarGraficos()
 {
     if (App.Global.CadenaConexion == null || GrupoSeleccionado == null)
     {
         ListaGraficos.Clear();
         return;
     }
     ListaGraficos = BdGraficos.getGraficos(GrupoSeleccionado.Id);
 }
예제 #2
0
        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();
            });
        }
예제 #3
0
 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;
     }
 }
예제 #4
0
        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();
            });
        }
예제 #5
0
        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);
                }
            }
        }
예제 #6
0
        // ====================================================================================================
        #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);
                }
            }
        }
예제 #7
0
        // 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);
            }
        }