/// <summary>
        /// Realiza la busqueda de Sección Parámetro
        /// </summary>
        /// <param name="filtro">Filtro de Sección Parámetro</param>
        /// <returns>Listado de Parámetro Sección</returns>
        public ProcessResult <List <ParametroSeccionResponse> > BuscarParametroSeccion(ParametroSeccionRequest filtro)
        {
            ProcessResult <List <ParametroSeccionResponse> > resultado = new ProcessResult <List <ParametroSeccionResponse> >();

            try
            {
                var listado = parametroSeccionLogicRepository.BuscarParametroSeccion(filtro.CodigoParametro, filtro.CodigoSeccion, filtro.Nombre, filtro.CodigoTipoDato, filtro.IndicadorPermiteModificar, filtro.IndicadorObligatorio, filtro.IndicadorSistema, filtro.EstadoRegistro);
                var listaParametroSeccion = new List <ParametroSeccionResponse>();
                foreach (var item in listado)
                {
                    listaParametroSeccion.Add(ParametroSeccionAdapter.ObtenerParametroSeccionResponse(item));
                }
                resultado.Result    = listaParametroSeccion;
                resultado.IsSuccess = true;
            }
            catch (Exception e)
            {
                resultado.Result    = new List <ParametroSeccionResponse>();
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <ParametroValorService>(e);
            }

            return(resultado);
        }
        /// <summary>
        /// Realiza el registro de un Parámetro Sección
        /// </summary>
        /// <param name="filtro">Parámetro Sección a Registrar</param>
        /// <returns>Indicador de Error</returns>
        public ProcessResult <string> RegistrarParametroSeccion(ParametroSeccionRequest filtro)
        {
            string result           = "0";
            var    resultadoProceso = new ProcessResult <string>();

            try
            {
                if (filtro.CodigoParametro == null)
                {
                    throw new Exception();
                }

                var seccionRepetida = BuscarParametroSeccion(new ParametroSeccionRequest()
                {
                    CodigoParametro = filtro.CodigoParametro,
                    Nombre          = filtro.Nombre
                }).Result.Where(item => filtro.CodigoSeccion == null || item.CodigoSeccion != filtro.CodigoSeccion).FirstOrDefault();

                if (seccionRepetida != null)
                {
                    result = "2";
                    resultadoProceso.Result    = result;
                    resultadoProceso.IsSuccess = true;

                    return(resultadoProceso);
                }
                if (filtro.CodigoSeccion == null)
                {
                    var parametroSeccionUltimo = BuscarParametroSeccion(new ParametroSeccionRequest()
                    {
                        CodigoParametro = filtro.CodigoParametro,
                        EstadoRegistro  = null
                    }).Result.OrderByDescending(item => item.CodigoSeccion).FirstOrDefault();
                    filtro.CodigoSeccion = parametroSeccionUltimo != null ? parametroSeccionUltimo.CodigoSeccion + 1 : 1;

                    parametroSeccionEntityRepository.Insertar(ParametroSeccionAdapter.ObtenerParametroSeccionEntity(filtro));
                }
                else
                {
                    var entity       = ParametroSeccionAdapter.ObtenerParametroSeccionEntity(filtro);
                    var entityActual = parametroSeccionEntityRepository.GetById(filtro.CodigoParametro, filtro.CodigoSeccion);

                    entityActual.Nombre                          = entity.Nombre;
                    entityActual.CodigoTipoDato                  = entity.CodigoTipoDato;
                    entityActual.IndicadorPermiteModificar       = entity.IndicadorPermiteModificar;
                    entityActual.IndicadorObligatorio            = entity.IndicadorObligatorio;
                    entityActual.CodigoParametroRelacionado      = entity.CodigoParametroRelacionado;
                    entityActual.CodigoSeccionRelacionado        = entity.CodigoSeccionRelacionado;
                    entityActual.CodigoSeccionRelacionadoMostrar = entity.CodigoSeccionRelacionadoMostrar;

                    parametroSeccionEntityRepository.Editar(entityActual);
                }

                parametroSeccionEntityRepository.GuardarCambios();
                resultadoProceso.IsSuccess = true;
            }
            catch (Exception e)
            {
                result = "-1";
                resultadoProceso.Result    = result;
                resultadoProceso.IsSuccess = false;
                resultadoProceso.Exception = new ApplicationLayerException <ParametroValorService>(e);
            }
            return(resultadoProceso);
        }