コード例 #1
0
        public ActionResult Atualizar(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction(nameof(Index)));
            }

            var modelo = _modeloRepositorio.ObterModeloPorId(id.Value);

            if (modelo == null)
            {
                RegistroNaoEncontrado();
            }

            var viewModel = new ModeloViewModel
            {
                Id                 = modelo.Id,
                Descricao          = modelo.Descricao,
                DiasFreeTime       = modelo.DiasFreeTime,
                QtdeDias           = modelo.QtdeDias,
                Status             = modelo.Status,
                TipoOperacao       = modelo.TipoOperacao,
                Validade           = modelo.Validade,
                TipoValidade       = modelo.TipoValidade,
                FormaPagamento     = modelo.FormaPagamento,
                ImpostoId          = modelo.ImpostoId,
                VendedorId         = modelo.VendedorId,
                Acordo             = modelo.Acordo,
                Escalonado         = modelo.Escalonado,
                ParametroBL        = modelo.ParametroBL,
                ParametroLote      = modelo.ParametroLote,
                ParametroIdTabela  = modelo.ParametroIdTabela,
                ParametroConteiner = modelo.ParametroConteiner,
                HubPort            = modelo.HubPort,
                CobrancaEspecial   = modelo.CobrancaEspecial,
                DesovaParcial      = modelo.DesovaParcial,
                FatorCP            = modelo.FatorCP,
                PosicIsento        = modelo.PosicIsento,
                TipoServico        = modelo.TipoServico,
                IntegraChronos     = modelo.IntegraChronos,
                Simular            = modelo.Simular
            };

            PopularVendedores(viewModel);
            PopularImpostos(viewModel);
            PopularModelosSimulador(viewModel);
            PopularVinculosModelosSimulador(viewModel);

            return(View(viewModel));
        }
