/// <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); }