public ReceptivoViewModel Carregar(long atividadeId, bool novoClienteTratativa)
        {
            var  model   = new ReceptivoViewModel();
            var  ligacao = _servicoLigacao.BuscarLigacaoCompleta(null, atividadeId);
            long?tratativaPessoaJuriciaId = null;
            long?tratativaPessoaFisicaId  = null;
            var  nomeClienteContato       = string.Empty;

            if (ligacao == null)
            {
                model.ValidationResult.Add(
                    new ValidationError("Nenhuma Atividade retornada com o Id informado: " + atividadeId));
                return(model);
            }

            if (!ligacao.ValidationResult.IsValid)
            {
                foreach (var erro in ligacao.ValidationResult.Erros)
                {
                    model.ValidationResult.Add(erro);
                }
                return(model);
            }

            if (!novoClienteTratativa)
            {
                var clienteTratativa = _servicoAtividadeParteEnvolvida.BuscarUltimoClienteTratativa(atividadeId);
                if (clienteTratativa != null)
                {
                    tratativaPessoaFisicaId  = clienteTratativa.PessoasFisicasId;
                    tratativaPessoaJuriciaId = clienteTratativa.PessoasJuridicasId;
                }
            }

            var statuAtividade = _servicoStatusAtividade.ObterPorId(ligacao.Atividade.StatusAtividadeId);

            var clienteContato = _servicoAtividadeParteEnvolvida.BuscarClienteContato(atividadeId);

            if (clienteContato != null)
            {
                if (clienteContato.PessoasFisicasId.HasValue)
                {
                    var pessoaFisica = _servicoPessoaFisica.ObterPorId((long)clienteContato.PessoasFisicasId);
                    if (pessoaFisica != null)
                    {
                        nomeClienteContato = pessoaFisica.Nome;
                    }
                }
                else if (clienteContato.PessoasJuridicasId.HasValue)
                {
                    var pessoaJuridica = _servicoPessoaJuridica.ObterPorId((long)clienteContato.PessoasJuridicasId);
                    if (pessoaJuridica != null)
                    {
                        nomeClienteContato = pessoaJuridica.RazaoSocial;
                    }
                }
            }

            var canal                = _canalServico.ObterCanalTelefone();
            var listaMidias          = new SelectList(_servicoMidia.ObterPor(null, canal.Id), "id", "nome");
            var listaStatusAtividade = new SelectList(_servicoStatusAtividade.ObterStatusAtividadeLigacaoReceptiva(),
                                                      "id", "descricao");

            return(new ReceptivoViewModel((long)ligacao.Atividade.AtendimentoId, ligacao.Id, ligacao.AtividadeId, ligacao.Documento,
                                          ligacao.NumeroOriginal, ligacao.Atividade.Atendimento.Protocolo, ligacao.Atividade.MidiasId,
                                          ligacao.Atividade.PessoasFisicasId, ligacao.Atividade.PessoasJuridicasId, tratativaPessoaFisicaId,
                                          tratativaPessoaJuriciaId, listaMidias, listaStatusAtividade, nomeClienteContato, false,
                                          statuAtividade.FinalizaAtividade, statuAtividade.Descricao));
        }
        public ReceptivoViewModel NovaLigacaoReceptiva(string userId, string informacaoUra, string numeroTelefone,
                                                       string codLigacao, string terminal)
        {
            var statusUra = false;
            var ligacao   = new Ligacao();

            if (!string.IsNullOrEmpty(numeroTelefone))
            {
                ligacao   = _servicoLigacao.ObterLigacaoReceptivaUra(numeroTelefone);
                statusUra = true;

                if (ligacao.Id > 0)
                {
                    if (ligacao.Atividade != null)
                    {
                        if (ligacao.Atividade.Id > 0)
                        {
                            if (ligacao.Atividade.Atendimento != null)
                            {
                                if (ligacao.Atividade.Atendimento.Id > 0)
                                {
                                    _servicoLigacao.AtualizarLigacaoGeradorProtocoloUra(userId, ligacao.Id,
                                                                                        ligacao.Atividade.Id, ligacao.Atividade.Atendimento.Id);
                                }
                            }
                        }
                    }
                }
            }

            if (ligacao.Id == 0)
            {
                ligacao = _servicoLigacao.AdicionarLigacaoReceptiva(userId, numeroTelefone, null);
            }



            if (ligacao.ValidationResult.IsValid)
            {
                if (!string.IsNullOrEmpty(ligacao.Documento))
                {
                    informacaoUra = ligacao.Documento;
                }

                var canalTelefoneId      = Convert.ToInt32(CanalEnum.Telefone);
                var listaMidias          = new SelectList(_servicoMidia.ObterPor(null, canalTelefoneId), "id", "nome");
                var listaStatusAtividade =
                    new SelectList(_servicoStatusAtividade.ObterStatusAtividadeLigacaoReceptiva(), "id", "descricao");
                if (ligacao.Atividade == null || ligacao.Atividade.AtendimentoId == null)
                {
                    return(null);
                }

                if (ligacao.Atividade.Atendimento != null)
                {
                    return(new ReceptivoViewModel((long)ligacao.Atividade.AtendimentoId, ligacao.Id,
                                                  ligacao.AtividadeId, informacaoUra, numeroTelefone, ligacao.Atividade.Atendimento.Protocolo,
                                                  null, null, null, null, null, listaMidias, listaStatusAtividade, null, statusUra, false, null));
                }
            }
            else
            {
                var retorno = new ReceptivoViewModel {
                    ValidationResult = ligacao.ValidationResult
                };
                return(retorno);
            }
            return(null);
        }