コード例 #1
0
        public ActionResult RecallOportunidade(int recallOportunidadeId, string motivoRecallOportunidade)
        {
            var oportunidadeBusca = _oportunidadeRepositorio.ObterOportunidadePorId(recallOportunidadeId);

            if (oportunidadeBusca == null)
            {
                throw new Exception("Oportunidade não encontrada ou já excluída");
            }

            var token = Autenticador.Autenticar();

            if (token == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Não foi possível se autenticar no serviço de Recall"));
            }

            var ultimoProtocolo = _workflowRepositorio.UltimoProtocolo(oportunidadeBusca.Id, Processo.OPORTUNIDADE);

            var workflow = new RecallService(token);

            var retorno = workflow.Recall(new CadastroRecall(ultimoProtocolo, User.ObterLogin(), User.ObterNome(), User.ObterEmail(), motivoRecallOportunidade));

            if (retorno == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Nenhuma resposta do serviço de Recall"));
            }

            if (retorno.sucesso)
            {
                if (oportunidadeBusca.Cancelado)
                {
                    //_oportunidadeRepositorio.AtualizarStatusOportunidade(StatusOportunidade.ATIVA, oportunidadeBusca.Id);
                    //_oportunidadeRepositorio.AtualizarCancelamentoOportunidade(false, oportunidadeBusca.Id);
                    //_oportunidadeRepositorio.AtualizarDataCancelamentoOportunidade(null, oportunidadeBusca.Id);
                    _oportunidadeRepositorio.PermiteAlterarDataCancelamento(oportunidadeBusca.Id, true);
                }

                if (oportunidadeBusca.StatusOportunidade == StatusOportunidade.ENVIADO_PARA_APROVACAO)
                {
                    _oportunidadeRepositorio.AtualizarStatusOportunidade(null, oportunidadeBusca.Id);
                }

                var fichasFaturamento = _oportunidadeRepositorio.ObterFichasFaturamento(oportunidadeBusca.Id);

                foreach (var ficha in fichasFaturamento)
                {
                    if (ficha.StatusFichaFaturamento == StatusFichaFaturamento.EM_APROVACAO)
                    {
                        _oportunidadeRepositorio.AtualizarStatusFichaFaturamento(StatusFichaFaturamento.EM_ANDAMENTO, ficha.Id);
                    }
                }

                return(Json(new
                {
                    Processo = Processo.OPORTUNIDADE,
                    RedirectUrl = $"/Oportunidades/Atualizar/{oportunidadeBusca.Id}"
                }, JsonRequestBehavior.AllowGet));
            }

            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, retorno.mensagem));
        }