예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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);
            }
        }