Exemple #1
0
        public AtividadeViewModel SalvarAtendimentoLigacao(AtividadeViewModel view)
        {
            var entidade = _atividadeServico.ObterPorId(view.id);

            entidade.PrevisaoDeExecucao = view.previsaoDeExecucao;
            entidade.Descricao          = view.descricao;
            entidade.Titulo             = view.titulo ?? "";
            _atividadeServico.Atualizar(entidade);
            entidade = _atividadeServico.ObterPorId(view.id);

            if (view.filaID != null)
            {
                _atividadeServico.AtualizarResponsavel(entidade.Id, null, null);
                var listaAtividadeFila =
                    _atividadeFilaServico.ObterPorAtividadeId(entidade.Id).Where(c => c.SaiuDaFilaEm == null);

                foreach (var item in listaAtividadeFila)
                {
                    _atividadeFilaServico.AtualizaSaiuDaFilaEm(item.Id);
                }
                _atividadeFilaServico.Adicionar(new AtividadeFila(entidade.Id, Convert.ToInt32(view.filaID)));
            }


            var ligacao = _ligacaoServico.ObterPorId(view.LigacaoViewModel.id);

            ligacao.PessoaFisicaId   = view.LigacaoViewModel.pessoaFisicaID;
            ligacao.PessoaJuridicaId = view.LigacaoViewModel.pessoaJuridicaID == 0
                ? null
                : view.LigacaoViewModel.pessoaJuridicaID;
            ligacao.TelefoneId = view.LigacaoViewModel.telefoneID;
            ligacao.Sentido    = view.LigacaoViewModel.sentido;

            var retornoLigacao = _ligacaoServico.Atualizar(ligacao);

            return(new AtividadeViewModel(entidade.Id, entidade.AtividadeTipoId, view.LigacaoViewModel.pessoaFisicaID,
                                          view.LigacaoViewModel.pessoaJuridicaID));
        }
        public ValidationResult AtualizarStatusAtividade(long ligacaoId, int statusAtividadeId, long atendimentoId,
                                                         long atividadeId,
                                                         string userId, int midiaId)
        {
            var retorno         = new ValidationResult();
            var statusAtividade = _servicoStatusAtividade.ObterPorId(statusAtividadeId);

            if (!string.IsNullOrEmpty(statusAtividade.EntidadeNecessaria))
            {
                var podeAtualizar = _servicoStatusAtividade.VerificarEntidadeRequeridaAtendimento(atendimentoId,
                                                                                                  statusAtividadeId);

                if (!podeAtualizar)
                {
                    retorno.Add(
                        new ValidationError(
                            string.Format(
                                "Não é possível alterar o status desse atendimento, pois ainda não houve criação e/ou interação de uma: {0}",
                                statusAtividade.EntidadeNecessaria)));
                    return(retorno);
                }
            }

            if (!string.IsNullOrEmpty(statusAtividade.EntidadeNaoNecessaria))
            {
                var podeAtualizar = _servicoStatusAtividade.VerificarEntidadeNaoRequeridaAtendimento(atendimentoId,
                                                                                                     statusAtividadeId);

                if (!podeAtualizar)
                {
                    retorno.Add(
                        new ValidationError(
                            string.Format(
                                "Não é possível alterar o status desse atendimento, pois houve criação e/ou interação de uma: {0}",
                                statusAtividade.EntidadeNaoNecessaria)));
                    return(retorno);
                }
            }


            var ligacao = _servicoLigacao.ObterPorId(ligacaoId);

            if (ligacao == null)
            {
                retorno.Add(
                    new ValidationError(
                        string.Format(
                            "Não foi possível alterar o status desse atendimento, nenhuma Ligação retornada com o Id: {0}",
                            ligacaoId)));
                return(retorno);
            }

            atividadeId = ligacao.AtividadeId;
            var atividade = _servicoAtividade.ObterPorId(atividadeId);

            if (atividade == null)
            {
                retorno.Add(
                    new ValidationError(
                        string.Format(
                            "Não foi possível alterar o status desse atendimento, nenhuma Atividade retornada com o Id: {0}",
                            atividadeId)));
                return(retorno);
            }

            _servicoAtividade.Atualizar(atividade, statusAtividade, userId, midiaId);
            var atendimento = _servicoAtendimento.ObterPorId(atendimentoId);

            if (atendimento != null)
            {
                if (statusAtividade.FinalizaAtendimento)
                {
                    atendimento.FinalizadoEm        = DateTime.Now;
                    atendimento.FinalizadoPorUserId = userId;
                }
                atendimento.MidiasId = midiaId;
                _servicoAtendimento.Atualizar(atendimento);
            }

            ligacao.FinalizadoEm = DateTime.Now;
            _servicoLigacao.Atualizar(ligacao);

            return(retorno);
        }