コード例 #2
0
        public ActionResult Index(string termo, string chave, string menu)
        {
            if (!string.IsNullOrWhiteSpace(termo))
            {
                var contas             = _contaRepositorio.ObterContasPorDescricao(termo, (int?)ViewBag.UsuarioExternoId);
                var contatos           = _contatoRepositorio.ObterContatosPorDescricao(termo, (int?)ViewBag.UsuarioExternoId);
                var mercadorias        = _mercadoriaRepositorio.ObterMercadoriaPorDescricao(termo);
                var modelos            = _modeloRepositorio.ObterModelosPorDescricao(termo);
                var oportunidades      = _oportunidadeRepositorio.ObterOportunidadesPorDescricao(termo, (int?)ViewBag.UsuarioExternoId);
                var subClientes        = _oportunidadeRepositorio.ObterSubClientesPorDescricao(termo, (int?)ViewBag.UsuarioExternoId);
                var clientesGrupo      = _oportunidadeRepositorio.ObterClientesGrupoCNPJPorDescricao(termo, (int?)ViewBag.UsuarioExternoId);
                var adendosSubClientes = _oportunidadeRepositorio.ObterAdendosPorSubClientes(termo, (int?)ViewBag.UsuarioExternoId);
                var servicos           = _servicoRepositorio.ObterServicosPorDescricao(termo);

                return(View(new BuscaViewModel
                {
                    Termo = termo,
                    Contas = contas.ToList(),
                    Contatos = contatos.ToList(),
                    Mercadorias = mercadorias.ToList(),
                    Modelos = modelos.ToList(),
                    Oportunidades = oportunidades.ToList(),
                    SubClientes = subClientes.ToList(),
                    ClientesGrupoCNPJ = clientesGrupo.ToList(),
                    Servicos = servicos.ToList(),
                    AdendosSubClientes = adendosSubClientes.ToList()
                }));
            }

            if (!string.IsNullOrWhiteSpace(chave))
            {
                var id = chave.ToInt();

                Conta                                conta              = new Conta();
                Contato                              contato            = new Contato();
                Mercadoria                           mercadoria         = new Mercadoria();
                Modelo                               modelo             = new Modelo();
                Servico                              servico            = new Servico();
                Oportunidade                         oportunidade       = new Oportunidade();
                List <OportunidadeDTO>               oportunidades      = new List <OportunidadeDTO>();
                List <ClientePropostaDTO>            subClientes        = new List <ClientePropostaDTO>();
                List <ClientePropostaDTO>            clientesGrupo      = new List <ClientePropostaDTO>();
                List <OportunidadeAdendoClientesDTO> adendosSubClientes = new List <OportunidadeAdendoClientesDTO>();

                var viewModel = new BuscaViewModel();

                switch (menu)
                {
                case "Contas":

                    conta = _contaRepositorio.ObterContaPorId(id);

                    if (ViewBag.UsuarioExternoId != null)
                    {
                        if (!_usuarioRepositorio.ExisteVinculoConta(conta.Id, ViewBag.UsuarioExternoId))
                        {
                            break;
                        }
                    }

                    if (conta != null)
                    {
                        viewModel.Contas.Add(conta);

                        subClientes = _oportunidadeRepositorio.ObterSubClientesPorConta(conta.Id).ToList();

                        if (subClientes != null)
                        {
                            viewModel.SubClientes.AddRange(subClientes);
                        }

                        clientesGrupo = _oportunidadeRepositorio.ObterClientesGrupoCNPJPorConta(conta.Id).ToList();

                        if (clientesGrupo != null)
                        {
                            viewModel.ClientesGrupoCNPJ.AddRange(clientesGrupo);
                        }

                        oportunidades = _oportunidadeRepositorio.ObterOportunidadesPorConta(conta.Id).ToList();

                        if (oportunidades != null)
                        {
                            viewModel.Oportunidades.AddRange(oportunidades);
                        }
                    }

                    break;

                case "Contatos":
                    contato = _contatoRepositorio.ObterContatoPorId(id);

                    if (contato != null)
                    {
                        viewModel.Contatos.Add(contato);
                    }

                    break;

                case "Mercadorias":
                    mercadoria = _mercadoriaRepositorio.ObterMercadoriaPorId(id);

                    if (mercadoria != null)
                    {
                        viewModel.Mercadorias.Add(mercadoria);
                    }

                    break;

                case "Modelos":
                    modelo = _modeloRepositorio.ObterModeloPorId(id);

                    if (modelo != null)
                    {
                        viewModel.Modelos.Add(modelo);
                    }
                    break;

                case "Oportunidades":

                    oportunidade = _oportunidadeRepositorio.ObterOportunidadePorId(id);

                    if (ViewBag.UsuarioExternoId != null)
                    {
                        if (!_usuarioRepositorio.ExisteVinculoConta(oportunidade.ContaId, ViewBag.UsuarioExternoId))
                        {
                            break;
                        }
                    }

                    if (oportunidade != null)
                    {
                        viewModel.Oportunidades.Add(new OportunidadeDTO
                        {
                            Id                 = oportunidade.Id,
                            Identificacao      = oportunidade.Identificacao,
                            Descricao          = oportunidade.Descricao,
                            ContaDescricao     = oportunidade.Conta.Descricao,
                            SucessoNegociacao  = oportunidade.SucessoNegociacao,
                            StatusOportunidade = oportunidade.StatusOportunidade
                        });
                    }
                    break;

                case "Serviços":
                    servico = _servicoRepositorio.ObterServicoPorId(id);

                    if (servico != null)
                    {
                        viewModel.Servicos.Add(servico);
                    }
                    break;

                default:
                    break;
                }

                return(View(viewModel));
            }

            return(RedirectToAction("Index", "Home"));
        }
