/// <summary> /// Remove uma relação fundo, categoria, subcategoria /// </summary> /// <param name="request"></param> /// <returns></returns> public FundoCategoriaSubCategoriaResponse Remover(FundoCategoriaSubCategoriaRequest request) { var lRetorno = new FundoCategoriaSubCategoriaResponse(); try { var lAcessaDados = new AcessaDados(); lAcessaDados.ConnectionStringName = "GradualFundosAdm"; using (var cmd = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "prc_fundo_categoria_sub_categoria_del")) { #region Adicionar Parâmetros lAcessaDados.AddInParameter(cmd, "@IdFundoCadastro", DbType.String, request.IdFundoCadastro); lAcessaDados.AddInParameter(cmd, "@IdFundoCategoria", DbType.String, request.IdFundoCategoria); lAcessaDados.AddInParameter(cmd, "@IdFundoSubCategoria", DbType.String, request.IdFundoSubCategoria); #endregion lAcessaDados.ExecuteNonQuery(cmd); lRetorno.StatusResposta = OMS.Library.MensagemResponseStatusEnum.OK; } } catch (Exception ex) { lRetorno.DescricaoResposta = ex.StackTrace; lRetorno.StatusResposta = OMS.Library.MensagemResponseStatusEnum.ErroPrograma; GLogger.Error("Erro encontrado no método FundoCategoriaSubCategoriaDB.Remover", ex); } return(lRetorno); }
/// <summary> /// Busca todos os fundos a partir da categoria e subcategoria informadas, além de trazer todos os demais fundos, utilizando a flag 'Pertence' para distinguir quais pertencem /// </summary> /// <param name="request"></param> /// <returns></returns> public FundoCategoriaSubCategoriaResponse BuscarFundosPorCategoriaXSubCategoriaTodos(FundoCategoriaSubCategoriaRequest request) { var lRetorno = new FundoCategoriaSubCategoriaResponse(); try { var lAcessaDados = new AcessaDados(); lAcessaDados.ConnectionStringName = "GradualFundosAdm"; using (var cmd = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "prc_fundos_por_categoria_subcategoria_sel_todos")) { #region Adicionar Parâmetros lAcessaDados.AddInParameter(cmd, "@IdFundoCategoria", DbType.String, request.IdFundoCategoria); lAcessaDados.AddInParameter(cmd, "@IdFundoSubCategoria", DbType.String, request.IdFundoSubCategoria); #endregion var table = lAcessaDados.ExecuteDbDataTable(cmd); lRetorno.ListaFundos = new List <CadastroFundoInfo>(); #region Preenchimento Retorno //preenche lista de retorno foreach (DataRow dr in table.Rows) { var itemLista = new CadastroFundoInfo(); itemLista.IdFundoCadastro = dr["IdFundoCadastro"].DBToInt32(); itemLista.NomeFundo = dr["NomeFundo"].DBToString(); itemLista.Pertence = (dr["Pertence"].DBToInt32() == 1); lRetorno.ListaFundos.Add(itemLista); } #endregion lRetorno.StatusResposta = OMS.Library.MensagemResponseStatusEnum.OK; } } catch (Exception ex) { lRetorno.DescricaoResposta = ex.StackTrace; lRetorno.StatusResposta = OMS.Library.MensagemResponseStatusEnum.ErroPrograma; GLogger.Error("Erro encontrado no método FundoCategoriaDB.Buscar", ex); } return(lRetorno); }
/// <summary> /// Atualizar os relacionamentos Fundos x Categorias x SubCategorias /// </summary> /// <returns></returns> public string ResponderAtualizarRelacionamentoFundos() { try { var parametros = GetParamAtualizarRelacionamentoFundos; var lReqJson = JsonConvert.DeserializeObject <List <FundoCategoriaSubCategoriaJsonRequest> >(parametros); var listaRelacionamentoRemover = new List <FundoCategoriaSubCategoriaRequest>(); var listaFundosJaRelacionados = new List <FundoCategoriaSubCategoriaRequest>(); //preenche lista de relacionamentos a adicionar var listaRelacionamentoAdicionar = lReqJson.Select(item => new FundoCategoriaSubCategoriaRequest { IdFundoCadastro = item.IdFundoCadastro, IdFundoCategoria = GetIdFundoCategoria, IdFundoSubCategoria = GetIdFundoSubCategoria }).ToList(); #region Seleciona fundos já relacionados var lRequest = new FundoCategoriaSubCategoriaRequest { IdFundoCategoria = GetIdFundoCategoria, IdFundoSubCategoria = GetIdFundoSubCategoria }; var lResponse = base.BuscarFundosPorCategoriaSubCategoria(lRequest); var lTempJaRelacionados = new TransporteCadastroFundos().TraduzirLista(lResponse.ListaFundos); //preenche lista de relacionamentos a adicionar foreach (var item in lTempJaRelacionados) { var req = new FundoCategoriaSubCategoriaRequest { IdFundoCadastro = item.IdFundoCadastro, IdFundoCategoria = GetIdFundoCategoria, IdFundoSubCategoria = GetIdFundoSubCategoria }; listaFundosJaRelacionados.Add(req); } #endregion //preenche lista de relacionamentos a remover foreach (var item in listaFundosJaRelacionados) { //caso o elemento não conste na lista de adicionar, o mesmo deve ser removido if (!listaRelacionamentoAdicionar.Any(p => p.IdFundoCadastro == item.IdFundoCadastro)) { listaRelacionamentoRemover.Add(new FundoCategoriaSubCategoriaRequest { IdFundoCategoria = item.IdFundoCategoria, IdFundoSubCategoria = item.IdFundoSubCategoria, IdFundoCadastro = item.IdFundoCadastro }); } } //adiciona todos os relacionamentos que constam na lista foreach (var item in listaRelacionamentoAdicionar) { AdicionarRelacionamentosFundosCategoriasSubCategorias(item); //antes de gravar o log, verifica se o registro inserido é novo //caso contrário, não deve ser logado if (item.IdFundoCategoriaSubCategoria > 0) { //grava log na base e no log4net InserirLog(new FundoCategoriaSubCategoriaLogRequest { IdFundoCadastro = item.IdFundoCadastro, IdFundoCategoria = item.IdFundoCategoria, IdFundoSubCategoria = item.IdFundoSubCategoria, UsuarioLogado = UsuarioLogado.Nome, DtAlteracao = DateTime.Now, TipoTransacao = "INSERT" }); } } //remove todos os relacionamentos que constam na lista de remoção foreach (var item in listaRelacionamentoRemover) { RemoverRelacionamentosFundosCategoriasSubCategorias(item); //grava log na base e no log4net InserirLog(new FundoCategoriaSubCategoriaLogRequest { IdFundoCadastro = item.IdFundoCadastro, IdFundoCategoria = item.IdFundoCategoria, IdFundoSubCategoria = item.IdFundoSubCategoria, UsuarioLogado = UsuarioLogado.Nome, DtAlteracao = DateTime.Now, TipoTransacao = "DELETE" }); } } catch (Exception ex) { Logger.Error("Erro ao carregar os dados de fundos na tela", ex); return(RetornarErroAjax("Erro no método ResponderAtualizarRelacionamentoFundos ", ex)); } var response = new FundoCategoriaSubCategoriaResponse { StatusResposta = MensagemResponseStatusEnum.OK }; return(RetornarSucessoAjax(response.StatusResposta.ToString())); }