public AtendimentoFormViewModel Novo(AtendimentoFormViewModel model)
        {
            switch (model.CanalId)
            {
            case (int)CanalValueObjects.Telefone:
                model.NomeCanal           = "Telefone";
                model.AtendimentoTelefone = true;
                break;

            case (int)CanalValueObjects.Email:
                model.NomeCanal        = "E-mail";
                model.AtendimentoEmail = true;
                break;

            case (int)CanalValueObjects.Chat:
                model.NomeCanal       = "Chat";
                model.AtendimentoChat = true;
                break;

            default:
                model.ValidationResult.Add(new ValidationError("Canal informado inválido!"));
                return(model);
            }

            var atendimento = _atendimento.AdicionarNovoAtendimento(model.CanalId, model.UsuarioId, model.MidiaId);

            if (!atendimento.ValidationResult.IsValid)
            {
                model.ValidationResult = atendimento.ValidationResult;
                return(model);
            }

            model.ListaStatus   = _statusAtividadeServico.ObterPor(model.CanalId, model.Sentido ?? "E", null).ToList();
            model.Midias        = new SelectList(_midiaServico.ObterPor(null, model.CanalId), "id", "nome");
            model.Procotolo     = atendimento.Protocolo;
            model.AtendimentoId = atendimento.Id;
            if (atendimento.CanalOrigemId.HasValue)
            {
                model.CanalId = (int)(atendimento.CanalOrigemId);
            }
            model.MidiaId = atendimento.MidiasId;

            return(model);
        }
Beispiel #2
0
        public AtendimentoFormViewModel CarregarChat(long?chatId, long?atividadeId)
        {
            Chat chat = null;

            if (!chatId.HasValue)
            {
                if (atividadeId.HasValue)
                {
                    chat = _chatServico.ObterPorAtividadeId((long)atividadeId);

                    if (chat != null)
                    {
                        chatId = chat.Id;
                    }
                }
            }

            var model = new AtendimentoFormViewModel
            {
                CanalId         = (int)CanalValueObjects.Chat,
                NomeCanal       = "Chat",
                ChatId          = chatId,
                AtendimentoChat = true
            };

            if (chat == null)
            {
                chat = _chatServico.ObterPorId((long)chatId);
            }

            if (chat == null)
            {
                model.ValidationResult.Add(new ValidationError("Nenhum Chat encontrado com o Id Informado"));
                return(model);
            }

            var atividade = _atividadeServico.ObterPorId(chat.AtividadeId);

            if (atividade == null)
            {
                model.ValidationResult.Add(
                    new ValidationError("Nenhuma Atividade encontrado com o Id: " + chat.AtividadeId));
                return(model);
            }


            var statusAtividade = _statusAtividadeServico.ObterPorId(atividade.StatusAtividadeId);


            var atendimento = _atendimentoServico.ObterPorId(atividade.AtendimentoId.Value);

            if (atendimento == null)
            {
                model.ValidationResult.Add(
                    new ValidationError("Nenhum Atendimento encontrado com o Id: " + atividade.AtendimentoId));
                return(model);
            }

            var chatSolicitacao = _chatSolicitacaoServico.ObterPorId(chat.ChatSolicitacaoId);

            if (chatSolicitacao != null)
            {
                model.Documento = chatSolicitacao.Documento;
            }

            model.ListaStatus           = _statusAtividadeServico.ObterPor(model.CanalId, model.Sentido ?? "E", null).ToList();
            model.Midias                = new SelectList(_midiaServico.ObterPor(null, model.CanalId), "id", "nome");
            model.Procotolo             = atendimento.Protocolo;
            model.AtendimentoId         = atendimento.Id;
            model.AtividadeId           = atividade.Id;
            model.MidiaId               = atendimento.MidiasId;
            model.PessoaFisicaId        = atividade.PessoasFisicasId;
            model.PessoaJuridicaId      = atividade.PessoasJuridicasId;
            model.AtendimentoFinalizado = atividade.FinalizadoEm.HasValue;
            model.Status                = statusAtividade != null ? statusAtividade.Descricao : null;
            return(model);
        }
        //protected ICollection<StatusAtividade> ObterStatusAtividades(int canal, string sentido)
        //{
        //    var listaStatus = new List<StatusAtividade>();

        //    if (string.IsNullOrEmpty(sentido))
        //        sentido = "s"; //return listaStatus;

        //    sentido = sentido.ToLower();

        //    switch (canal)
        //    {
        //        case (int) CanalValueObjects.Telefone:

        //            listaStatus = sentido == "s"
        //                ? _statusAtividadeServico.ObterStatusAtividadeLigacaoAtiva().ToList()
        //                : _statusAtividadeServico.ObterStatusAtividadeLigacaoReceptiva().ToList();

        //            break;
        //        case (int) CanalValueObjects.Email:

        //            listaStatus = sentido == "s"
        //                ? _statusAtividadeServico.ObterStatusAtividadeEmail().ToList()
        //                : _statusAtividadeServico.ObterStatusAtividadeEmailRecebido().ToList();
        //            break;
        //        case (int) CanalValueObjects.Chat:
        //            // Vai ser preciso implementar o Chat
        //            break;
        //    }

        //    return listaStatus;
        //}

        public AtendimentoFormViewModel Atualizar(AtendimentoFormViewModel model)
        {
            switch (model.CanalId)
            {
            case (int)CanalValueObjects.Telefone:

                break;

            case (int)CanalValueObjects.Email:

                model.Email.Sentido   = model.Sentido;
                model.Email.UsuarioId = model.UsuarioId;
                model.Email.StatusId  = model.StatusId;
                model.Email           = TratarEmail(model.Email);

                if (!model.Email.ValidationResult.IsValid)
                {
                    model.ValidationResult = model.Email.ValidationResult;
                }

                model.AtividadeId = model.Email.AtividadeId;

                break;

            case (int)CanalValueObjects.Chat:

                break;

            default:
                model.ValidationResult.Add(new ValidationError("Canal informado inválido!"));
                return(model);
            }

            if (!model.ValidationResult.IsValid)
            {
                return(model);
            }

            var statusAtendimentos = _statusAtividadeServico.ObterPorId((int)model.StatusId);

            //Somente atualiza os dados de Atendimento
            if (!model.AtendimentoId.HasValue)
            {
                return(model);
            }

            var atendimento = _atendimento.ObterPorId((long)model.AtendimentoId);

            atendimento.MidiasId      = model.MidiaId;
            atendimento.CanalOrigemId = model.CanalId = model.CanalId;

            if (statusAtendimentos.FinalizaAtendimento)
            {
                atendimento.FinalizadoEm        = DateTime.Now;
                atendimento.FinalizadoPorUserId = model.UsuarioId;
            }

            if (atendimento.IsValid())
            {
                _atendimento.Atualizar(atendimento);
            }

            return(model);
        }