Exemplo n.º 1
0
        protected void SalvarAtividadeLigacao(AtividadeNewViewModel model, string userId)
        {
            if (model.id == null) // Adicionar
            {
                if (model.statusAtividadeID == null)
                {
                    model.statusAtividadeID = _statusAtividadeServico.ObterStatusAtividadePadraoParaLigacao().Id;
                }

                int?canalId = null;
                var canal   = _canalServico.ObterCanalTelefone();
                if (canal.ValidationResult.IsValid)
                {
                    canalId = canal.Id;
                }

                if (model.atendimentoID == null)
                {
                    var atendimento = _atendimentoServico.AdicionarNovoAtendimento(canalId, userId, null);

                    if (atendimento.ValidationResult.IsValid)
                    {
                        model.atendimentoID = atendimento.Id;
                    }
                }

                var atividade = new Atividade(userId, (int)model.statusAtividadeID, model.atividadeTipoID, model.titulo,
                                              model.pessoaFisicaID, model.pessoaJuridicaID, model.potencialClienteID, model.ocorrenciaID,
                                              model.descricao, model.atendimentoID, model.midiaID, null, null, null, model.previsaoDeExecucao,
                                              canalId, userId)
                {
                    PrevisaoDeExecucao = model.previsaoDeExecucao
                };
                model.ValidationResult = _atividadeServico.Adicionar(atividade);

                if (model.ValidationResult.IsValid)
                {
                    model.id = atividade.Id;
                    var ligacao = new Ligacao(atividade.PessoasFisicasId, atividade.PessoasJuridicasId,
                                              atividade.PotenciaisClientesId, userId, model.Ligacao.sentido, atividade.Id,
                                              model.Ligacao.telefoneID, null, null, null);
                    model.ValidationResult = _ligacaoServico.Adicionar(ligacao);

                    if (model.ValidationResult.IsValid)
                    {
                        if (model.filaID != null)
                        {
                            ColocarAtividadeFila((int)model.filaID, atividade.Id);
                        }
                    }

                    _servicoAtividadeParteEnvolvidaServico.Adicionar(new AtividadeParteEnvolvida(atividade.Id,
                                                                                                 atividade.PessoasFisicasId, atividade.PessoasJuridicasId, null, userId,
                                                                                                 TipoParteEnvolvida.ClienteTratado.Value, null, null));
                }
            }
            else //Atualizar
            {
                var atividade = _atividadeServico.ObterPorId((long)model.id);

                if (atividade != null && atividade.FinalizadoEm == null)
                {
                    if (model.statusAtividadeID != null)
                    {
                        var statusAtividade = _statusAtividadeServico.ObterPorId((long)model.statusAtividadeID);

                        if (statusAtividade != null)
                        {
                            if (statusAtividade.FinalizaAtividade)
                            {
                                atividade.FinalizadoEm        = DateTime.Now;
                                atividade.FinalizadoPorUserId = userId;
                            }
                        }
                        atividade.StatusAtividadeId = (int)model.statusAtividadeID;
                    }

                    atividade.Descricao = model.descricao;

                    if (model.atendimentoID != null)
                    {
                        atividade.AtendimentoId = (long)model.atendimentoID;
                    }

                    _atividadeServico.Atualizar(atividade);
                }

                if (model.dataAgendamento != null)
                {
                    if (model.statusAtividadeID == null)
                    {
                        model.statusAtividadeID =
                            _statusAtividadeServico.ObterStatusAtividadeLigacaoReceptiva().FirstOrDefault().Id;
                    }

                    var novaAtividade = new Atividade()
                    {
                        PessoasFisicasId     = atividade.PessoasFisicasId,
                        PessoasJuridicasId   = atividade.PessoasJuridicasId,
                        PotenciaisClientesId = atividade.PotenciaisClientesId,
                        OcorrenciaId         = atividade.OcorrenciaId,
                        CriadoPorUserId      = userId,
                        ContratoId           = atividade.ContratoId,
                        Descricao            = model.descricao,
                        MidiasId             = atividade.MidiasId,
                        StatusAtividadeId    = _statusAtividadeServico.ObterStatusAtividadePadraoParaLigacao().Id,
                        AtividadeTipoId      = 3,
                        Titulo = atividade.Titulo,
                        //atendimentoID = model.atendimentoID,
                        PrevisaoDeExecucao = model.dataAgendamento
                    };

                    if (model.agendamentoPrivado != null)
                    {
                        if ((bool)model.agendamentoPrivado)
                        {
                            novaAtividade.ResponsavelPorUserId = novaAtividade.CriadoPorUserId;
                        }
                    }

                    model.ValidationResult = _atividadeServico.Adicionar(novaAtividade);

                    if (model.ValidationResult.IsValid)
                    {
                        var ligacao = _ligacaoServico.BuscarPorAtividadeId(atividade.Id);

                        model.id = novaAtividade.Id;
                        var novaligacao = new Ligacao(novaAtividade.PessoasFisicasId, novaAtividade.PessoasJuridicasId,
                                                      novaAtividade.PotenciaisClientesId, userId, "S", novaAtividade.Id, ligacao.TelefoneId,
                                                      ligacao.NumeroOriginal, null, null);
                        model.ValidationResult = _ligacaoServico.Adicionar(novaligacao);

                        if (model.ValidationResult.IsValid)
                        {
                            var filaID = _atividadeFilaServico.ObterUltimoVinculoPraAtividade(atividade.Id);

                            if (filaID != null)
                            {
                                ColocarAtividadeFila(filaID.FilaId, novaAtividade.Id, novaAtividade.ResponsavelPorUserId);
                            }
                        }
                    }
                }
            }
        }
        public ValidationResult AdicionarSolicitacaoLigacaoCorretor(long ocorrenciaId, string criadoPorUserId,
                                                                    string descricao)
        {
            var retorno         = new ValidationResult();
            var statusAtividade = _servicoStatusAtividade.ObterStatusAtividadePadraoParaLigacao();
            var valorEncontrado = statusAtividade != null;

            if (!valorEncontrado)
            {
                retorno.Add(
                    new ValidationError(
                        "Não foi possível cadastrar a solicitação de ligação: nenhum status atividade padrão para ligação retornado"));
                return(retorno);
            }

            valorEncontrado = false;
            var atividadeTipo = _servicoAtividadeTipo.BuscarPorNome("Ligação");

            if (atividadeTipo != null)
            {
                valorEncontrado = true;
            }

            if (!valorEncontrado)
            {
                retorno.Add(
                    new ValidationError(
                        "Não foi possível cadastrar a solicitação de ligação: nenhuma atividade tipo para o nome Ligação foi retornado"));
                return(retorno);
            }

            var ocorrencia = _servicoOcorrencia.ObterPorId(ocorrenciaId);

            var atividade = new Atividade()
            {
                CriadoPorUserId    = criadoPorUserId,
                CriadoEm           = DateTime.Now,
                StatusAtividadeId  = statusAtividade.Id,
                AtividadeTipoId    = atividadeTipo.Id,
                Titulo             = "Ligação Ativa",
                Descricao          = descricao,
                OcorrenciaId       = ocorrenciaId,
                PessoasFisicasId   = ocorrencia.PessoaFisicaId,
                PessoasJuridicasId = ocorrencia.PessoaJuridicaId
            };

            retorno = Adicionar(atividade);

            if (!retorno.IsValid)
            {
                return(retorno);
            }

            var configuracao = new Configuracao();

            configuracao.SetarListaSolicitacaoLigacaoCorretor();
            var nomeFilaSolicitacaoCorretor = _servicoConfiguracao.ObterPor(configuracao);

            valorEncontrado = false;

            if (nomeFilaSolicitacaoCorretor != null)
            {
                if (nomeFilaSolicitacaoCorretor.Any())
                {
                    valorEncontrado = true;
                }
            }

            if (!valorEncontrado)
            {
                retorno.Add(
                    new ValidationError(
                        "Não foi possível cadastrar a solicitação de ligação: nenhuma lista para tratativa de solicitações Corretor cadastrada."));
                return(retorno);
            }

            retorno = _servicoAtividadeFila.AdicionarAtividadeFila(nomeFilaSolicitacaoCorretor.FirstOrDefault().Valor,
                                                                   atividade.Id);

            return(retorno);
        }