示例#1
0
        public AtividadeNewViewModel Editar(long id, string userId, bool linkFila)
        {
            if (linkFila) //Limpando Atividade da Fila atual
            {
                _atividadeServico.AtualizarDadosAtividadeEAtividadeFila(userId, id);
            }

            var model     = new AtividadeNewViewModel();
            var atividade = _atividadeServico.ObterPorIdDal(id);

            if (atividade != null)
            {
                if (atividade.AtividadeTipoId == 3)
                {
                    var clienteTratativa = _atividadeParteEnvolvidaServico.BuscarUltimoClienteTratativa(atividade.Id);
                    if (clienteTratativa != null)
                    {
                        atividade.PessoasFisicasId   = clienteTratativa.PessoasFisicasId;
                        atividade.PessoasJuridicasId = clienteTratativa.PessoasJuridicasId;
                    }
                    else
                    {
                        atividade.PessoasFisicasId   = null;
                        atividade.PessoasJuridicasId = null;
                    }
                }

                model = Carregar(atividade.CriadoPorUserId, atividade.PessoasFisicasId, atividade.PessoasJuridicasId,
                                 atividade.PotenciaisClientesId, atividade.OcorrenciaId);

                var clienteContato = _atividadeParteEnvolvidaServico.BuscarClienteContato(atividade.Id);
                if (clienteContato != null)
                {
                    if (clienteContato.PessoasFisicasId.HasValue)
                    {
                        model.ContatoPessoaFisicaId = (long)clienteContato.PessoasFisicasId;
                    }
                    else if (clienteContato.PessoasJuridicasId.HasValue)
                    {
                        model.ContatoPessoaJuridicaId = (long)clienteContato.PessoasJuridicasId;
                    }
                }

                model.id                  = atividade.Id;
                model.atendimentoID       = atividade.AtendimentoId;
                model.atividadeFinalizada = atividade.FinalizadoEm != null;
                model.atividadeTipoID     = (int)atividade.AtividadeTipoId;
                model.contratoID          = atividade.ContratoId;
                model.criadoEm            = atividade.CriadoEm;
                model.descricao           = atividade.Descricao;
                model.midiaID             = atividade.MidiasId;
                model.previsaoDeExecucao  = atividade.PrevisaoDeExecucao;
                model.statusAtividadeID   = atividade.StatusAtividadeId;
                model.titulo              = atividade.Titulo;
                model.UsuarioId           = atividade.UsuarioId;
                model.finalizadoEm        = atividade.FinalizadoEm;

                CarregarAtividadeLigacao(model, atividade.Id);
                CarregarAtividadeTarefa(model, atividade.Id);
                CarregarAtividadeEmail(model, atividade, userId);
                CarregarAtividadeChat(model, atividade, userId);

                if (model.Ligacao.sentido.ToLower().Contains("ativa"))
                {
                    model.listaStatusAtividade = _statusAtividadeServico.ObterStatusAtividadeLigacaoAtiva();
                }

                var listaAtividadesFilas =
                    _atividadeFilaServico.ObterPorAtividadeId(atividade.Id).Where(c => c.SaiuDaFilaEm == null);
                if (listaAtividadesFilas.Any())
                {
                    model.filaID = listaAtividadesFilas.OrderByDescending(c => c.EntrouNaFilaEm).FirstOrDefault().FilaId;
                }

                if (atividade.AtendimentoId != null)
                {
                    var atendimento = _atendimentoServico.ObterPorId((long)atividade.AtendimentoId);
                    if (atendimento != null)
                    {
                        model.protocolo = atendimento.Protocolo;

                        if (atendimento.MidiasId.HasValue && atendimento.MidiasId != 0)
                        {
                            var midia = _midiaServico.ObterPorId((int)atendimento.MidiasId);
                            if (midia != null)
                            {
                                model.midia   = midia.Nome;
                                model.midiaID = (int)midia.Id;
                            }
                        }
                    }
                }

                if (atividade.MidiasId != null && !model.midiaID.HasValue)
                {
                    var midia = _midiaServico.ObterPorId((int)atividade.MidiasId);
                    if (midia != null)
                    {
                        model.midia = midia.Nome;
                    }
                }

                if (atividade.OcorrenciaId != null)
                {
                    var ocorrencia = _ocorrenciaServico.ObterPorId((long)atividade.OcorrenciaId);
                    if (ocorrencia != null)
                    {
                        if (!model.pessoaFisicaID.HasValue)
                        {
                            model.pessoaFisicaID = ocorrencia.PessoaFisicaId;
                        }

                        if (!model.pessoaJuridicaID.HasValue)
                        {
                            model.pessoaJuridicaID = ocorrencia.PessoaJuridicaId;
                        }

                        var ocorrenciaTipo = _ocorrenciaTipoServico.ObterPorId(ocorrencia.OcorrenciasTiposId);
                        if (ocorrenciaTipo != null)
                        {
                            model.referente = ocorrenciaTipo.NomeExibicao;
                        }
                    }
                }

                var statusAtividade = _statusAtividadeServico.ObterPorId(atividade.StatusAtividadeId);
                if (statusAtividade != null)
                {
                    model.nomeStatusAtividade = statusAtividade.Descricao;
                    model.atividadeFinalizada = statusAtividade.FinalizaAtividade;
                }

                var criadoPor = _usuarioServico.ObterPorUserId(atividade.CriadoPorUserId);
                if (criadoPor != null)
                {
                    model.criadoPor = criadoPor.Nome.ToUpper();
                }

                var responsavel =
                    _usuarioServico.ObterPorUserId(string.IsNullOrEmpty(atividade.ResponsavelPorUserId)
                        ? atividade.CriadoPorUserId
                        : atividade.ResponsavelPorUserId);
                if (responsavel != null)
                {
                    model.responsavel = responsavel.Nome.ToUpper();
                }

                model.podeEditar = string.IsNullOrEmpty(atividade.ResponsavelPorUserId)
                    ? atividade.CriadoPorUserId == userId
                    : atividade.ResponsavelPorUserId == userId;


                if (!string.IsNullOrEmpty(atividade.FinalizadoPorUserId))
                {
                    var usuarioFinalizador = _usuarioServico.ObterPorUserId(atividade.FinalizadoPorUserId);
                    if (usuarioFinalizador != null)
                    {
                        model.UsuarioFinalizador = usuarioFinalizador.Nome;
                    }
                }
            }
            else
            {
                model.ValidationResult.Add(
                    new DomainValidation.Validation.ValidationError(
                        "Não foram encontradas atividades para o ID informado."));
            }

            return(model);
        }