public ActionResult EnviarParaAprovacao(string textoParecer) { using (var historicoBLL = new HistoricoSolicitacaoBLL()) { var parecerSolicitacaoBLL = new ParecerSolicitacaoBLL(); var configBLL = new ConfiguracaoWorkflowBLL(); var s = Session["Solicitacao"] as Solicitacao; try { s.TxtJustificativa = textoParecer; #region Faz a configuração para o workflow var config = new ConfiguracaoWorkflow(); //s.CodTipoSolicitacao = config.StrUsuAlcada = String.IsNullOrEmpty(s.Definicoes.Last().VlrLimite) ? "0" : s.Definicoes.Last().VlrLimite.ToString(); //obter o valor do limite. config.StrUsuAlcadamax = String.IsNullOrEmpty(s.Definicoes.Last().VlrLimite) ? "0" : s.Definicoes.Last().VlrLimite.ToString(); config.StrUsuTipsol = Convert.ToInt32(TipoSolicitacao.Inclusao).ToString(); config.UsuTipsol = Convert.ToInt32(TipoSolicitacao.Inclusao); // SEMPRE INCLUSÃO para o workflow. config.UsuAlcada = Convert.ToDouble(config.StrUsuAlcada); config.UsuAlcadamax = Convert.ToDouble(config.StrUsuAlcadamax); config = configBLL.ObterConfiguracao(config, true); s.nivelMaximo = configBLL.ObterNivel(config); //config.UsuNivel = configBLL.ObterNivel(config); #endregion #region Salvar o parecer, um novo registro no histórico, e os dados do parecer. // gravar o Primeiro parecer (primeiro parecer de solicitação, e o 'aprovador' será definido pela configuração.) var p = new ParecerSolicitacao(); var historico = new HistoricoSolicitacao(); // Mudar da situação 'DIGITANDO - 1' para 'AGUARDANDO APROVAÇÃO - 2' historico.CodSituacaoSolicitacao = Convert.ToInt32(SituacaoSolicitacao.AguardandoAprovacao); historico.DatEncaminhamento = DateTime.Now; historico.Solicitacao = s; s.CodSituacaoAtual = Convert.ToInt32(SituacaoParecer.AguardandoAprovacao); //pegar a última. //s.nivelMaximo = config.UsuNivel; new SolicitacaoBLL().Atualizar(s); p.Solicitacao = s; p.Codperusu = 2; // o perfil do analista de crédito. -> se o usuário não tiver perfil, avisar na tela. p.Codusuapr = s.CodUsuarioSolicitacao; // obter o codigo do usuario da aprovacao. OK //p.Datpar = historico.DatEncaminhamento; p.Codsitpar = Convert.ToInt32(SituacaoParecer.AguardandoAprovacao); if (!String.IsNullOrEmpty(s.TxtJustificativa)) { parecerSolicitacaoBLL.PreencheParecerComDadosSolicitacao(p, s); parecerSolicitacaoBLL.Salvar(p); // Salvar o histórico da solicitação historicoBLL.Salvar(historico); } else { throw new Exception("A Justificativa da Solicitação não foi encontrada."); } #endregion // return Json(new { msg = "Envio da solicitação nº " + s.Codigo + " para aprovação foi realizado com sucesso." }, JsonRequestBehavior.DenyGet); // (atualiza os grids de todos os usuários logados , sem necessidade do F5) var context = GlobalHost.ConnectionManager.GetHubContext<StatusHub>(); context.Clients.All.AtualizarGrid(); return RedirectToAction("Index", "Solicitacao"); } catch (Exception ex) { return Json(new { msg = "Não foi possível enviar a Solicitação nº " + s.Codigo + " para aprovação. ERRO -> " + ex.Message }, JsonRequestBehavior.DenyGet); } } }
public ActionResult Editar(ConfiguracaoWorkflow c) { //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()) { int usuId = c.UsuId.Value; var workflow = bll.ObterPorCodigo(usuId); workflow.UsuSituacao = c.UsuSituacao; workflow.UsuAlcada = c.UsuAlcada; workflow.UsuAlcadamax = c.UsuAlcadamax; workflow.UsuEncerra = c.UsuEncerra; bll.SalvarOuAtualizar(workflow); var listaConfigWorkflow = bll.ListarTodos().Where(w => w.UsuGrupo.HasValue).ToList(); bll.ObterNomes(listaConfigWorkflow); return View("Index", listaConfigWorkflow); } }