コード例 #3
0
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            var oportunidadeId = 0;

            if (context.RouteData != null && context.RouteData.Values["id"] != null)
            {
                oportunidadeId = context.RouteData.Values["id"].ToString().ToInt();
            }
            else
            {
                if (context.HttpContext.Request.Headers["Referer"] != null)
                {
                    var referer = context.HttpContext.Request.Headers["Referer"].Split('/');

                    oportunidadeId = referer[referer.Length - 1].ToInt();
                }
            }

            var oportunidadeBusca = _oportunidadeRepositorio
                                    .ObterOportunidadePorId(oportunidadeId);

            if (oportunidadeBusca == null)
            {
                throw new Exception($"Oportunidade ({oportunidadeId}) não encontrada");
            }

            var usuarioIntegracao = _usuarioRepositorio
                                    .ObterUsuariosIntegracao()
                                    .Where(c => c.UsuarioId == HttpContext.Current.User.ObterId()).FirstOrDefault();

            if (usuarioIntegracao == null)
            {
                context.Controller.ViewBag.HabilitaBotaoIntegracaoProposta = false;
            }
            else
            {
                var modeloBusca = _modeloRepositorio.ObterModeloPorId(oportunidadeBusca.OportunidadeProposta.ModeloId);

                if (modeloBusca == null)
                {
                    context.Controller.ViewBag.HabilitaBotaoIntegracaoProposta = false;
                }
                else
                {
                    var permiteIntegracao = modeloBusca.IntegraChronos;

                    var usuarioHabilitadoIntegracaoProducao = usuarioIntegracao.AcessoProducao;

                    var oportunidadeEnviadaAprovacao = oportunidadeBusca.StatusOportunidade == StatusOportunidade.ENVIADO_PARA_APROVACAO;

                    if (HttpContext.Current.User.IsInRole("BaseDesenvolvimento"))
                    {
                        context.Controller.ViewBag.HabilitaBotaoIntegracaoProposta = permiteIntegracao && oportunidadeEnviadaAprovacao;
                    }
                    else
                    {
                        context.Controller.ViewBag.HabilitaBotaoIntegracaoProposta = permiteIntegracao && oportunidadeEnviadaAprovacao && usuarioHabilitadoIntegracaoProducao;
                    }
                }
            }
        }
