Exemple #1
0
        protected void CarregarAtividadeEmail(AtividadeNewViewModel model, Atividade atividade, string userId)
        {
            var email = _emailServico.ObterEmailCompletoPor(null, atividade.Id);

            if (email == null)
            {
                return;
            }

            var envolvidos = _atividadeParteEnvolvidaServico.ObterPorAtividadeId(atividade.Id);

            model.Email = new EmailViewModel(email.AtividadeId, email.Id, email.CorpoDoEmail, email.Texto,
                                             email.Assunto, email.CriadoEm, email.Atividade.CriadoEm, envolvidos, email.Sentido);

            if (!string.IsNullOrEmpty(email.Sentido))
            {
                model.listaStatusAtividade = email.Sentido.Trim().ToLower() == "s" ? _statusAtividadeServico.ObterStatusAtividadeEmailEnviado() : _statusAtividadeServico.ObterStatusAtividadeEmailRecebido();
            }

            var canal = _canalServico.ObterPorNome("email");

            if (canal != null)
            {
                model.listaMidia = new SelectList(_midiaServico.ObterPor(null, canal.FirstOrDefault().Id), "id",
                                                  "nome");
            }

            if (email.Atividade.AtendimentoId != null)
            {
                return;
            }

            var atendimento = new Atendimento(userId, _atendimentoServico.GerarNumeroProtocolo(DateTime.Now),
                                              canal != null ? canal.FirstOrDefault().Id : (int?)null, null);

            _atendimentoServico.Adicionar(atendimento);
            atividade.Atendimento = atendimento;

            atividade.AtendimentoId = atendimento.Id;
            model.atendimentoID     = atendimento.Id;
            _atividadeServico.Atualizar(atividade);

            var atendimentoAtividade = new AtendimentoAtividade(atividade.Id, atendimento.Id);

            _atendimentoAtividadeServico.Adicionar(atendimentoAtividade);
        }
        public Atividade AdicionarAtividadeChat(string usuarioId, long?atendimentoId,
                                                IEnumerable <AtividadeParteEnvolvida> envolvidos, int?statusAtividadeId)
        {
            var atividade = new Atividade();

            if (string.IsNullOrEmpty(usuarioId))
            {
                var usuarioAdm = _servicoUsuario.ObterPorEmail("*****@*****.**");
                if (usuarioAdm != null)
                {
                    usuarioId = usuarioAdm.Id;
                }
                else
                {
                    atividade.ValidationResult.Add(
                        new ValidationError(
                            "Não foi informado o usuario (Criado Por) e também não possui usuario padrão cadastrado ([email protected])"));
                    return(atividade);
                }
            }

            var atividadeTipo = _servicoAtividadeTipo.BuscarPorNome("Chat");

            if (atividadeTipo == null)
            {
                atividade.ValidationResult.Add(new ValidationError("AtividadaTipo com nome (Chat) não cadastrada"));
                return(atividade);
            }

            if (!statusAtividadeId.HasValue)
            {
                var statusAtividadePadraoChat = _servicoStatusAtividade.ObterStatusAtividadePadraoParaChatPadrao();

                if (statusAtividadePadraoChat == null)
                {
                    atividade.ValidationResult.Add(
                        new ValidationError("StatusAtividade Padrão para Chat não cadastrada."));
                    return(atividade);
                }

                statusAtividadeId = statusAtividadePadraoChat.Id;
            }

            int?canalId = null;
            var canal   = _canalServico.ObterCanalChat();

            if (canal.ValidationResult.IsValid)
            {
                canalId = canal.Id;
            }

            atividade = new Atividade(usuarioId, statusAtividadeId.Value, atividadeTipo.Id, "Chat",
                                      null, null, null, null, null, atendimentoId, null, envolvidos, usuarioId, null,
                                      null, canalId, usuarioId);

            _repositorio.Adicionar(atividade);

            _servicoAtividadeFila.AdicionarAtividadeFila("chat",
                                                         atividade.Id);

            if (envolvidos.Any())
            {
                foreach (var envolvido in atividade.Envolvidos)
                {
                    envolvido.SetarAtividadeId(atividade.Id);
                    _servicoAtividadeParteEnvolvida.Adicionar(envolvido);
                }
            }

            if (atividade.Id <= 0 || !atividade.AtendimentoId.HasValue)
            {
                return(atividade);
            }
            if (!(atividade.AtendimentoId > 0))
            {
                return(atividade);
            }

            var atendimentoAtividade = new AtendimentoAtividade(atividade.Id, (long)atividade.AtendimentoId);

            _atendimentoAtividadeServico.Adicionar(atendimentoAtividade);

            return(atividade);
        }
        public Atividade NovaAtividadeLigacao(string criadoPorId, string reponsavelPorId, int?statusAtividade,
                                              long?atendimentoId, DateTime?previsaoDeExecucao, string titulo, string descricao, long?pessoaFisicaId,
                                              long?pessoaJuridicaId, string iniciadoPorUserId)
        {
            var atividade = new Atividade();

            if (string.IsNullOrEmpty(criadoPorId))
            {
                var usuarioAdm = _servicoUsuario.ObterPorEmail("*****@*****.**");
                if (usuarioAdm != null)
                {
                    criadoPorId = usuarioAdm.Id;
                }
                else
                {
                    atividade.ValidationResult.Add(
                        new ValidationError(
                            "Não foi informado o usuario (Criado Por) e também não possui usuario padrão cadastrado ([email protected])"));
                    return(atividade);
                }
            }

            /// Foi alterado esse trecho, pois o valor de atividadeTipo é Fixo, e estamos buscando performance nesse momento- 17/01/2019 Thiago H. Din
            //var atividadeTipo = _servicoAtividadeTipo.BuscarPorNome("Ligação");
            //if (atividadeTipo == null)
            //{
            //    atividade.ValidationResult.Add(new ValidationError("AtividadaTipo com nome (Ligação) não cadastrada"));
            //    return atividade;
            //}

            var atividadeTipoId = Convert.ToInt32(AtividadeTipoEnum.Ligacao);

            if (!statusAtividade.HasValue)
            {
                var statusAtividadePadraoLigacao = _servicoStatusAtividade.ObterStatusAtividadePadraoParaLigacao();

                if (statusAtividadePadraoLigacao == null)
                {
                    atividade.ValidationResult.Add(
                        new ValidationError("StatusAtividade Padrão para Ligação não cadastrada."));
                    return(atividade);
                }

                statusAtividade = statusAtividadePadraoLigacao.Id;
            }

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

            var canalId = Convert.ToInt32(CanalEnum.Telefone);

            atividade = new Atividade(criadoPorId, statusAtividade.Value, atividadeTipoId, "Ligação Receptiva",
                                      pessoaFisicaId, pessoaJuridicaId, null, null, null, atendimentoId, null, null, criadoPorId, null,
                                      previsaoDeExecucao, canalId, iniciadoPorUserId);

            _repositorio.Adicionar(atividade);

            if (atividade.Id <= 0 || !atividade.AtendimentoId.HasValue)
            {
                return(atividade);
            }
            if (!(atividade.AtendimentoId > 0))
            {
                return(atividade);
            }

            var atendimentoAtividade = new AtendimentoAtividade(atividade.Id, (long)atividade.AtendimentoId);

            _atendimentoAtividadeServico.Adicionar(atendimentoAtividade);

            return(atividade);
        }