protected void SalvarAtividadeLigacao(AtividadeNewViewModel model, string userId) { if (model.id == null) // Adicionar { if (model.statusAtividadeID == null) { model.statusAtividadeID = _statusAtividadeServico.ObterStatusAtividadePadraoParaLigacao().Id; } int?canalId = null; var canal = _canalServico.ObterCanalTelefone(); if (canal.ValidationResult.IsValid) { canalId = canal.Id; } if (model.atendimentoID == null) { var atendimento = _atendimentoServico.AdicionarNovoAtendimento(canalId, userId, null); if (atendimento.ValidationResult.IsValid) { model.atendimentoID = atendimento.Id; } } var atividade = new Atividade(userId, (int)model.statusAtividadeID, model.atividadeTipoID, model.titulo, model.pessoaFisicaID, model.pessoaJuridicaID, model.potencialClienteID, model.ocorrenciaID, model.descricao, model.atendimentoID, model.midiaID, null, null, null, model.previsaoDeExecucao, canalId, userId) { PrevisaoDeExecucao = model.previsaoDeExecucao }; model.ValidationResult = _atividadeServico.Adicionar(atividade); if (model.ValidationResult.IsValid) { model.id = atividade.Id; var ligacao = new Ligacao(atividade.PessoasFisicasId, atividade.PessoasJuridicasId, atividade.PotenciaisClientesId, userId, model.Ligacao.sentido, atividade.Id, model.Ligacao.telefoneID, null, null, null); model.ValidationResult = _ligacaoServico.Adicionar(ligacao); if (model.ValidationResult.IsValid) { if (model.filaID != null) { ColocarAtividadeFila((int)model.filaID, atividade.Id); } } _servicoAtividadeParteEnvolvidaServico.Adicionar(new AtividadeParteEnvolvida(atividade.Id, atividade.PessoasFisicasId, atividade.PessoasJuridicasId, null, userId, TipoParteEnvolvida.ClienteTratado.Value, null, null)); } } else //Atualizar { var atividade = _atividadeServico.ObterPorId((long)model.id); if (atividade != null && atividade.FinalizadoEm == null) { if (model.statusAtividadeID != null) { var statusAtividade = _statusAtividadeServico.ObterPorId((long)model.statusAtividadeID); if (statusAtividade != null) { if (statusAtividade.FinalizaAtividade) { atividade.FinalizadoEm = DateTime.Now; atividade.FinalizadoPorUserId = userId; } } atividade.StatusAtividadeId = (int)model.statusAtividadeID; } atividade.Descricao = model.descricao; if (model.atendimentoID != null) { atividade.AtendimentoId = (long)model.atendimentoID; } _atividadeServico.Atualizar(atividade); } if (model.dataAgendamento != null) { if (model.statusAtividadeID == null) { model.statusAtividadeID = _statusAtividadeServico.ObterStatusAtividadeLigacaoReceptiva().FirstOrDefault().Id; } var novaAtividade = new Atividade() { PessoasFisicasId = atividade.PessoasFisicasId, PessoasJuridicasId = atividade.PessoasJuridicasId, PotenciaisClientesId = atividade.PotenciaisClientesId, OcorrenciaId = atividade.OcorrenciaId, CriadoPorUserId = userId, ContratoId = atividade.ContratoId, Descricao = model.descricao, MidiasId = atividade.MidiasId, StatusAtividadeId = _statusAtividadeServico.ObterStatusAtividadePadraoParaLigacao().Id, AtividadeTipoId = 3, Titulo = atividade.Titulo, //atendimentoID = model.atendimentoID, PrevisaoDeExecucao = model.dataAgendamento }; if (model.agendamentoPrivado != null) { if ((bool)model.agendamentoPrivado) { novaAtividade.ResponsavelPorUserId = novaAtividade.CriadoPorUserId; } } model.ValidationResult = _atividadeServico.Adicionar(novaAtividade); if (model.ValidationResult.IsValid) { var ligacao = _ligacaoServico.BuscarPorAtividadeId(atividade.Id); model.id = novaAtividade.Id; var novaligacao = new Ligacao(novaAtividade.PessoasFisicasId, novaAtividade.PessoasJuridicasId, novaAtividade.PotenciaisClientesId, userId, "S", novaAtividade.Id, ligacao.TelefoneId, ligacao.NumeroOriginal, null, null); model.ValidationResult = _ligacaoServico.Adicionar(novaligacao); if (model.ValidationResult.IsValid) { var filaID = _atividadeFilaServico.ObterUltimoVinculoPraAtividade(atividade.Id); if (filaID != null) { ColocarAtividadeFila(filaID.FilaId, novaAtividade.Id, novaAtividade.ResponsavelPorUserId); } } } } } }
public ValidationResult AdicionarSolicitacaoLigacaoCorretor(long ocorrenciaId, string criadoPorUserId, string descricao) { var retorno = new ValidationResult(); var statusAtividade = _servicoStatusAtividade.ObterStatusAtividadePadraoParaLigacao(); var valorEncontrado = statusAtividade != null; if (!valorEncontrado) { retorno.Add( new ValidationError( "Não foi possível cadastrar a solicitação de ligação: nenhum status atividade padrão para ligação retornado")); return(retorno); } valorEncontrado = false; var atividadeTipo = _servicoAtividadeTipo.BuscarPorNome("Ligação"); if (atividadeTipo != null) { valorEncontrado = true; } if (!valorEncontrado) { retorno.Add( new ValidationError( "Não foi possível cadastrar a solicitação de ligação: nenhuma atividade tipo para o nome Ligação foi retornado")); return(retorno); } var ocorrencia = _servicoOcorrencia.ObterPorId(ocorrenciaId); var atividade = new Atividade() { CriadoPorUserId = criadoPorUserId, CriadoEm = DateTime.Now, StatusAtividadeId = statusAtividade.Id, AtividadeTipoId = atividadeTipo.Id, Titulo = "Ligação Ativa", Descricao = descricao, OcorrenciaId = ocorrenciaId, PessoasFisicasId = ocorrencia.PessoaFisicaId, PessoasJuridicasId = ocorrencia.PessoaJuridicaId }; retorno = Adicionar(atividade); if (!retorno.IsValid) { return(retorno); } var configuracao = new Configuracao(); configuracao.SetarListaSolicitacaoLigacaoCorretor(); var nomeFilaSolicitacaoCorretor = _servicoConfiguracao.ObterPor(configuracao); valorEncontrado = false; if (nomeFilaSolicitacaoCorretor != null) { if (nomeFilaSolicitacaoCorretor.Any()) { valorEncontrado = true; } } if (!valorEncontrado) { retorno.Add( new ValidationError( "Não foi possível cadastrar a solicitação de ligação: nenhuma lista para tratativa de solicitações Corretor cadastrada.")); return(retorno); } retorno = _servicoAtividadeFila.AdicionarAtividadeFila(nomeFilaSolicitacaoCorretor.FirstOrDefault().Valor, atividade.Id); return(retorno); }