コード例 #4
0
        public void EnviarAdendoParaAprovacao(int id)
        {
            var adendoBusca = _oportunidadeRepositorio.ObterAdendoPorId(id);

            if (adendoBusca == null)
            {
                _logger.Info($"Adendo {adendoBusca.Id} não encontrado");
            }

            var oportunidadeBusca = _oportunidadeRepositorio.ObterOportunidadePorId(adendoBusca.OportunidadeId);

            if (oportunidadeBusca == null)
            {
                _logger.Info($"Oportunidade {oportunidadeBusca.Id} não encontrada");
            }

            if (oportunidadeBusca.OportunidadeProposta == null || oportunidadeBusca.OportunidadeProposta.ModeloId == 0)
            {
                _logger.Info($"A Oportunidade {oportunidadeBusca.Id} não possui nenhum Modelo Vinculado");
            }

            var modelo = _modeloRepositorio.ObterModeloPorId(oportunidadeBusca.OportunidadeProposta.ModeloId);

            var aprovacoes = _workflowRepositorio.ObterAprovacoesPorOportunidade(oportunidadeBusca.Id, Processo.ADENDO);

            if (aprovacoes.Any() && adendoBusca.StatusAdendo == StatusAdendo.ENVIADO)
            {
                _logger.Info($"Já existe uma aprovação pendente para este Adendo {adendoBusca.Id}");
            }

            var token = Autenticador.Autenticar();

            if (token == null)
            {
                _logger.Info("Não foi possível se autenticar no serviço de Workflow");
            }

            var workflow = new WorkflowService(token);

            IEnumerable <dynamic> clientes = null;

            if (adendoBusca.TipoAdendo == TipoAdendo.INCLUSAO_SUB_CLIENTE)
            {
                clientes = _oportunidadeRepositorio
                           .ObterAdendoSubClientesInclusao(adendoBusca.Id)
                           .Select(c => $"{c.Descricao} ({ c.Documento})");
            }

            if (adendoBusca.TipoAdendo == TipoAdendo.INCLUSAO_GRUPO_CNPJ)
            {
                clientes = _oportunidadeRepositorio
                           .ObterAdendoGruposCNPJ(adendoBusca.Id, AdendoAcao.INCLUSAO)
                           .Select(c => $"{c.Descricao} ({ c.Documento})");
            }

            if (adendoBusca.TipoAdendo == TipoAdendo.EXCLUSAO_SUB_CLIENTE)
            {
                clientes = _oportunidadeRepositorio
                           .ObterAdendoSubClientesExclusao(adendoBusca.Id)
                           .Select(c => $"{c.Descricao} ({ c.Documento})");
            }

            if (adendoBusca.TipoAdendo == TipoAdendo.EXCLUSAO_GRUPO_CNPJ)
            {
                clientes = _oportunidadeRepositorio
                           .ObterAdendoGruposCNPJ(adendoBusca.Id, AdendoAcao.EXCLUSAO)
                           .Select(c => $"{c.Descricao} ({ c.Documento})");
            }

            if (adendoBusca.TipoAdendo == TipoAdendo.FORMA_PAGAMENTO)
            {
                var adendoFormaPagamento = _oportunidadeRepositorio
                                           .ObterAdendoFormaPagamento(adendoBusca.Id)
                                           .FormaPagamento
                                           .ToName();

                var lst = new List <string>
                {
                    adendoFormaPagamento
                };

                clientes = lst;
            }

            if (adendoBusca.TipoAdendo == TipoAdendo.ALTERACAO_VENDEDOR)
            {
                var adendoVendedor = _oportunidadeRepositorio
                                     .ObterAdendoVendedor(adendoBusca.Id).VendedorId;

                var vendedor = _vendedorRepositorio.ObterVendedorPorId(adendoVendedor);

                var lst = new List <string>
                {
                    vendedor.Nome
                };

                clientes = lst;
            }

            var oportunidadeDetalhes = _oportunidadeRepositorio.ObterDetalhesOportunidade(oportunidadeBusca.Id);

            var campos = new
            {
                OportunidadeId        = oportunidadeBusca.Id,
                Descricao             = $"A-{adendoBusca.Id}",
                DescricaoOportunidade = oportunidadeBusca.Descricao,
                oportunidadeDetalhes.Conta,
                oportunidadeDetalhes.TabelaId,
                TipoAdendo   = adendoBusca.TipoAdendo.ToName(),
                StatusAdendo = adendoBusca.StatusAdendo.ToName(),
                adendoBusca.DataCadastro,
                adendoBusca.CriadoPor,
                TipoOperacao = modelo.TipoOperacao.ToString(),
                Clientes     = clientes != null?string.Join(",", clientes) : string.Empty
            };

            var retorno = workflow.EnviarParaAprovacao(
                new CadastroWorkflow(Processo.ADENDO, 1, adendoBusca.Id, User.ObterLogin(), User.ObterNome(), User.ObterEmail(), JsonConvert.SerializeObject(campos)));

            if (retorno == null)
            {
                throw new Exception("Nenhuma resposta do serviço de Workflow");
            }

            if (retorno.sucesso == false)
            {
                _logger.Info(retorno.mensagem);
            }

            _workflowRepositorio.IncluirEnvioAprovacao(new EnvioWorkflow(oportunidadeBusca.Id, Processo.ADENDO, retorno.protocolo, retorno.mensagem, User.ObterId()));

            _oportunidadeRepositorio.AtualizarStatusAdendo(StatusAdendo.ENVIADO, adendoBusca.Id);

            _logger.Info($"Adendo {adendoBusca.Id} enviado para Aprovação");
        }