Exemple #1
0
 /// <summary>
 /// Metodo para inactivar la configuracion anterior
 /// </summary>
 /// <param name="configuracionImportar"></param>
 public void InactivarConfiguracionAnterior(ConfiguracionFormulaInfo configuracionImportar)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxConfiguracionFormulaDAL.ObtenerParametroInactivar(configuracionImportar);
         Update("ConfiguracionFormula_InactivarConfiguracionFormula", parameters);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
 /// <summary>
 /// Metodo para dejar utilizable la pantalla de nuevo
 /// </summary>
 private void LimpiarControles()
 {
     skAyudaOrganizacion.LimpiarCampos();
     txtArchivo.Text      = "";
     ConfiguracionFormula = new ConfiguracionFormulaInfo();
 }
        /// <summary>
        /// Evento para exportar la configuracion de las formulas a excel
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnExportar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (!String.IsNullOrEmpty(skAyudaOrganizacion.Clave))
                {
                    var dlg = new Microsoft.Win32.SaveFileDialog
                    {
                        FileName   = "ConfiguracionFormulas",
                        DefaultExt = ".xlsx",
                        Filter     = "Excel files (.xlsx)|*.xlsx"
                    };

                    // Show save file dialog box
                    var result = dlg.ShowDialog();

                    // Process save file dialog box results
                    if (result != true)
                    {
                        return;
                    }

                    // Save document
                    string nombreArchivo          = dlg.FileName;
                    var    configuracionFormulaPL = new ConfiguracionFormulaPL();
                    var    configuracionImportar  = new ConfiguracionFormulaInfo
                    {
                        NombreArchivo  = nombreArchivo,
                        OrganizacionID = Extensor.ValorEntero(skAyudaOrganizacion.Clave)
                    };

                    bool configuracionFormulaInfo =
                        configuracionFormulaPL.ExportarArchivo(configuracionImportar);

                    if (!configuracionFormulaInfo)
                    {
                        return;
                    }

                    //Guardado correctamente
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.ConfigurarFormula_ExportoCorrectamente,
                                      MessageBoxButton.OK, MessageImage.Correct);
                    LimpiarControles();
                }
                else
                {
                    //Favor de seleccionar una organizacion
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.ConfigurarFormula_SeleccionarOrganizacion,
                                      MessageBoxButton.OK,
                                      MessageImage.Stop);
                }
            }
            catch (ExcepcionDesconocida ex)
            {
                Logger.Error(ex);
                //Favor de seleccionar una organizacion
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  (ex.InnerException == null ? ex.Message : ex.InnerException.Message),
                                  MessageBoxButton.OK,
                                  MessageImage.Stop);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                //Favor de seleccionar una organizacion
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.ConfigurarFormula_ExportarError,
                                  MessageBoxButton.OK,
                                  MessageImage.Stop);
            }
        }
        /// <summary>
        /// Metodo para generar el archivo excel
        /// </summary>
        /// <param name="configuracionFormulaInfoLista"></param>
        /// <param name="configuracionFormulaExportar"></param>
        /// <returns></returns>
        private bool GenerarArchivo(IList <ConfiguracionFormulaInfo> configuracionFormulaInfoLista,
                                    ConfiguracionFormulaInfo configuracionFormulaExportar)
        {
            bool resp = false;

            try
            {
                Logger.Info();
                string file = configuracionFormulaExportar.NombreArchivo;
                if (File.Exists(file))
                {
                    try
                    {
                        File.Delete(file);
                    }
                    catch (Exception ex)
                    {
                        Logger.Error(ex);
                        throw new ExcepcionDesconocida(ResourceServices.ConfigurarFormula_ArchivoEnUso);
                    }
                }
                var newFile = new FileInfo(file);

                using (var pck = new ExcelPackage(newFile))
                {
                    // get the handle to the existing worksheet
                    var wsData = pck.Workbook.Worksheets.Add(ResourceServices.ConfigurarFormula_TituloExcel);

                    wsData.Cells["A1"].Value = ResourceServices.ConfigurarFormula_TituloExcel;

                    using (ExcelRange r = wsData.Cells["A1:K1"])
                    {
                        r.Merge = true;
                        r.Style.Font.SetFromFont(new Font("Arial Bold", 16, FontStyle.Regular));
                        r.Style.Font.Color.SetColor(Color.White);
                        r.Style.HorizontalAlignment = ExcelHorizontalAlignment.CenterContinuous;
                        r.Style.Fill.PatternType    = ExcelFillStyle.Solid;
                        r.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(255, 178, 34, 34));
                    }

                    ExcelRangeBase dataRange;
                    if (configuracionFormulaInfoLista == null ||
                        configuracionFormulaInfoLista.Count <= 0)
                    {
                        var configuracionFormulaInfo = new ConfiguracionFormulaInfo
                        {
                            Formula = new FormulaInfo {
                                Descripcion = ""
                            },
                            PesoInicioMinimo = 0,
                            PesoInicioMaximo = 0,
                            TipoGanado       = "",
                            PesoSalida       = 0,
                            FormulaSiguiente = new FormulaInfo {
                                Descripcion = ""
                            },
                            DiasEstanciaMinimo   = 0,
                            DiasEstanciaMaximo   = 0,
                            DiasTransicionMinimo = 0,
                            DiasTransicionMaximo = 0,
                            Disponibilidad       = Disponibilidad.No
                        };
                        configuracionFormulaInfoLista = new List <ConfiguracionFormulaInfo> {
                            configuracionFormulaInfo
                        };

                        dataRange = wsData.Cells["A2"].LoadFromCollection(
                            from s in configuracionFormulaInfoLista
                            orderby s.ConfiguracionFormulaID
                            select new
                        {
                            Fórmula                = s.Formula.Descripcion,
                            Peso_Inicio_Mínimo     = s.PesoInicioMinimo,
                            Peso_Inicio_Máximo     = s.PesoInicioMaximo,
                            Tipo_Ganado            = s.TipoGanado,
                            Peso_Salida            = s.PesoSalida,
                            Fórmula_Siguiente      = s.FormulaSiguiente.Descripcion,
                            Días_Estancia_Mínimo   = s.DiasEstanciaMinimo,
                            Días_Estancia_Máximo   = s.DiasEstanciaMaximo,
                            Días_Transición_Mínimo = s.DiasTransicionMinimo,
                            Días_Transición_Máximo = s.DiasTransicionMaximo,
                            Disponibilidad         = s.Disponibilidad
                        },
                            true, TableStyles.None);
                    }
                    else
                    {
                        dataRange = wsData.Cells["A2"].LoadFromCollection(
                            from s in configuracionFormulaInfoLista
                            orderby s.ConfiguracionFormulaID
                            select new
                        {
                            Fórmula                = s.Formula.Descripcion,
                            Peso_Inicio_Mínimo     = s.PesoInicioMinimo,
                            Peso_Inicio_Máximo     = s.PesoInicioMaximo,
                            Tipo_Ganado            = s.TipoGanado,
                            Peso_Salida            = s.PesoSalida,
                            Fórmula_Siguiente      = s.FormulaSiguiente.Descripcion,
                            Días_Estancia_Mínimo   = s.DiasEstanciaMinimo,
                            Días_Estancia_Máximo   = s.DiasEstanciaMaximo,
                            Días_Transición_Mínimo = s.DiasTransicionMinimo,
                            Días_Transición_Máximo = s.DiasTransicionMaximo,
                            Disponibilidad         = s.Disponibilidad,
                        },
                            true, TableStyles.None);
                    }

                    using (ExcelRange r = wsData.Cells["A2:K2"])
                    {
                        r.Style.VerticalAlignment   = ExcelVerticalAlignment.Center;
                        r.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
                        r.Style.Font.SetFromFont(new Font("Arial Bold", 11, FontStyle.Regular));
                        r.Style.Font.Color.SetColor(Color.White);
                        r.Style.Fill.PatternType = ExcelFillStyle.Solid;
                        r.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(255, 178, 34, 34));
                    }

                    IList <FormulaInfo> formulasList = new List <FormulaInfo>();
                    var formulasBL = new FormulaBL();
                    formulasList = formulasBL.ObtenerTodos();

                    IList <Disponibilidad> disponibilidadEnums =
                        Enum.GetValues(typeof(Disponibilidad)).Cast <Disponibilidad>().OrderByDescending(x => x.ToString()).ToList();

                    if (formulasList != null && formulasList.Count > 0)
                    {
                        var celdasValidacionFormulas = String.Format("{0}{1}", "A3:A", configuracionFormulaInfoLista.Count + 2);
                        AsignarValidacionFormulas(celdasValidacionFormulas,
                                                  wsData,
                                                  formulasList);

                        celdasValidacionFormulas = String.Format("{0}{1}", "F3:F", configuracionFormulaInfoLista.Count + 2);
                        AsignarValidacionFormulas(celdasValidacionFormulas,
                                                  wsData,
                                                  formulasList);

                        celdasValidacionFormulas = String.Format("{0}{1}", "K3:K", configuracionFormulaInfoLista.Count + 2);
                        AsignarValidacionFormulas(celdasValidacionFormulas,
                                                  wsData,
                                                  disponibilidadEnums);

                        AgregarComentarios(wsData, configuracionFormulaInfoLista);
                    }

                    AgregarPestañaTipoGanado(pck);

                    dataRange.AutoFitColumns();

                    pck.Save();
                }
                resp = true;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            return(resp);
        }
        /// <summary>
        /// Metodo para validar las formalas obtenidas en un regitro del documento excel
        /// </summary>
        /// <param name="configuracionFormula"></param>
        /// <param name="renglon"></param>
        /// <param name="currentWorksheet"></param>
        /// <returns></returns>
        private bool ValidarFormulasObtenidas(ConfiguracionFormulaInfo configuracionFormula, int renglon, ExcelWorksheet currentWorksheet)
        {
            bool regitroValido = false;

            if (configuracionFormula != null)
            {
                if (configuracionFormula.Formula != null)
                {
                    if (configuracionFormula.FormulaSiguiente != null)
                    {
                        if (configuracionFormula.PesoInicioMaximo >= configuracionFormula.PesoInicioMinimo)
                        {
                            if (configuracionFormula.DiasEstanciaMaximo >= configuracionFormula.DiasEstanciaMinimo)
                            {
                                if (configuracionFormula.DiasTransicionMaximo >= configuracionFormula.DiasTransicionMinimo)
                                {
                                    if (!String.IsNullOrEmpty(configuracionFormula.TipoGanado))
                                    {
                                        if (ValidarTiposDeGanado(configuracionFormula.TipoGanado))
                                        {
                                            regitroValido = true;
                                        }
                                        else
                                        {
                                            //Dias transicion maximo debe ser mayor a los dias transicion minimo
                                            throw new ExcepcionDesconocida(String.Format("{0}{1}{2}",
                                                                                         ResourceServices.ConfigurarFormula_EnLaFormula,
                                                                                         configuracionFormula.Formula.Descripcion,
                                                                                         ResourceServices.ConfigurarFormula_TipoGanadoInvalido)
                                                                           );
                                        }
                                    }
                                    else
                                    {
                                        //Dias transicion maximo debe ser mayor a los dias transicion minimo
                                        throw new ExcepcionDesconocida(String.Format("{0}{1}{2}",
                                                                                     ResourceServices.ConfigurarFormula_EnLaFormula,
                                                                                     configuracionFormula.Formula.Descripcion,
                                                                                     ResourceServices.ConfigurarFormula_TipoGanadoFaltante)
                                                                       );
                                    }
                                }
                                else
                                {
                                    //Dias transicion maximo debe ser mayor a los dias transicion minimo
                                    throw new ExcepcionDesconocida(String.Format("{0}{1}{2}",
                                                                                 ResourceServices.ConfigurarFormula_EnLaFormula,
                                                                                 configuracionFormula.Formula.Descripcion,
                                                                                 ResourceServices.ConfigurarFormula_DiasTransicion)
                                                                   );
                                }
                            }
                            else
                            {
                                //Dias estancia maximo debe ser mayor a los dias estancia minimo
                                throw new ExcepcionDesconocida(String.Format("{0}{1}{2}",
                                                                             ResourceServices.ConfigurarFormula_EnLaFormula,
                                                                             configuracionFormula.Formula.Descripcion,
                                                                             ResourceServices.ConfigurarFormula_DiasEstancia)
                                                               );
                            }
                        }
                        else
                        {
                            //Peso inicio maximo debe ser mayor al peso inicio minimo
                            throw new ExcepcionDesconocida(String.Format("{0}{1}{2}",
                                                                         ResourceServices.ConfigurarFormula_EnLaFormula,
                                                                         configuracionFormula.Formula.Descripcion,
                                                                         ResourceServices.ConfigurarFormula_PesoInicio)
                                                           );
                        }
                    }
                    else
                    {
                        object formulaSiguiente = currentWorksheet.Cells[renglon, 6].Value;
                        //La formula: , no existe en el catalogo de formulas, Favor de validar.
                        throw new ExcepcionDesconocida(String.Format("{0}{1}{2}",
                                                                     ResourceServices.ConfigurarFormula_FormulaNoExiste,
                                                                     formulaSiguiente,
                                                                     ResourceServices.ConfigurarFormula_FormulaNoExiste2)
                                                       );
                    }
                }
                else
                {
                    object formula = currentWorksheet.Cells[renglon, 1].Value;
                    //La formula: , no existe en el catalogo de formulas, Favor de validar.
                    throw new ExcepcionDesconocida(String.Format("{0}{1}{2}",
                                                                 ResourceServices.ConfigurarFormula_FormulaNoExiste,
                                                                 formula,
                                                                 ResourceServices.ConfigurarFormula_FormulaNoExiste2)
                                                   );
                }
            }
            else
            {
                //No tiene el formato correcto
                throw new ExcepcionDesconocida(ResourceServices.ConfigurarFormula_ArchivoNoTieneLaEstructura);
            }
            return(regitroValido);
        }