public ActionResult Editar(int Codusu) { //Autentica if (Session["ConexaoSapiens"] == null) { return RedirectToAction("Login", "Home"); } //Autoriza if (!AutorizaUsuario(ControlAccessConfig.Usuario)) { return View("Erro", null, "Módulo não autorizado para este usuário. "); } using (var bll = new UsuarioSapiensBLL()) { var perfilBLL = new PerfilUsuarioBLL(); var usuario = bll.ObterPorCodigo(Codusu); usuario.PerfisUsuario = perfilBLL.ObterGruposPorCodUsuario(usuario.Codusu).OrderBy(perfil => perfil.CodPerfilUsuario).ToList(); foreach (var p in usuario.PerfisUsuario) { p.bSituacao = p.SitPerfil == 0 ? false : true; } return View(usuario); } }
public ActionResult Editar(int CodPerfilUsuario) { //Autentica if (Session["ConexaoSapiens"] == null) { return RedirectToAction("Login", "Home"); } //Autoriza if (!AutorizaUsuario(ControlAccessConfig.PerfilUsuario)) { return View("Erro", null, "Módulo não autorizado para este usuário. "); } using (var bll = new PerfilUsuarioBLL()) { var perfil = bll.ObterPorCodigo(CodPerfilUsuario); return View(perfil); } }
public ActionResult Editar(int UsuId) { //Autentica if (Session["ConexaoSapiens"] == null) { return RedirectToAction("Login", "Home"); } //Autoriza if (!AutorizaUsuario(ControlAccessConfig.Workflow)) { return View("Erro", null, "Módulo não autorizado para este usuário. "); } using (var bll = new ConfiguracaoWorkflowBLL()) { var perfilBLL = new PerfilUsuarioBLL(); var perfis = perfilBLL.ListarTodos(); var tiposSol = new Dictionary<int?, string>(); tiposSol.Add(1,"INCLUSÃO"); tiposSol.Add(2,"ALTERAÇÃO"); tiposSol.Add(3,"DUPLICAÇÃO"); var workflow = bll.ObterPorCodigo(UsuId); workflow.StrUsuGrupo = perfis.Where(p => p.CodPerfilUsuario == workflow.UsuGrupo).Select(p2 => p2.DesPerfil).First(); if (workflow.UsuProxgrupo.HasValue && workflow.UsuEncerra == "N") { workflow.StrUsuProxgrupo = perfis.Where(p => p.CodPerfilUsuario == workflow.UsuProxgrupo).Select(p2 => p2.DesPerfil).First(); } workflow.StrUsuTipsol = tiposSol[workflow.UsuTipsol]; return View(workflow); } }
public ActionResult GridPerfisUsuarioPaginado(int? page) { //Autentica if (Session["ConexaoSapiens"] == null) { return RedirectToAction("Login", "Home"); } //Autoriza if (!AutorizaUsuario(ControlAccessConfig.PerfilUsuario)) { return View("Erro", null, "Módulo não autorizado para este usuário. "); } using (var bll = new PerfilUsuarioBLL()) { var model = bll.ListarTodos(); var ajaxGridFactory = new Grid.Mvc.Ajax.GridExtensions.AjaxGridFactory(); var grid = ajaxGridFactory.CreateAjaxGrid(model.OrderBy(c => c.CodPerfilUsuario).OrderBy(s => s.CodPerfilUsuario).AsQueryable(), page.HasValue ? page.Value : 1, false); return Json(new { Html = grid.ToJson("_GridPerfisUsuario", this), grid.HasItems }, JsonRequestBehavior.AllowGet); } }
public ActionResult Editar(PerfilUsuario perfil) { //Autentica if (Session["ConexaoSapiens"] == null) { return RedirectToAction("Login", "Home"); } //Autoriza if (!AutorizaUsuario(ControlAccessConfig.PerfilUsuario)) { return View("Erro", null, "Módulo não autorizado para este usuário. "); } using (var bll = new PerfilUsuarioBLL()) { bll.SalvarOuAtualizar(perfil); return RedirectToAction("Index"); } }
// // GET: /PerfilUsuario/ public ActionResult Index() { //Autentica if (Session["ConexaoSapiens"] == null) { return RedirectToAction("Login", "Home"); } //Autoriza if (!AutorizaUsuario(ControlAccessConfig.PerfilUsuario)) { return View("Erro", null, "Módulo não autorizado para este usuário. "); } using (var bll = new PerfilUsuarioBLL()) { var model = bll.ListarTodos(); var ajaxGridFactory = new Grid.Mvc.Ajax.GridExtensions.AjaxGridFactory(); var grid = ajaxGridFactory.CreateAjaxGrid(model.OrderBy(c => c.CodPerfilUsuario).OrderBy(s => s.CodPerfilUsuario).AsQueryable(), 1, false); return View(grid); } }
public ActionResult Consultar(int codigo = 0) { //Autentica if (Session["ConexaoSapiens"] == null) { return RedirectToAction("Login", "Home"); } //Autoriza if (!AutorizaUsuario(Helpers.ControlAccessConfig.NovaSolicitacao)) { return View("Erro", null, "Módulo não autorizado para este usuário. "); } using (var solicitacaoBLL = new SolicitacaoBLL()) { var dpaBLL = new DadoPrincipalAprovacaoBLL(); var defSolBLL = new DefinicoesClienteSolicitacaoBLL(); var defBLL = new DefinicoesClienteAprovacaoBLL(); var parBLL = new ParecerSolicitacaoBLL(); var perfilBLL = new PerfilUsuarioBLL(); var carBLL = new CaracteristicaSapiensBLL(); var usuarioBLL = new UsuarioSapiensBLL(); var clienteSapiensBLL = new ClienteSapiensBLL(); // 18/11/2014 #region buscar a solicitacao usando o código e obter todas as dependencias OK - Update dia 30/12/2014 - Deixando o NHibernate Gerenciar os relacionamentos. var s = Session["Solicitacao"] as Solicitacao; s = solicitacaoBLL.ObterPorCodigo(codigo); s.PareceresSolicitacao = s.PareceresSolicitacao.OrderBy(par => par.CodParecer).ToList(); foreach (var p in s.PareceresSolicitacao) { dpaBLL.PreencheDependencias(p.DadosPrincipaisAprovacao.Last()); foreach (var d in p.DefinicoesAprovacao) { defBLL.PreencheDependencias(d, p.Solicitacao.CodCliente); } foreach (var c in p.CaracteristicasAprovacao) { carBLL.ObterNomes(c); } foreach (var c in s.Caracteristicas) { carBLL.ObterNomes(c); } p.Codperusu = p.Codperusu == 0 ? 2 : p.Codperusu; var perfilAprovador = perfilBLL.ObterPorCodigo(p.Codperusu); p.Perfil = perfilAprovador.DesPerfil; var usuarioAprovador = usuarioBLL.ObterPorCodigo((int)p.Codusuapr); p.Aprovador = usuarioAprovador.Nomusu; if (!String.IsNullOrEmpty(p.DefinicoesAprovacao.Last().VlrLimite)) { p.DefinicoesAprovacao.Last().VlrLimite = String.Format("{0:C}", Convert.ToInt32(p.DefinicoesAprovacao.Last().VlrLimite)); } } #endregion solicitacaoBLL.ObterNomes(new List<Solicitacao> { s }); var usuario = Session["ConexaoSapiens"] as UsuarioSapiens; ViewBag.Usuario = usuario.Nomusu; ViewBag.NomeEmpresa = usuario.Numemp; var nomeFilial = Session["NomeFilial"] as string; ViewBag.Filial = usuario.Codfil + " - " + nomeFilial; var clienteSapiens = clienteSapiensBLL.ObterPorCodigo(s.CodCliente); if (clienteSapiens != null) { int codFilAnulavel = s.Definicoes.Last().CodFilial; var definicoesClienteSapiens = new DefinicoesSapiensBLL().ObterDefinicoesPorCliente(clienteSapiens.codcli, codFilAnulavel); defSolBLL.PreencheDependencias(s.Definicoes.Last(), s.CodCliente, s.CodFilial); clienteSapiens.Definicoes.Add(definicoesClienteSapiens); #region Lógica para mostrar o limite solicitado var limiteAtual = clienteSapiensBLL.ListaLimiteAtual(1, s.CodCliente); // ex de retorno : "R$ 100,00" ViewBag.LimiteAtual = limiteAtual; limiteAtual = Regex.Replace(limiteAtual, @"(\s+)|(\\+)|(\.+)|(/+)|(\-+)|(\,+)|(R+)|(\$+)", ""); if (limiteAtual.Length > 1) { limiteAtual = limiteAtual.Substring(0, limiteAtual.Length - 2); } else { limiteAtual = "0"; } string limiteSolicitado = String.Format("{0:C}", s.Definicoes.Last().VlrLimite); if (limiteAtual != limiteSolicitado) { ViewBag.HouveAlteracaoLimite = "S"; ViewBag.LimiteSolicitado = String.Format("{0:C}", Decimal.Parse(limiteSolicitado)); } else { ViewBag.HouveAlteracaoLimite = "N"; ViewBag.LimiteSolicitado = "---"; } #endregion if (clienteSapiens.Definicoes.Last() != null) { /////////// var codcpgAtual = clienteSapiens.Definicoes.Last().Codcpg; var codcpgSolicitado = s.Definicoes.Last().CodCondicaoPagamento; var prazoDePagamentoAtual = s.Definicoes.Last().CondicoesPagamento.Where(c => c.codcpg == codcpgAtual).Select(cond => cond.descpg).FirstOrDefault(); ViewBag.PrazoDePagamentoCadastro = prazoDePagamentoAtual; if (codcpgAtual != codcpgSolicitado) { ViewBag.HouveAlteracaoPrazo = "S"; } else { ViewBag.HouveAlteracaoPrazo = "N"; } var codFpgAtual = clienteSapiens.Definicoes.Last().Codfpg; var codFpgSolicitado = s.Definicoes.Last().CodFormaDePagamento; var formaDePagamentoAtual = s.Definicoes.Last().FormasPagamento.Where(c => c.codfpg == codFpgAtual).Select(cond => cond.desfpg).FirstOrDefault(); ViewBag.FormaDePagamentoCadastro = formaDePagamentoAtual; if (codFpgAtual.ToString() != codFpgSolicitado) { ViewBag.HouveAlteracaoFormaPagamento = "S"; } else { ViewBag.HouveAlteracaoFormaPagamento = "N"; } } } Session["Solicitacao"] = s; return View("Consultar", s); } }
public void ObterNomes(List<Solicitacao> solicitacoes) { using (var filDAL = new FilialDAL()) { // OBTER NOME DO CLIENTE, TIPO DA SOLICITAÇÃO E NOME DA FILIAL, usando o CodFilial Task t1 = Task.Factory.StartNew(() => { var filiais = filDAL.ListarTodos(); foreach (var s in solicitacoes) { var sol = s; // parece redundante, mas é feito assim mesmo por causa do lazy loading do LINQ s.Filial = filiais .Where(f => f.codfil == sol.CodFilial) // <-- Lazy Loading .Select(f => f.nomfil).FirstOrDefault(); } }); Task t3 = Task.Factory.StartNew(() => { var tipoSolDAL = new TipoSolicitacaoClienteDAL(); var queryTipos = tipoSolDAL.ListarTodos(); foreach (var s in solicitacoes) { var sol = s; s.Tipo = queryTipos .Where(t => t.CodTipoSolicitacaoCliente == sol.CodTipoSolicitacao && t.SitTipoSolicitacaoCliente == "A") .Select(t => t.DesTipoSolicitacaoCliente).FirstOrDefault(); } }); Task t4 = Task.Factory.StartNew(() => { var situacaoDAL = new SituacaoSolicitacaoDAL(); var querySituacao = situacaoDAL.ListarTodos(); foreach (var s in solicitacoes) { var sol = s; //var ultimoHistorico = sol.Historicos.OrderBy(h => h.CodHistoricoSolicitacao).Last(); var query = from sit in querySituacao where sit.CodSituacaoSolicitacao == sol.CodSituacaoAtual select new { DesSituacao = sit.DesSituacao, CodSituacaoSolicitacao = sit.CodSituacaoSolicitacao }; sol.Situacao = query.FirstOrDefault() == null? "" :query.FirstOrDefault().DesSituacao; //sol.CodSituacaoAtual = query.FirstOrDefault() == null ? 0 : query.FirstOrDefault().CodSituacaoSolicitacao; } }); Task t5 = Task.Factory.StartNew(() => { var usuarios = new UsuarioSapiensBLL().ListarTodos(); foreach (var s in solicitacoes) { var sol = s; var query = from u in usuarios where u.Codusu == sol.CodUsuarioSolicitacao select u.Nomusu; s.Usuario = query.FirstOrDefault(); } }); Task t6 = Task.Factory.StartNew(() => { foreach (var s in solicitacoes) { s.Cliente = s.DadosPrincipaisSolicitacao.Count != 0 ? s.DadosPrincipaisSolicitacao.Last().NomeFantasia:""; } }); Task t7 = Task.Factory.StartNew(() => { var queryPerfis = new PerfilUsuarioBLL().ListarTodos(); foreach (var s in solicitacoes) { var sol = s; if(sol.PareceresSolicitacao != null) { if (sol.PareceresSolicitacao.Count > 0) { var codPerfilUsuario = sol.PareceresSolicitacao.OrderBy(p => p.CodParecer).Last().Codperusu; s.Perfil = queryPerfis .Where(p => p.CodPerfilUsuario == codPerfilUsuario) .Select(p => p.DesPerfil).FirstOrDefault(); } } } }); Task.WaitAll(t1, t3, t4, t5, t6); } }
public ActionResult PerfisPaginados(int? page) { using (var perfilBLL = new PerfilUsuarioBLL()) { var vm = perfilBLL.ListarTodos().OrderBy(p => p.CodPerfilUsuario).AsQueryable(); var ajaxGridFactory = new Grid.Mvc.Ajax.GridExtensions.AjaxGridFactory(); var grid = ajaxGridFactory.CreateAjaxGrid(vm, page.HasValue? page.Value: 1, false); return Json(new { Html = grid.ToJson("_GridPerfis", this), grid.HasItems }, JsonRequestBehavior.AllowGet); } }
public JsonResult MudaStatusPerfil(int codUsuario, PerfilUsuario perfil) { // pega o perfil ( grupoUsuário ) using(var bll = new GruposUsuariosBLL()) { var gruposUsuariosBLL = new GruposUsuariosBLL(); var perfilUsuarioBLL = new PerfilUsuarioBLL(); var gruposUsuario = perfilUsuarioBLL.ObterGruposPorCodUsuario(codUsuario); //ATUALIZAR A GrupoUsuarios (relação n pra n entre usuários e perfis ) //obter id do grupoUsuario usando codUsuario e perfil var grupo = bll.ListarTodos() .Where(g => g.usuUsuario == codUsuario && g.usuGrupo == perfil.CodPerfilUsuario) .FirstOrDefault(); if (perfil.bSituacao) // se true, remover grupo, se false, incluir novo grupo. { bll.Excluir(grupo); return Json(new { msg = "Grupo Atualizado (perfil " +perfil.CodPerfilUsuario+ " retirado do usuário " + codUsuario+ " )" }, JsonRequestBehavior.DenyGet); } else { var novoGrupo = new GrupoUsuarios() { //usuId = "0", usuGrupo = Convert.ToInt32(perfil.CodPerfilUsuario), usuUsuario = codUsuario }; try { bll.Salvar(novoGrupo); return Json(new { msg = "Grupo Atualizado (perfil " +perfil.CodPerfilUsuario+ " adicionado ao usuário " + codUsuario+ " )" }, JsonRequestBehavior.DenyGet); } catch (Exception ex) { return Json(new { erro = ex.Message }, JsonRequestBehavior.DenyGet); } } } }
public ActionResult GridPerfis() { using (var perfilBLL = new PerfilUsuarioBLL()) { var usuario = (UsuarioSapiens)Session["ConexaoSapiens"]; usuario.PerfisUsuario = perfilBLL.ObterGruposPorCodUsuario(usuario.Codusu).OrderBy(perfil => perfil.CodPerfilUsuario).ToList(); foreach (var p in usuario.PerfisUsuario) { p.bSituacao = p.SitPerfil == 0 ? false : true; } var vm = perfilBLL.ListarTodos().OrderBy(p =>p.CodPerfilUsuario).AsQueryable(); var ajaxGridFactory = new Grid.Mvc.Ajax.GridExtensions.AjaxGridFactory(); var grid = ajaxGridFactory.CreateAjaxGrid(vm, 1, false); return Json(new { Html = grid.ToJson("_GridPerfis", this), grid.HasItems }, JsonRequestBehavior.AllowGet); } }
public ActionResult Analise(int codigo = 0, int CodParecer = 0) { #region Autentica if (Session["ConexaoSapiens"] == null) { return RedirectToAction("Login", "Home"); } #endregion #region Autoriza if (!AutorizaUsuario(Helpers.ControlAccessConfig.AbrirAnalise)) { return View("Erro", null, "Módulo não autorizado para este usuário. "); } #endregion ViewBag.CodSol = codigo; var usuario = (UsuarioSapiens)Session["ConexaoSapiens"]; ViewBag.Usuario = usuario.Nomusu; ViewBag.NomeEmpresa = usuario.Numemp; var nomeFilial = Session["NomeFilial"] as string; ViewBag.Filial = usuario.Codfil + " - " + nomeFilial; using (var solicitacaoBLL = new SolicitacaoBLL()) { #region Prepara a camada lógica de negócio var dadoPrincipalBLL = new DadoPrincipalAprovacaoBLL(); var caracteristicaSapiensBLL = new CaracteristicaSapiensBLL(); var definicoesBLL = new DefinicoesClienteAprovacaoBLL(); var defBLL = new DefinicoesClienteSolicitacaoBLL(); var perfilBLL = new PerfilUsuarioBLL(); var usuarioBLL = new UsuarioSapiensBLL(); var clienteSapiensBLL = new ClienteSapiensBLL(); var consultaReceitaBLL = new ConsultaReceitaBLL(); var parecerBLL = new ParecerSolicitacaoBLL(); var tipAltBLL = new TipoAlteracaoBLL(); #endregion Solicitacao s = null; ParecerSolicitacao p = null; try { // se não for passado o código da solicitação, mas foi passado o código do parecer. if (codigo == 0 && CodParecer != 0) { p = parecerBLL.ObterPorCodigo(CodParecer); s = p.Solicitacao; } // e se não for passado um código de parecer, obter o último parecer de uma solicitação. else { s = solicitacaoBLL.ObterPorCodigo(codigo); p = s.PareceresSolicitacao.OrderBy(par => par.CodParecer).Last(); } #region Buscar a solicitacao usando o código e obter todas as dependencias OK // Procura na session, se não tiver , tenta obter por código, se tiver, usa da session //se está aguardando integração, não pode abrir -> "Não é possível abrir a análise de uma solicitação \n\r em processo de integração." solicitacaoBLL.ObterNomes(new List<Solicitacao> { s }); Session["Solicitacao"] = s; try { var sitInt = s.Historicos.OrderBy(h => h.CodHistoricoSolicitacao).Last().CodSituacaoIntegracaoSolicitacao; var situacaoIntegracao = sitInt == 1 ? "Pendente de Integração" : sitInt == 2 ? "Integrado" : sitInt == 3 ? "Erro na Integração" : "Não Iniciado"; ViewBag.SituacaoIntegracao = situacaoIntegracao; } catch (Exception) { ViewBag.SituacaoIntegracao = "Não Encontrado"; } //if (s.Situacao.ToUpper() == "AGUARDANDO INTEGRAÇÃO") //{ // return Json(new { erro = "Não é possível abrir a análise de uma solicitação \n\r em processo de integração." }, JsonRequestBehavior.AllowGet); //} #region obter o perfil atribuído a cada parecer. (quem precisa aprovar) foreach (var par in s.PareceresSolicitacao) { var perfilAprovador = perfilBLL.ObterPorCodigo(par.Codperusu); par.Perfil = perfilAprovador.DesPerfil; var usuarioAprovador = usuarioBLL.ObterPorCodigo((int)par.Codusuapr); par.Aprovador = usuarioAprovador.Nomusu; } #endregion #region pega o último parecer. if (!String.IsNullOrEmpty(s.Definicoes.Last().VlrLimite)) { var vlrLimite = s.Definicoes.Last().VlrLimite; s.Definicoes.Last().VlrLimite = String.IsNullOrEmpty(vlrLimite) ? "" : Regex.Replace(vlrLimite, @"(\s+)|(\\+)|(\.+)|(/+)|(\-+)|(\,+)|(R+)|(\$+)", ""); } //preenche os nomes foreach (var par in s.PareceresSolicitacao) { foreach (var c in par.CaracteristicasAprovacao) { caracteristicaSapiensBLL.ObterNomes(c); } } #endregion #endregion #region obter os perfis do usuario (quem está logado) OK - se algum dos perfis do usuário logado contém o perfil aprovador, pode salvar parecer. var perfisUsuarioLogado = perfilBLL.ObterGruposPorCodUsuario(usuario.Codusu); if (perfisUsuarioLogado.Count() == 0) { perfisUsuarioLogado.Add(new PerfilUsuario() { DesPerfil = "DESCONHECIDO", CodPerfilUsuario = 0, SitPerfil = 0 }); } var queryPodeSalvarParecer = from meuPerfil in perfisUsuarioLogado where meuPerfil.CodPerfilUsuario == p.Codperusu select meuPerfil; var queryUsuarioTI = from meuPerfil in perfisUsuarioLogado where meuPerfil.CodPerfilUsuario == 1 select meuPerfil; ViewBag.PodeSalvar = queryPodeSalvarParecer.Count() > 0 ? "S" : "N"; ViewBag.IsUsuarioTI = queryUsuarioTI.Count() > 0 ? "S" : "N"; ViewBag.Usuario = usuario.Nomusu; #endregion foreach (var v in s.Integracoes) { if (v.CodSecao.HasValue) { v.Secao = v.CodSecao.Value == 1 ? "Dados Principais" : v.CodSecao.Value == 2 ? "Características" : v.CodSecao.Value == 3 ? "Definições" : v.CodSecao.Value == 4 ? "Endereço de Cobrança" : v.CodSecao.Value == 5 ? "Endereço de Entrega" : v.CodSecao.Value == 6 ? "Referências" : v.CodSecao.Value == 7 ? "Contatos" : v.CodSecao.Value == 8 ? "Anexos" : v.CodSecao.Value == 9 ? "Sócios" : ""; } if (v.CodSituacaoIntegracao.HasValue) { v.SituacaoIntegracao = v.CodSituacaoIntegracao.Value == 1 ? "Comando Enviado" : v.CodSituacaoIntegracao.Value == 2 ? "OK" : v.CodSituacaoIntegracao.Value == 3 ? "Erro" : ""; } } // pegar o código do usuário e comparar // se o perfil do parecer não for o mesmo do usuário atual, travar todos os campos. #region Prepara o Parecer 'p' e exibe na tela. // preencher a tela de aprovacao com: // 1 - a lista de Pareceres OK // 2 - a tela de resumo da solicitação. ( OK ) // 3 - os dados complementares. ( OK ) // 4 - o click do botao de parecer pega o aprovador e muda o parecer. ( OK ) // 5 - as views de consulta. p.Codusuapr = usuario.Codusu; // obter o codigo do usuario da aprovacao. dadoPrincipalBLL.PreencheDependencias(p.DadosPrincipaisAprovacao.Last()); var cgccpf = Regex.Replace(p.DadosPrincipaisAprovacao.Last().CPFCNPJ, @"(\s+)|(\\+)|(\.+)|(/+)|(\-+)", ""); var codFilial = Session["CodigoFilial"]; #region HINT DATA ULTIMA CONSULTA OU DATA CADASTRO var ultimaConsulta = consultaReceitaBLL.ObterDataUltimaConsultaDoCliente(cgccpf); #endregion p.DadosPrincipaisAprovacao.Last().DataUltimaConsulta = ultimaConsulta.ToString("dd/MM/yyyy HH:mm:ss"); p.CaracteristicasAprovacao = p.CaracteristicasAprovacao.Count > 0 ? p.CaracteristicasAprovacao : new List<CaracteristicaClienteAprovacao>() { }; p.DefinicoesAprovacao = p.DefinicoesAprovacao.Count > 0 ? p.DefinicoesAprovacao : new List<DefinicoesClienteAprovacao>() { }; definicoesBLL.PreencheDependencias(p.DefinicoesAprovacao.Last(), p.Solicitacao.CodCliente); p.ContatosAprovacao = p.ContatosAprovacao.Count > 0 ? p.ContatosAprovacao : new List<ContatoClienteAprovacao>() { }; defBLL.PreencheDependencias(p.Solicitacao.Definicoes.Last(), 1, 1); if (!String.IsNullOrEmpty(p.DefinicoesAprovacao.Last().VlrLimite)) { p.DefinicoesAprovacao.Last().VlrLimite = String.Format("{0:C}", Convert.ToInt32(p.DefinicoesAprovacao.Last().VlrLimite)); } if (p.SociosAprovacao.Count > 0) { if (!String.IsNullOrEmpty(p.SociosAprovacao.Last().CapitalSocial)) { var strCapitalSocial = p.SociosAprovacao.Last().CapitalSocial; int valorInteiroCapitalSocial = 0; if (Int32.TryParse(strCapitalSocial, out valorInteiroCapitalSocial)) { p.SociosAprovacao.Last().CapitalSocial = String.Format("{0:C}",valorInteiroCapitalSocial); } } } #endregion #region Preencher Dependencias do Tableau PreencherDependenciasTableau(p.DadosPrincipaisAprovacao.Last()); #endregion #region Buscar Cliente e verificar a data da última solicitação ( se houver prepara dependências dos dados complementares ) var clienteSapiens = clienteSapiensBLL.ObterPorCodigo(s.CodCliente); // se já é cliente, verifica se já tem alguma solicitação. if (clienteSapiens != null) { int codFilAnulavel = s.Definicoes.Last().CodFilial; var definicoesClienteSapiens = new DefinicoesSapiensBLL().ObterDefinicoesPorCliente(clienteSapiens.codcli, codFilAnulavel); clienteSapiens.Definicoes.Add(definicoesClienteSapiens); var pessoaJuridica = new SocioSapiensBLL().ObterSociosPorCliente(clienteSapiens.codcli).LastOrDefault(); var solicitacoes = solicitacaoBLL.ObterSolicitacoesPorCodFilial(Convert.ToInt32(Session["CodigoFilial"])); var queryClienteSolicitacao = from sol in solicitacoes where sol.CodCliente == clienteSapiens.codcli select sol; #region Preencher Dependências dos Dados Complementares OK Gilberto 20/03/2015 - Atualizado em 26/08/2015 var umAnoAtras = new DateTime(DateTime.Now.Year - 1, DateTime.Now.Month, DateTime.Now.Day).ToShortDateString(); var hoje = DateTime.Now.ToShortDateString(); ViewBag.GrupoDeEmpresasCadastro = s.DadosPrincipaisSolicitacao.Last().GrupoEmpresas.Where(g => g.codgre == clienteSapiens.codgre).Select(grupo => grupo.nomgre).FirstOrDefault(); if (clienteSapiens.Definicoes.Last() != null) { ViewBag.DescontoFinanceiroCadastro = clienteSapiens.Definicoes.Last().UsuPerds1 == 0 ? "NÃO" : "SIM"; /////////// var codcpgAtual = clienteSapiens.Definicoes.Last().Codcpg; var codcpgSolicitado = s.Definicoes.Last().CodCondicaoPagamento; var prazoDePagamentoAtual = s.Definicoes.Last().CondicoesPagamento.Where(c => c.codcpg == codcpgAtual).Select(cond => cond.descpg).FirstOrDefault(); ViewBag.PrazoDePagamentoCadastro = prazoDePagamentoAtual; if (codcpgAtual != codcpgSolicitado) { ViewBag.HouveAlteracaoPrazo = "S"; } else { ViewBag.HouveAlteracaoPrazo = "N"; } var codFpgAtual = clienteSapiens.Definicoes.Last().Codfpg; var codFpgSolicitado = s.Definicoes.Last().CodFormaDePagamento; var formaDePagamentoAtual = s.Definicoes.Last().FormasPagamento.Where(c => c.codfpg == codFpgAtual).Select(cond => cond.desfpg).FirstOrDefault(); ViewBag.FormaDePagamentoCadastro = formaDePagamentoAtual; if (codFpgAtual.ToString() != codFpgSolicitado) { ViewBag.HouveAlteracaoFormaPagamento = "S"; } else { ViewBag.HouveAlteracaoFormaPagamento = "N"; } } /////////// if (pessoaJuridica != null) { ViewBag.CapitalSocialCadastro = String.Format("{0:C}", pessoaJuridica.USU_CAPSOC.HasValue ? pessoaJuridica.USU_CAPSOC.Value : 0); ViewBag.DataFundacaoCadastro = pessoaJuridica.DATFDC.HasValue ? pessoaJuridica.DATFDC.Value.ToShortDateString() : ""; ViewBag.DataInclusaoCadastro = pessoaJuridica.DATPAL.HasValue ? pessoaJuridica.DATPAL.Value.ToShortDateString() : ""; } ViewBag.TktMedioTitulosLiquidados = clienteSapiensBLL.TicketMedioCompras("cliente", s.CodCliente.ToString(), umAnoAtras, hoje); ViewBag.TktMedioAVencer = clienteSapiensBLL.TkTMedVencer("cliente", s.CodCliente.ToString(), umAnoAtras, hoje); ViewBag.ValorFinanceiroTotal = clienteSapiensBLL.ValorFinTotal("cliente", s.CodCliente.ToString(), umAnoAtras, hoje); ViewBag.QtdTitulosVencidos = clienteSapiensBLL.QtdeTitulosVencidos("cliente", s.CodCliente.ToString(), umAnoAtras, hoje); ViewBag.PercentualMedioPontualidade = clienteSapiensBLL.PercentPontualidade("cliente", s.CodCliente.ToString(), umAnoAtras, hoje); ViewBag.PrazoMedioPgtoTitulos = clienteSapiensBLL.PrazoMedioPgto("cliente", s.CodCliente.ToString(), umAnoAtras, hoje); ViewBag.VlrTotalTitulosVencidos = clienteSapiensBLL.VlrTotalTitulosVencidos("cliente", s.CodCliente.ToString(), umAnoAtras, hoje); ViewBag.LimiteUtilizado = clienteSapiensBLL.LimiteUtilizado(1, s.CodFilial, s.CodCliente.ToString()); var limiteAtual = clienteSapiensBLL.ListaLimiteAtual(1, s.CodCliente); // ex de retorno : "R$ 100,00" ViewBag.LimiteAtual = limiteAtual; #region lógica pra mostrar o limite solicitado na tela de análise, somente se o solicitante alterou o limite cadastrado. limiteAtual = Regex.Replace(limiteAtual, @"(\s+)|(\\+)|(\.+)|(/+)|(\-+)|(\,+)|(R+)|(\$+)", ""); if (limiteAtual.Length > 1) { limiteAtual = limiteAtual.Substring(0, limiteAtual.Length - 2); } else { limiteAtual = "0"; } string limiteSolicitado = String.Format("{0:C}", s.Definicoes.Last().VlrLimite); if (limiteAtual != limiteSolicitado) { ViewBag.HouveAlteracaoLimite = "S"; ViewBag.LimiteSolicitado = String.Format("{0:C}", Decimal.Parse(limiteSolicitado)); } else { ViewBag.HouveAlteracaoLimite = "N"; ViewBag.LimiteSolicitado = "---"; } #endregion ViewBag.LimiteDisponivel = clienteSapiensBLL.ListaLimiteDisponivel(1, s.CodCliente); ViewBag.MaiorFatura = clienteSapiensBLL.MaiorFatura(s.CodCliente.ToString()); ViewBag.MaiorAtraso = clienteSapiensBLL.TituloMaiorAtraso(s.CodCliente.ToString()); ViewBag.DataUltimoPedido = clienteSapiensBLL.BuscarUltimoPedido(1, s.CodCliente); var dataUltimaSolicitacaov2 = solicitacaoBLL.ObterDataUltimaSolicitacaoNoSICADV2(s.CodCliente); var dataUltimaSolicitacaov3 = ""; if (queryClienteSolicitacao.LastOrDefault() != null) { // já existe solicitação para este cliente. dataUltimaSolicitacaov3 = queryClienteSolicitacao.Last().DatCriacao.ToString("dd/MM/yyyy"); } ViewBag.DataUltimaSolicitacao = String.IsNullOrEmpty(dataUltimaSolicitacaov3) ? dataUltimaSolicitacaov2 : dataUltimaSolicitacaov3; ViewBag.DataUltimaSolicitacaov2 = dataUltimaSolicitacaov2; string valorFaturamento1; string valorFaturamento2; string valorFaturamento3; string dataFaturamento1; string dataFaturamento2; string dataFaturamento3; string mediaFaturamentoTrimestre; clienteSapiensBLL.ObterDadosFaturamentoCliente(s.CodCliente, out valorFaturamento1, out valorFaturamento2, out valorFaturamento3, out dataFaturamento1, out dataFaturamento2, out dataFaturamento3, out mediaFaturamentoTrimestre); ViewBag.ValorFaturamento1 = dataFaturamento1 + " R$ " + valorFaturamento1; ViewBag.ValorFaturamento2 = dataFaturamento2 + " R$ " + valorFaturamento2; ViewBag.ValorFaturamento3 = dataFaturamento3 + " R$ " + valorFaturamento3; ViewBag.MediaFaturamentoTrimestre = " " + mediaFaturamentoTrimestre; #endregion } else { // se ainda não é cliente, devo marcar como S pra exibir os valores solicitados na tela. ViewBag.HouveAlteracaoLimite = "S"; ViewBag.HouveAlteracaoFormaPagamento = "S"; ViewBag.HouveAlteracaoPrazo = "S"; string limiteSolicitado = String.Format("{0:C}", s.Definicoes.Last().VlrLimite); if(!String.IsNullOrEmpty(limiteSolicitado)) { ViewBag.LimiteSolicitado = String.Format("{0:C}", Decimal.Parse(limiteSolicitado)); } else { ViewBag.HouveAlteracaoLimite = "N"; ViewBag.LimiteSolicitado = "---"; } } #endregion if (s.CodTipoSolicitacao == 3) { ViewBag.PrecisaValidar = "N"; }// TODO : desativar a validação em caso de inativação. Session["Parecer"] = p; return View("Analise", p); // sem as dependencias. } catch (Exception ex) { return Json(new { msg = "Não foi possível abrir a Solicitação nº " + s.Codigo + " , ERRO -> " + ex.Message }, JsonRequestBehavior.AllowGet); } } }
public JsonResult ConsultaAprovador(int CodParecer = 0) { // pegar o usuario por seu codigo // obter o parecer da solicitacao em que o usuario aparecer, retornar os dados deste parecer. // o que precisa ser alterado? os dados de parecer.(Aprovacao) // recarregar a tela com um novo parecer. using (var solicitacaoBLL = new SolicitacaoBLL()) { var carSapBLL = new CaracteristicaSapiensBLL(); var parecerSolicitacaoBLL = new ParecerSolicitacaoBLL(); var usuario = Session["ConexaoSapiens"] as UsuarioSapiens; var perfilBLL = new PerfilUsuarioBLL(); var clienteSapiensBLL = new ClienteSapiensBLL(); var p = parecerSolicitacaoBLL.ObterPorCodigo(CodParecer); Solicitacao s = p.Solicitacao; foreach (var c in p.CaracteristicasAprovacao) { carSapBLL.ObterNomes(c); } solicitacaoBLL.ObterNomes(new List<Solicitacao> { p.Solicitacao }); new DefinicoesClienteSolicitacaoBLL().PreencheDependencias(p.Solicitacao.Definicoes.Last(), p.Solicitacao.CodCliente, Convert.ToInt32(Session["CodigoFilial"])); p.ContatosAprovacao = p.ContatosAprovacao.Count > 0 ? p.ContatosAprovacao : new List<ContatoClienteAprovacao>() { /* new ContatoClienteAprovacao() */ }; var perfisUsuarioLogado = perfilBLL.ObterGruposPorCodUsuario(usuario.Codusu); var queryPodeSalvarParecer = from meuPerfil in perfisUsuarioLogado where meuPerfil.CodPerfilUsuario == p.Codperusu select meuPerfil; // aqui, verifico se o usuário atual, tem perfil de aprovador var podeSalvar = queryPodeSalvarParecer.Count() > 0 ? "S" : "N"; //aqui, verifico se o parecer está aguardando aprovação if (p.Codsitpar != Convert.ToInt32(SituacaoParecer.AguardandoAprovacao)) { podeSalvar = "N"; } #region obter o perfil atribuído a cada parecer. (quem precisa aprovar) var perfilAprovador = perfilBLL.ObterPorCodigo(p.Codperusu); p.Perfil = perfilAprovador.DesPerfil; var usuarioAprovador = new UsuarioSapiensBLL().ObterPorCodigo((int)p.Codusuapr); p.Aprovador = usuarioAprovador.Nomusu; #endregion Session["Parecer"] = p; var dpa = p.DadosPrincipaisAprovacao.Last(); var def = p.DefinicoesAprovacao.Last(); //return PartialView("_Parecer", p); var parecerJson = new { Ativo = dpa.Ativo, CodParecer = p.CodParecer, Txtpar = p.Txtpar, Perfil = p.Perfil, Aprovador = p.Aprovador, LimiteSugerido = p.LimiteSugerido, CodigoDadoPrincipalAprovacao = dpa.CodigoDadoPrincipalAprovacao, CodCliente = dpa.CodCliente, CPFCNPJ = dpa.CPFCNPJ, TipoCliente = dpa.TipoCliente, InscricaoEstadual = dpa.InscricaoEstadual, SituacaoReceitaFederal = dpa.SituacaoReceitaFederal, SituacaoReceitaEstadual = dpa.SituacaoReceitaEstadual, RazaoSocial = dpa.RazaoSocial, NomeFantasia = dpa.NomeFantasia, TipoMercado = dpa.TipoMercado, TipoEmpresa = dpa.TipoEmpresa, TipoDireitoPropriedadeEmpresa = dpa.TipoDireitoPropriedadeEmpresa, CodRamoAtividade = dpa.CodRamoAtividade, RamoFiscal = dpa.RamoFiscal, CodRota = dpa.CodRota, CodSubRota = dpa.CodSubRota, CodGrupoEmpresa = dpa.CodGrupoEmpresa, CEP = dpa.CEP, Logradouro = dpa.Logradouro, Numero = dpa.Numero, Complemento = dpa.Complemento, Bairro = dpa.Bairro, Cidade = dpa.Cidade, UF = dpa.UF, Telefone = dpa.Telefone, EmailNFE = dpa.EmailNFE, PontoDeReferencia = dpa.PontoDeReferencia, ObservacaoMotivoSituacao = dpa.ObservacaoMotivoSituacao, //Definicoes = p.DefinicoesAprovacao.Last(), CodDefinicoesClienteAprovacao = def.CodDefinicoesClienteAprovacao, CodCategoria = def.CodCategoria, CodCondicaoPagamento = def.CodCondicaoPagamento, CodFilial = def.CodFilial, CodFormaDePagamento = def.CodFormaDePagamento, CodGrupoContasAReceber = def.CodGrupoContasAReceber, CodRegiaoDeVendas = def.CodRegiaoDeVendas, CodRepresentante = def.CodRepresentante, ConsumidorFinal = def.ConsumidorFinal, ContratoDesconto = def.ContratoDesconto, IndAceitaFaturamentoParcialPedido = def.IndAceitaFaturamentoParcialPedido, IndCobrarTaxaBanco = def.IndCobrarTaxaBanco, IndDescontoFinanceiro = def.IndDescontoFinanceiro, Rodrigo = def.Rodrigo, VlrDescontoFinanceiro = def.VlrDescontoFinanceiro, VlrLimite = def.VlrLimite, podeSalvar = podeSalvar }; return Json(parecerJson, JsonRequestBehavior.AllowGet); } }
//sem suporte nativo no 2010, instalar o ASync CTP e testar futuramente... // public async Task DoWork() // { // int[] ids = new[] { 1, 2, 3, 4, 5 }; // await Task.WhenAll(ids.Select(i => DoSomething(1, i, blogClient))); // } /// <summary> /// Aprova várias solicitações usando paralelismo (uso de vários núcleos da CPU disponível) /// </summary> /// <param name="solicitacoes">uma lista dos códigos das solicitações a aprovar, passados como uma string.</param> /// <returns></returns> public ActionResult AprovarVarias(string solicitacoes) { try { //Autentica if (Session["ConexaoSapiens"] == null) { return RedirectToAction("Login", "Home"); } //Autoriza if (!AutorizaUsuario(ControlAccessConfig.ListaAnalise)) { return View("Erro", null, "Módulo não autorizado para este usuário. "); } // verificar se é usuário master var perfilBLL = new PerfilUsuarioBLL(); var usuario = (UsuarioSapiens)Session["ConexaoSapiens"]; usuario.PerfisUsuario = perfilBLL.ObterGruposPorCodUsuario(usuario.Codusu); var queryMaster = from perfil in usuario.PerfisUsuario where perfil.CodPerfilUsuario == 8 select perfil; var isUsuarioMaster = queryMaster.ToList().Count > 0; if (isUsuarioMaster) { // array [1,2,3,4] veio na request como uma string 1,2,3,4, separar e criar um array de inteiros. var codigos = solicitacoes.Split(',').Select(x => Int32.Parse(x)).ToArray(); List<int> aprovados = new List<int>(); using (ParecerSolicitacaoBLL parecerBLL = new ParecerSolicitacaoBLL()) { var historicoBLL = new HistoricoSolicitacaoBLL(); foreach (var c in codigos) { // aprovar várias... // pegar o último parecer de cada solicitação. Thread t = new Thread(_ => { ServiceReferenceTeste.srvSicadSoapClient clienteTesteIntegracao = new ServiceReferenceTeste.srvSicadSoapClient(); clienteTesteIntegracao.IntegrarDadosCliente(c); }); t.Start(); aprovados.Add(c); //var parecer = solBLL.ObterPorCodigo(c).PareceresSolicitacao.Last(); // parecer.Codsitpar = Convert.ToDecimal(SituacaoParecer.AguardandoIntegracao); // parecerBLL.Atualizar(parecer); var historico = new HistoricoSolicitacao(); historico.DatEncaminhamento = DateTime.Now; historico.CodSituacaoIntegracaoSolicitacao = Convert.ToInt32(SituacaoIntegracaoSolicitacao.Integrado); historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.Integrada); var s = new SolicitacaoBLL().ObterPorCodigo(c); historico.Solicitacao = s; historicoBLL.Salvar(historico); } } // atualizar o grid na tela.. return Json(new { aprovados = aprovados }, JsonRequestBehavior.DenyGet); } else { return Json(new { erro = "A Função \"Aprovar Selecionados\" não está disponível para o usuário atual. " }, JsonRequestBehavior.DenyGet); } } catch (Exception ex) { return Json(new { erro = ex.Message }, JsonRequestBehavior.DenyGet); } }
public ActionResult SalvarParecer(DadoPrincipalAprovacao dadPri, DefinicoesClienteAprovacao defCli, string Txtpar, string StatusParecer, string chkEncerra, string vlrLimAnalise, string cpgAnalise, string fpgAnalise) { using (ParecerSolicitacaoBLL parecerSolicitacaoBLL = new ParecerSolicitacaoBLL()) { PerfilUsuarioBLL perfilBLL = new PerfilUsuarioBLL(); ConfiguracaoWorkflowBLL configBLL = new ConfiguracaoWorkflowBLL(); HistoricoSolicitacaoBLL historicoBLL = new HistoricoSolicitacaoBLL(); ParecerSolicitacao p = Session["Parecer"] as ParecerSolicitacao; Solicitacao s = Session["Solicitacao"] as Solicitacao; var historico = new HistoricoSolicitacao(); var usuario = Session["ConexaoSapiens"] as UsuarioSapiens; List<PerfilUsuario> perfisUsuarioLogado = null; if (usuario != null) { perfisUsuarioLogado = perfilBLL.ObterGruposPorCodUsuario(usuario.Codusu); } // se algum dos perfis do usuário logado contém o perfil aprovador, pode salvar parecer. var queryPodeSalvarParecer = from meuPerfil in perfisUsuarioLogado where meuPerfil.CodPerfilUsuario == p.Codperusu select meuPerfil; var podeSalvar = queryPodeSalvarParecer.Count() > 0 ? true : false; // Se o usuário logado não tiver o perfil de aprovação, não pode salvar o parecer if (!podeSalvar) { return Json(new { msg = "O perfil atual não tem permissão para aprovar este parecer." }, JsonRequestBehavior.DenyGet); } switch (StatusParecer) { case "AP": p.Codsitpar = Convert.ToDecimal(SituacaoParecer.Aprovada); break; case "RP": p.Codsitpar = Convert.ToDecimal(SituacaoParecer.Reprovada); p.Solicitacao.Situacao = "REPROVADA"; historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoParecer.Reprovada); historico.DatFinalizacao = DateTime.Now; break; } #region atualiza o parecer atual com os dados que estão na tela. SalvarDadoPrincipal(dadPri); defCli.VlrLimite = vlrLimAnalise; defCli.CodCondicaoPagamento = cpgAnalise; defCli.CodFormaDePagamento = fpgAnalise; SalvarDefinicoes(defCli); #endregion // usando o SignalR para implementar atualização geral em tempo real. // (atualiza os grids de todos os usuários logados , sem necessidade do F5) var context = GlobalHost.ConnectionManager.GetHubContext<StatusHub>(); //o parecer persistido ( pode gravar, atualizar, até excluir pelo BLL); var parecer = parecerSolicitacaoBLL.ObterPorCodigo(p.CodParecer); parecer.Codsitpar = p.Codsitpar; // O Novo parecer inicia como Aguardando Aprovação. parecer.Codusuapr = usuario.Codusu; parecer.Datpar = DateTime.Now; parecer.Solicitacao = p.Solicitacao; parecer.Txtpar = Txtpar; try { if (!String.IsNullOrEmpty(Txtpar)) { // se entrar aqui , está APROVADA e OK para Gravar. if (parecer.Codsitpar == Convert.ToDecimal(SituacaoParecer.Aprovada)) { // verificar na configuração de alçada se tem próximo nível e qual é esse nível. // 21/08/2015 - verificar se o parecer que está sendo aprovado é o último necessário // se o usuário aprovador corresponde ao nivel máximo, ou se está marcado para encerrar o parecer, pode enviar... var prontaParaIntegrar = (((parecer.Codperusu - 2) == s.nivelMaximo) || chkEncerra == "S"); //(s.PareceresSolicitacao.Count - 1) == s.nivelMaximo || chkEncerra == "S" if (prontaParaIntegrar) { try { // muda status para Aguardando integração parecer.Codsitpar = Convert.ToDecimal(SituacaoParecer.AguardandoIntegracao); parecer.Solicitacao.CodSituacaoAtual = Convert.ToInt32(SituacaoSolicitacao.AguardandoIntegracao); parecerSolicitacaoBLL.Atualizar(parecer); s.CodSituacaoAtual = Convert.ToInt32(SituacaoSolicitacao.AguardandoIntegracao); Thread t = new Thread(_ => { ServiceReferenceTeste.srvSicadSoapClient clienteTesteIntegracao = new ServiceReferenceTeste.srvSicadSoapClient(); clienteTesteIntegracao.IntegrarDadosCliente(p.Solicitacao.Codigo); }); t.Start(); historico.DatEncaminhamento = DateTime.Now; historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.AguardandoIntegracao); historico.Solicitacao = s; if (chkEncerra == "S") { Txtpar += " ( Encerramento do workflow antecipado por " + usuario.Nomusu + " )"; } historico.TxtHistorico = Txtpar; historicoBLL.Salvar(historico); } catch (Exception ex) { // TODO: Retirar depois de validar a execução do webservice ( vai ficar aguardando Integração se for finalmente aprovado ) parecer.Codsitpar = Convert.ToDecimal(SituacaoParecer.AguardandoAprovacao); parecerSolicitacaoBLL.Atualizar(parecer); throw ex; } } else { int codPerfilAprovadorAtual = Convert.ToInt32(parecer.Codperusu); // se não encerra, cria um novo parecer ... var novoParecer = new ParecerSolicitacao(); novoParecer.Solicitacao = p.Solicitacao; novoParecer.Codsitpar = Convert.ToDecimal(SituacaoParecer.AguardandoAprovacao); novoParecer.Codhistsol = historico.CodHistoricoSolicitacao; // pegar o codhist OK //novoParecer.Codperusu = ++p.Codperusu; // o perfil do analista de crédito. -> se o usuário não tiver perfil, avisar na tela. int codPerfilProximoAprovador = 0; switch (codPerfilAprovadorAtual) { case 2: codPerfilProximoAprovador = 3; break; case 3: codPerfilProximoAprovador = 4; break; case 4: codPerfilProximoAprovador = 5; break; //case 5: return Json("", JsonRequestBehavior.DenyGet); } novoParecer.Codperusu = (decimal)codPerfilProximoAprovador; //novoParecer.Codusuapr = s.CodUsuarioSolicitacao; // obter o codigo do usuario da aprovacao. OK novoParecer.Codusuapr = usuario.Codusu; // necessário definir o código como 0 para instruir o NHibernate que este é um novo objeto. dadPri.CodigoDadoPrincipalAprovacao = 0; dadPri.Parecer = parecer; // salvar todos os dados do parecer anterior no novo parecer, e incluir as alterações feitas na tela. novoParecer.DadosPrincipaisAprovacao.Add(dadPri); defCli.CodDefinicoesClienteAprovacao = 0; defCli.Parecer = parecer; novoParecer.DefinicoesAprovacao.Add(defCli); foreach (var ca in p.CaracteristicasAprovacao) { ca.CodCaracteristicaClienteAprovacao = 0; novoParecer.CaracteristicasAprovacao.Add(ca); } foreach (var ec in p.EnderecosCobrancaAprovacao) { ec.CodEnderecoCobrancaClienteApr = 0; novoParecer.EnderecosCobrancaAprovacao.Add(ec); } foreach (var ee in p.EnderecosEntregaAprovacao) { ee.CodEnderecoEntregaClienteApr = 0; novoParecer.EnderecosEntregaAprovacao.Add(ee); } foreach (var r in p.ReferenciasAprovacao) { r.CodReferenciaApr = 0; novoParecer.ReferenciasAprovacao.Add(r); } foreach (var c in p.ContatosAprovacao) { c.CodContatoAprovacao = 0; novoParecer.ContatosAprovacao.Add(c); } foreach (var soc in p.SociosAprovacao) { soc.CodSocioEmpresaAprovacao = 0; novoParecer.SociosAprovacao.Add(soc); } foreach (var doc in p.DocumentosAnexadosAprovacao) { doc.CodDocumentoAnexadoApr = 0; novoParecer.DocumentosAnexadosAprovacao.Add(doc); } // EX: se estiver R$ 5.000,00 vai ficar 5000, se for nulo vai virar string vazia novoParecer.DefinicoesAprovacao.Last().VlrLimite = String.IsNullOrEmpty(novoParecer.DefinicoesAprovacao.Last().VlrLimite) ? "" : Regex.Replace(novoParecer.DefinicoesAprovacao.Last().VlrLimite, @"(\s+)|(\\+)|(\.+)|(/+)|(\-+)|(\,+)|(R+)|(\$+)", ""); novoParecer.DefinicoesAprovacao.Last().VlrLimite = novoParecer.DefinicoesAprovacao.Last().VlrLimite != "" ? novoParecer.DefinicoesAprovacao.Last().VlrLimite.Substring(0, novoParecer.DefinicoesAprovacao.Last().VlrLimite.Length - 2) : ""; // EX: se estiver R$ 5.000,00 vai ficar 5000, se for nulo vai virar string vazia novoParecer.DefinicoesAprovacao.Last().VlrDescontoFinanceiro = String.IsNullOrEmpty(novoParecer.DefinicoesAprovacao.Last().VlrDescontoFinanceiro) ? "" : Regex.Replace(novoParecer.DefinicoesAprovacao.Last().VlrDescontoFinanceiro, @"(\s+)|(\\+)|(\.+)|(/+)|(\-+)|(\,+)|(R+)|(\$+)", ""); // .Substring(0, novoParecer.DefinicoesAprovacao.Last().VlrDescontoFinanceiro.Length - 2) estava assim pois inicialmente esse campo foi entendido como monetário, mas é um valor percentual,como em '33%' ou '02%' // salva o novo parecer e os objetos associados. parecerSolicitacaoBLL.Salvar(novoParecer); // atualiza o parecer existente para aprovado parecerSolicitacaoBLL.Atualizar(parecer); historico.Solicitacao = p.Solicitacao; historico.TxtHistorico = p.Txtpar; historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.AguardandoAprovacao); historicoBLL.Salvar(historico); } // fim do "se não encerra" } // fim do "se aprova" else // se não aprova. { historico.DatFinalizacao = DateTime.Now; historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.Reprovada); p.Solicitacao.CodSituacaoAtual = Convert.ToInt32(SituacaoSolicitacao.Reprovada); s.CodSituacaoAtual = Convert.ToInt32(SituacaoSolicitacao.Reprovada); historico.Solicitacao = p.Solicitacao; historico.TxtHistorico = Txtpar; // MOTIVO DA REPROVAÇÃO. historicoBLL.SalvarOuAtualizar(historico); //TODO: atualizar o código da situação da solicitação. new SolicitacaoBLL().AtualizarSituacao(s.Codigo, Convert.ToInt32(SituacaoSolicitacao.Reprovada)); parecerSolicitacaoBLL.Atualizar(parecer); context.Clients.All.AtualizarGrid(); return Json(new { msg = "Parecer Atualizado." }, JsonRequestBehavior.DenyGet); } // fim do "se não aprova" context.Clients.All.AtualizarGrid(); return Json(new { msg = "Parecer Atualizado." }, JsonRequestBehavior.DenyGet); } else { throw new Exception("Não foi possível obter o texto do parecer."); } } // Fim do try catch (Exception ex) { historico.Solicitacao = p.Solicitacao; historico.CodSituacaoIntegracaoSolicitacao = Convert.ToInt32(SituacaoIntegracaoSolicitacao.Erro); historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.AguardandoAprovacao); historico.TxtHistorico = ex.Message; historico.DatFinalizacao = DateTime.Now; historicoBLL.Salvar(historico); return Json(new { erro = "Não foi possível salvar o parecer. Detalhes : " + ex.Message }, JsonRequestBehavior.DenyGet); } } }
public ActionResult Reintegrar(int codigo) { try { //Autentica if (Session["ConexaoSapiens"] == null) { return RedirectToAction("Login", "Home"); } //Autoriza if (!AutorizaUsuario(ControlAccessConfig.ListaAnalise)) { return View("Erro", null, "Módulo não autorizado para este usuário. "); } // verificar se é usuário master var perfilBLL = new PerfilUsuarioBLL(); var usuario = (UsuarioSapiens)Session["ConexaoSapiens"]; usuario.PerfisUsuario = perfilBLL.ObterGruposPorCodUsuario(usuario.Codusu); var queryTi = from perfil in usuario.PerfisUsuario where perfil.CodPerfilUsuario == 1 select perfil; var ehUsuarioTI = queryTi.ToList().Count > 0; if (ehUsuarioTI) { using (ParecerSolicitacaoBLL parecerBLL = new ParecerSolicitacaoBLL()) { var historicoBLL = new HistoricoSolicitacaoBLL(); Thread t = new Thread(_ => { ServiceReferenceTeste.srvSicadSoapClient clienteTesteIntegracao = new ServiceReferenceTeste.srvSicadSoapClient(); clienteTesteIntegracao.IntegrarDadosCliente(codigo); }); t.Start(); // pegar o último parecer da solicitação. // var parecer = solBLL.ObterPorCodigo(c).PareceresSolicitacao.Last(); // parecer.Codsitpar = Convert.ToDecimal(SituacaoParecer.AguardandoIntegracao); // parecerBLL.Atualizar(parecer); var historico = new HistoricoSolicitacao(); historico.DatEncaminhamento = DateTime.Now; historico.CodSituacaoIntegracaoSolicitacao = Convert.ToInt32(SituacaoIntegracaoSolicitacao.Pendente); historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.Aprovada); var s = new SolicitacaoBLL().ObterPorCodigo(codigo); historico.Solicitacao = s; historico.TxtHistorico = "Nova tentativa de reintegração."; historicoBLL.Salvar(historico); } // fim do using // atualizar o grid na tela.. return Json(new { msg = "Integração iniciada..." + codigo }, JsonRequestBehavior.AllowGet); } else { return Json(new { erro = "A Função \"Reintegrar\" não está disponível para o usuário atual. " }, JsonRequestBehavior.AllowGet); } } catch (Exception ex) { return Json(new { erro = ex.Message }, JsonRequestBehavior.DenyGet); } }