Esempio n. 1
0
        protected void CarregarAtividadeChat(AtividadeNewViewModel model, Atividade atividade, string userId)
        {
            var where = new PredicateGroup {
                Operator = GroupOperator.And, Predicates = new List <IPredicate>()
            };
            where.Predicates.Add(Predicates.Field <Chat>(f => f.AtividadeId, Operator.Eq, atividade.Id));
            var chatAtividade = _chatServico.ObterPor(where);

            if (!chatAtividade.Any())
            {
                return;
            }

            var chat = _chatServico.ObterPorId(chatAtividade.FirstOrDefault().Id);

            if (chat.Id <= 0)
            {
                return;
            }
            model.Chat = new ChatViewModel(atividade.Id, chat.Id, atividade.AtendimentoId,
                                           atividade.PessoasJuridicasId, atividade.PessoasFisicasId, atividade.StatusAtividadeId);
            model.listaStatusAtividade = _statusAtividadeServico.ObterStatusAtividadeChat();

            if (atividade.AtendimentoId != null)
            {
                return;
            }
            var canal       = _canalServico.ObterPorNome("CHAT");
            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);
        }
Esempio n. 2
0
        public ChatViewModel AdicionarAtendimento(string userId, string k)
        {
            var viewModel       = new ChatViewModel();
            var statusAtividade = _statusAtividadeServico.ObterStatusAtividadeChat();
            var tipoAtividade   = _atividadeTipoServico.BuscarPorNome("Chat");
            var canal           = _canalServico.ObterPorNome("chat");
            var atividade       = new Atividade();

            if (!string.IsNullOrEmpty(k))
            {
                atividade = _atividadeServico.ObterPorId(Convert.ToInt64(k));
            }

            if (atividade.AtendimentoId != null)
            {
                var retornoAtendimento = _atendimentoServico.ObterPorId(atividade.AtendimentoId.Value);
                retornoAtendimento.CanalOrigemId = 4;
                _atendimentoServico.Atualizar(retornoAtendimento);
                if (statusAtividade.Any() && tipoAtividade != null)
                {
                    if (atividade.Id > 0)
                    {
                        atividade.AtendimentoId = retornoAtendimento.Id;
                        _atividadeServico.Atualizar(atividade);
                    }

                    IEnumerable <Cliente> listaCliente = new List <Cliente>();

                    if (atividade.PessoasJuridicasId.HasValue)
                    {
                        var pj = _pessoaJuridicaServico.ObterPorId(atividade.PessoasJuridicasId.Value);
                        if (pj != null)
                        {
                            atividade.PessoasJuridicasId = pj.Id;
                            _atividadeServico.Atualizar(atividade);
                            listaCliente = _clienteServico.ObterSugestoes(pj.NomeFantasia, pj.Cnpj, null, null);
                            viewModel.Popular(statusAtividade, retornoAtendimento.Protocolo, listaCliente,
                                              retornoAtendimento.Id, null,
                                              atividade.PessoasJuridicasId.Value, pj.NomeFantasia);
                        }
                    }

                    if (atividade.PessoasFisicasId.HasValue)
                    {
                        var pf = _pessoaFisicaServico.ObterPorId(atividade.PessoasFisicasId.Value);
                        if (pf != null)
                        {
                            atividade.PessoasFisicasId = pf.Id;
                            _atividadeServico.Atualizar(atividade);
                            listaCliente = _clienteServico.ObterSugestoes(pf.Nome, pf.Cpf, null, null);
                            viewModel.Popular(statusAtividade, retornoAtendimento.Protocolo, listaCliente,
                                              retornoAtendimento.Id,
                                              atividade.PessoasFisicasId.Value, null, pf.Nome);
                        }
                    }
                    else
                    {
                        viewModel.Popular(statusAtividade, retornoAtendimento.Protocolo, listaCliente,
                                          retornoAtendimento.Id, null,
                                          null, null);
                    }
                }
                else
                {
                    viewModel.ValidationResult.Add(
                        new ValidationError("Não possui StatusAtividade Cadastrado."));
                }
            }
            else if (statusAtividade.Any() && tipoAtividade != null)
            {
                var atendimento = new Atendimento(userId, _atendimentoServico.GerarNumeroProtocolo(DateTime.Now), null,
                                                  null);
                var firstOrDefault = canal.FirstOrDefault();
                if (firstOrDefault != null)
                {
                    atendimento.CanalOrigemId = firstOrDefault.Id;
                }
                var atendimentoAux = _atendimentoServico.Adicionar(atendimento);
                if (!atendimentoAux.IsValid)
                {
                    return(viewModel);
                }

                if (atividade.Id > 0)
                {
                    atividade.AtendimentoId = atendimento.Id;
                    _atividadeServico.Atualizar(atividade);
                }

                IEnumerable <Cliente> listaCliente = new List <Cliente>();

                if (atividade.PessoasJuridicasId.HasValue)
                {
                    var pj = _pessoaJuridicaServico.ObterPorId(atividade.PessoasJuridicasId.Value);
                    if (pj != null)
                    {
                        atividade.PessoasJuridicasId = pj.Id;
                        _atividadeServico.Atualizar(atividade);
                        listaCliente = _clienteServico.ObterSugestoes(pj.NomeFantasia, pj.Cnpj, null, null);
                        viewModel.Popular(statusAtividade, atendimento.Protocolo, listaCliente, atendimento.Id, null,
                                          atividade.PessoasJuridicasId.Value, pj.NomeFantasia);
                    }
                }

                if (atividade.PessoasFisicasId.HasValue)
                {
                    var pf = _pessoaFisicaServico.ObterPorId(atividade.PessoasFisicasId.Value);
                    if (pf != null)
                    {
                        atividade.PessoasFisicasId = pf.Id;
                        _atividadeServico.Atualizar(atividade);
                        listaCliente = _clienteServico.ObterSugestoes(pf.Nome, pf.Cpf, null, null);
                        viewModel.Popular(statusAtividade, atendimento.Protocolo, listaCliente, atendimento.Id,
                                          atividade.PessoasFisicasId.Value, null, pf.Nome);
                    }
                }
                else
                {
                    viewModel.Popular(statusAtividade, atendimento.Protocolo, listaCliente, atendimento.Id, null,
                                      null, null);
                }
            }
            else
            {
                viewModel.ValidationResult.Add(
                    new ValidationError("Não possui StatusAtividade Cadastrado."));
            }

            return(viewModel);
        }