示例#1
0
        /// <summary>
        /// Realiza la búsqueda de Valores de las Secciones Adicionales de Parámetro 5 parametros de retorno
        /// </summary>
        /// <param name="filtro">Filtro de búsqueda</param>
        /// <returns>Lista de Valores de las Secciones Adicionales de Parámetro</returns>
        public ProcessResult <List <ParametroValorResponse> > BuscarValorSeccionAdicionalRetornaCincoParametros(ParametroValorRequest filtro)
        {
            ProcessResult <List <ParametroValorResponse> > resultadoProceso = new ProcessResult <List <ParametroValorResponse> >();

            try
            {
                List <ParametroValorLogic> listaValorPorSeccionParametro = parametroValorLogicRepository.BuscarValorSeccionAdicionalParametro(
                    new Guid(filtro.CodigoEmpresa),
                    filtro.IndicadorEmpresa.Value,
                    new Guid(filtro.CodigoSistema),
                    filtro.CodigoIdentificador,
                    filtro.CodigoIdioma);

                resultadoProceso.Result = new List <ParametroValorResponse>();

                foreach (ParametroValorLogic parametroValorLogic in listaValorPorSeccionParametro)
                {
                    ParametroValorResponse parametroValorResponse = ParametroValorAdapter.ObtenerValorPorSeccionParametro(parametroValorLogic);
                    resultadoProceso.Result.Add(parametroValorResponse);
                }
            }
            catch (Exception)
            {
                resultadoProceso.IsSuccess = false;
            }

            return(resultadoProceso);
        }
        /* JCP: 16/01/2018
         * Metodo Original para carga de parametros se reemplazo la logica
         * por BuscarParametroValor_Optimizado que hace la carga de parametros
         * en memoria para luego utilizarlas
         * /// <summary>
         * /// Realiza la busqueda de Parametro Valor
         * /// </summary>
         * /// <param name="filtro">Filtro de Parametro Valor</param>
         * /// <returns>Listado de parametro valor</returns>
         * public ProcessResult<List<ParametroValorResponse>> BuscarParametroValor(ParametroValorRequest filtro)
         * {
         *  ProcessResult<List<ParametroValorResponse>> resultado = new ProcessResult<List<ParametroValorResponse>>();
         *
         *  try
         *  {
         *      List<ParametroValorLogic> listado = parametroValorLogicRepository.BuscarParametroValor(
         *          filtro.CodigoParametro,
         *          filtro.IndicadorEmpresa,
         *          (filtro.CodigoEmpresa != null ? new Guid(filtro.CodigoEmpresa) : (Guid?)null),
         *          (filtro.CodigoSistema != null ? new Guid(filtro.CodigoSistema) : (Guid?)null),
         *          filtro.CodigoIdentificador,
         *          filtro.TipoParametro,
         *          filtro.CodigoSeccion,
         *          filtro.CodigoValor,
         *          filtro.Valor,
         *          filtro.EstadoRegistro);
         *
         *      var listaParametroValor = new List<ParametroValorResponse>();
         *      ParametroValorResponse parametroValor = new ParametroValorResponse();
         *      parametroValor.RegistroCadena = new Dictionary<string, string>();
         *      parametroValor.RegistroObjeto = new Dictionary<string, object>();
         *
         *      for (var iterator = 0; iterator < listado.Count; iterator++)
         *      {
         *          var itemValue = listado[iterator];
         *          parametroValor.Valor = itemValue.Valor;
         *          parametroValor.CodigoSeccion = itemValue.CodigoSeccion;
         *
         *          var listSecciones = parametroSeccionService.BuscarParametroSeccion(new ParametroSeccionRequest()
         *          {
         *              CodigoParametro = itemValue.CodigoParametro
         *          }).Result;
         *
         *          var seccionActual = listSecciones.Where(itemSeccion => itemSeccion.CodigoSeccion == itemValue.CodigoSeccion).FirstOrDefault();
         *          if (seccionActual != null)
         *          {
         *              string valorTexto = ParametroValorAdapter.ObtenerParametroValorTexto(itemValue.CodigoTipoDato, itemValue.Valor);
         *              object valorObject = ParametroValorAdapter.ObtenerParametroValorObjeto(itemValue.CodigoTipoDato, itemValue.Valor);
         *
         *              //Asginación de la Sección con su respectivo Valor Original
         *              parametroValor.RegistroCadena.Add(itemValue.CodigoSeccion.ToString(), valorTexto);
         *              parametroValor.RegistroObjeto.Add(itemValue.CodigoSeccion.ToString(), valorObject);
         *
         *              //Asginación de la Sección con su respectivo Valor Relacionado
         *              if (seccionActual.CodigoParametroRelacionado != null && seccionActual.CodigoSeccionRelacionado != null && seccionActual.CodigoSeccionRelacionadoMostrar != null)
         *              {
         *                  var parametroValorRelacionado = parametroValorLogicRepository.BuscarParametroValor(seccionActual.CodigoParametroRelacionado, null, null, null, null, null, null, null, null, DatosConstantes.EstadoRegistro.Activo);
         *
         *                  var codigoValorRelacionado = parametroValorRelacionado.Where(itemWhere => itemWhere.CodigoSeccion == seccionActual.CodigoSeccionRelacionado && itemWhere.Valor == valorTexto).Select(itemSelect => itemSelect.CodigoValor).FirstOrDefault();
         *
         *                  var valorRelacionado = parametroValorRelacionado.Where(itemWhere => itemWhere.CodigoValor == codigoValorRelacionado && itemWhere.CodigoSeccion == seccionActual.CodigoSeccionRelacionadoMostrar).FirstOrDefault() ?? new ParametroValorLogic();
         *                  object valorObjectRelacionado = ParametroValorAdapter.ObtenerParametroValorObjeto(valorRelacionado.CodigoTipoDato, valorRelacionado.Valor);
         *                  string valorTextoRelacionado = ParametroValorAdapter.ObtenerParametroValorTexto(valorRelacionado.CodigoTipoDato, valorRelacionado.Valor);
         *
         *                  parametroValor.RegistroCadena.Add("-" + itemValue.CodigoSeccion.ToString(), valorTextoRelacionado);
         *                  parametroValor.RegistroObjeto.Add("-" + itemValue.CodigoSeccion.ToString(), valorObjectRelacionado);
         *              }
         *
         *
         *              //Asginación del Estado de Registro
         *              if (parametroValor.EstadoRegistro == null || parametroValor.EstadoRegistro == DatosConstantes.EstadoRegistro.Inactivo)
         *              {
         *                  parametroValor.EstadoRegistro = itemValue.EstadoRegistro;
         *              }
         *
         *              //Añade el registro en la Lista de Parametros según su quiebre
         *              if (iterator == listado.Count - 1 || itemValue.CodigoValor != listado[iterator + 1].CodigoValor)
         *              {
         *                  parametroValor.CodigoValor = itemValue.CodigoValor;
         *                  parametroValor.CodigoIdentificador = itemValue.CodigoIdentificador;
         *                  parametroValor.CodigoParametro = itemValue.CodigoParametro;
         *
         *                  var seccionesFaltante = listSecciones.Where(itemWhere => !parametroValor.RegistroCadena.Any(itemAny => itemAny.Key == itemWhere.CodigoSeccion.ToString())).ToList();
         *
         *                  foreach (var seccion in seccionesFaltante)
         *                  {
         *                      //Setear la Sección con su respectivo Valor
         *                      parametroValor.RegistroCadena.Add(seccion.CodigoSeccion.ToString(), null);
         *
         *                      parametroValor.RegistroObjeto.Add(seccion.CodigoSeccion.ToString(), null);
         *                  }
         *
         *                  listaParametroValor.Add(parametroValor);
         *                  //Limpiar variable
         *                  parametroValor = new ParametroValorResponse();
         *                  parametroValor.RegistroCadena = new Dictionary<string, string>();
         *                  parametroValor.RegistroObjeto = new Dictionary<string, object>();
         *              }
         *          }
         *      }
         *
         *      resultado.Result = listaParametroValor;
         *  }
         *  catch (Exception e)
         *  {
         *      resultado.Result = new List<ParametroValorResponse>();
         *      resultado.IsSuccess = false;
         *      resultado.Exception = new ApplicationLayerException<ParametroValorService>(e);
         *  }
         *
         *  return resultado;
         * }*/

        /// <summary>
        /// Realiza la busqueda de Parametro Valor
        /// </summary>
        /// <param name="filtro">Filtro de Parametro Valor</param>
        /// <returns>Listado de parametro valor</returns>
        public ProcessResult <List <ParametroValorResponse> > BuscarParametroValor(ParametroValorRequest filtro)
        {
            ProcessResult <List <ParametroValorResponse> > resultado = new ProcessResult <List <ParametroValorResponse> >();

            try
            {
                List <ParametroValorLogic> listado = parametroValorLogicRepository.BuscarParametroValor(
                    filtro.CodigoParametro,
                    filtro.IndicadorEmpresa,
                    (filtro.CodigoEmpresa != null ? new Guid(filtro.CodigoEmpresa) : (Guid?)null),
                    (filtro.CodigoSistema != null ? new Guid(filtro.CodigoSistema) : (Guid?)null),
                    filtro.CodigoIdentificador,
                    filtro.TipoParametro,
                    filtro.CodigoSeccion,
                    filtro.CodigoValor,
                    filtro.Valor,
                    filtro.EstadoRegistro);

                var listaParametroValor = new List <ParametroValorResponse>();

                int?codigoParametro = null;

                if (listado.Count > 0)
                {
                    codigoParametro = listado.FirstOrDefault().CodigoParametro;
                }

                var listSecciones = parametroSeccionService.BuscarParametroSeccion(new ParametroSeccionRequest()
                {
                    CodigoParametro = codigoParametro
                }).Result;


                List <ParametroValorLogic> listaparametroValorRelacionado = new List <ParametroValorLogic>();
                List <int> listaParametrosCargados = new List <int>();

                foreach (ParametroSeccionResponse seccionActual in listSecciones)
                {
                    //para ver si tiene parametro relacionado
                    //tambien vemos que no lo tengamos cargado
                    if (seccionActual.CodigoParametroRelacionado != null &&
                        !listaParametrosCargados.Contains(seccionActual.CodigoParametroRelacionado.Value))
                    {
                        var parametroValorRelacionado = parametroValorLogicRepository.BuscarParametroValor(seccionActual.CodigoParametroRelacionado, null, null, null, null, null, null, null, null, DatosConstantes.EstadoRegistro.Activo);

                        listaparametroValorRelacionado.AddRange(parametroValorRelacionado);
                    }
                }


                ParametroValorResponse parametroValor = new ParametroValorResponse();
                parametroValor.RegistroCadena = new Dictionary <string, string>();
                parametroValor.RegistroObjeto = new Dictionary <string, object>();

                for (var iterator = 0; iterator < listado.Count; iterator++)
                {
                    var itemValue = listado[iterator];



                    var seccionActual = listSecciones.Where(itemSeccion => itemSeccion.CodigoSeccion == itemValue.CodigoSeccion).FirstOrDefault();
                    if (seccionActual != null)
                    {
                        string valorTexto  = ParametroValorAdapter.ObtenerParametroValorTexto(itemValue.CodigoTipoDato, itemValue.Valor);
                        object valorObject = ParametroValorAdapter.ObtenerParametroValorObjeto(itemValue.CodigoTipoDato, itemValue.Valor);

                        //Asginación de la Sección con su respectivo Valor Original
                        parametroValor.RegistroCadena.Add(itemValue.CodigoSeccion.ToString(), valorTexto);
                        parametroValor.RegistroObjeto.Add(itemValue.CodigoSeccion.ToString(), valorObject);

                        //Asginación de la Sección con su respectivo Valor Relacionado
                        if (seccionActual.CodigoParametroRelacionado != null && seccionActual.CodigoSeccionRelacionado != null && seccionActual.CodigoSeccionRelacionadoMostrar != null)
                        {
                            var codigoValorRelacionado = listaparametroValorRelacionado.Where(itemWhere => itemWhere.CodigoSeccion == seccionActual.CodigoSeccionRelacionado && itemWhere.Valor == valorTexto).Select(itemSelect => itemSelect.CodigoValor).FirstOrDefault();

                            var    valorRelacionado       = listaparametroValorRelacionado.Where(itemWhere => itemWhere.CodigoValor == codigoValorRelacionado && itemWhere.CodigoSeccion == seccionActual.CodigoSeccionRelacionadoMostrar).FirstOrDefault() ?? new ParametroValorLogic();
                            object valorObjectRelacionado = ParametroValorAdapter.ObtenerParametroValorObjeto(valorRelacionado.CodigoTipoDato, valorRelacionado.Valor);
                            string valorTextoRelacionado  = ParametroValorAdapter.ObtenerParametroValorTexto(valorRelacionado.CodigoTipoDato, valorRelacionado.Valor);

                            parametroValor.RegistroCadena.Add("-" + itemValue.CodigoSeccion.ToString(), valorTextoRelacionado);
                            parametroValor.RegistroObjeto.Add("-" + itemValue.CodigoSeccion.ToString(), valorObjectRelacionado);
                        }


                        //Asginación del Estado de Registro
                        if (parametroValor.EstadoRegistro == null || parametroValor.EstadoRegistro == DatosConstantes.EstadoRegistro.Inactivo)
                        {
                            parametroValor.EstadoRegistro = itemValue.EstadoRegistro;
                        }

                        //Añade el registro en la Lista de Parametros según su quiebre
                        if (iterator == listado.Count - 1 || itemValue.CodigoValor != listado[iterator + 1].CodigoValor)
                        {
                            parametroValor.CodigoValor         = itemValue.CodigoValor;
                            parametroValor.CodigoIdentificador = itemValue.CodigoIdentificador;
                            parametroValor.CodigoParametro     = itemValue.CodigoParametro;

                            var seccionesFaltante = listSecciones.Where(itemWhere => !parametroValor.RegistroCadena.Any(itemAny => itemAny.Key == itemWhere.CodigoSeccion.ToString())).ToList();

                            foreach (var seccion in seccionesFaltante)
                            {
                                //Setear la Sección con su respectivo Valor
                                parametroValor.RegistroCadena.Add(seccion.CodigoSeccion.ToString(), null);

                                parametroValor.RegistroObjeto.Add(seccion.CodigoSeccion.ToString(), null);
                            }

                            listaParametroValor.Add(parametroValor);
                            //Limpiar variable
                            parametroValor = new ParametroValorResponse();
                            parametroValor.RegistroCadena = new Dictionary <string, string>();
                            parametroValor.RegistroObjeto = new Dictionary <string, object>();
                        }
                    }
                }

                resultado.Result = listaParametroValor;
            }
            catch (Exception e)
            {
                resultado.Result    = new List <ParametroValorResponse>();
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <ParametroValorService>(e);
            }

            return(resultado);
        }