public async Task <bool> Executar(MensagemRabbit mensagemRabbit) { var filtro = mensagemRabbit.Mensagem.ToString() != null?mensagemRabbit.ObterObjetoMensagem <FiltroCargaInicialDto>() : null; var ultimaAtualizacao = await mediator.Send(new ObterDataUltimaExecucaoPorTipoQuery(ExecucaoTipo.AtribuicaoProfessorCursoAdicionar)); var paginacao = new Paginacao(0, 0); var parametrosCargaInicialDto = filtro != null ? new ParametrosCargaInicialDto(filtro.TiposUes, filtro.Ues, filtro.Turmas, DateTime.Today.Year) : await mediator.Send(new ObterParametrosCargaIncialPorAnoQuery(DateTime.Today.Year)); var atribuicoesDeCursosProfessores = await mediator.Send(new ObterAtribuicoesDeCursosDosProfessoresQuery(ultimaAtualizacao, paginacao, parametrosCargaInicialDto)); foreach (var atribuicaoDeCursoDoProfessor in atribuicoesDeCursosProfessores.Items) { var cursoDoProfessorParaIncluir = new ProfessorCursoEol(atribuicaoDeCursoDoProfessor.Rf, atribuicaoDeCursoDoProfessor.TurmaId, atribuicaoDeCursoDoProfessor.ComponenteCurricularId, atribuicaoDeCursoDoProfessor.Modalidade); try { var publicarProfessor = await mediator.Send(new PublicaFilaRabbitCommand(RotasRabbit.FilaProfessorCursoIncluir, RotasRabbit.FilaProfessorCursoIncluir, cursoDoProfessorParaIncluir)); if (!publicarProfessor) { await IncluirCursoDoProfessorComErroAsync(cursoDoProfessorParaIncluir, ObterMensagemDeErro(cursoDoProfessorParaIncluir)); } } catch (Exception ex) { await IncluirCursoDoProfessorComErroAsync(cursoDoProfessorParaIncluir, ObterMensagemDeErro(cursoDoProfessorParaIncluir, ex)); } } await mediator.Send(new AtualizaExecucaoControleCommand(ExecucaoTipo.AtribuicaoProfessorCursoAdicionar, DateTime.Today)); return(true); }
private async Task Valida_Tratamento_De_Professor_Ja_Incluso_No_Curso_Deve_Retornar_True() { // Arrange var professorCurso = new ProfessorCursoEol(1234567, 1010, 6); var professorGoogle = new ProfessorGoogle(1234567, "José da Silva", "*****@*****.**", string.Empty); var cursoGoogle = new CursoGoogle("Curso Google", "Seção", 1010, 6, "*****@*****.**"); mediator.Setup(a => a.Send(It.IsAny <ObterProfessoresPorRfsQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new List <ProfessorGoogle> { professorGoogle }); mediator.Setup(a => a.Send(It.IsAny <ObterCursoPorTurmaComponenteCurricularQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(cursoGoogle); mediator.Setup(a => a.Send(It.IsAny <ExisteProfessorCursoGoogleQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(true); var professorCursoJson = JsonConvert.SerializeObject(professorCurso); var mensagem = new MensagemRabbit(professorCursoJson); // Act var retorno = await inserirProfessorCursoGoogleUseCase.Executar(mensagem); // Assert Assert.True(retorno); }
private async Task Valida_Tratamento_De_Excecoes_Ao_Comunicar_Com_Google_Deve_Devolver_A_Excecao_Disparada() { // Arrange var professorCurso = new ProfessorCursoEol(1234567, 1010, 6); var professorGoogle = new ProfessorGoogle(1234567, "José da Silva", "*****@*****.**", string.Empty); var cursoGoogle = new CursoGoogle("Curso Google", "Seção", 1010, 6, "*****@*****.**"); mediator.Setup(a => a.Send(It.IsAny <ObterProfessoresPorRfsQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new List <ProfessorGoogle> { professorGoogle }); mediator.Setup(a => a.Send(It.IsAny <ObterCursoPorTurmaComponenteCurricularQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(cursoGoogle); mediator.Setup(a => a.Send(It.IsAny <ExisteProfessorCursoGoogleQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(false); var excecao = new NullReferenceException("Erro ao se comunicar Google Classroom."); mediator.Setup(a => a.Send(It.IsAny <InserirProfessorCursoGoogleCommand>(), It.IsAny <CancellationToken>())) .Throws(excecao); mediator.Setup(a => a.Send(It.IsAny <IncluirCursoUsuarioCommand>(), It.IsAny <CancellationToken>())) .ReturnsAsync(10); var professorCursoJson = JsonConvert.SerializeObject(professorCurso); var mensagem = new MensagemRabbit(professorCursoJson); // Assert await Assert.ThrowsAsync <NullReferenceException>(() => inserirProfessorCursoGoogleUseCase.Executar(mensagem)); }
private static string ObterMensagemDeErro(ProfessorCursoEol cursoDoprofessorParaIncluirGoogle, Exception ex = null) { var mensagem = $"Não foi possível inserir o curso [TurmaId:{cursoDoprofessorParaIncluirGoogle.TurmaId}, ComponenteCurricularId:{cursoDoprofessorParaIncluirGoogle.ComponenteCurricularId}] professor RF{cursoDoprofessorParaIncluirGoogle.Rf} na fila para inclusão no Google Classroom."; if (ex is null) { return(mensagem); } return($"{mensagem}. {ex.InnerException?.Message ?? ex.Message}. {ex.StackTrace}"); }
private async Task IncluirCursoDoProfessorComErroAsync(ProfessorCursoEol cursoDoprofessorParaIncluirGoogle, string mensagem) { var command = new IncluirCursoUsuarioErroCommand( cursoDoprofessorParaIncluirGoogle.Rf, cursoDoprofessorParaIncluirGoogle.TurmaId, cursoDoprofessorParaIncluirGoogle.ComponenteCurricularId, ExecucaoTipo.ProfessorCursoAdicionar, ErroTipo.Negocio, mensagem); await mediator.Send(command); }
public async Task <bool> Executar(AtribuirProfessorCursoDto atribuirProfessorCursoDto) { var professorCursoEol = new ProfessorCursoEol(atribuirProfessorCursoDto.Rf, atribuirProfessorCursoDto.TurmaId, atribuirProfessorCursoDto.ComponenteCurricularId); var publicarProfessorCurso = await mediator.Send(new PublicaFilaRabbitCommand(RotasRabbit.FilaProfessorCursoIncluir, RotasRabbit.FilaProfessorCursoIncluir, professorCursoEol)); if (!publicarProfessorCurso) { throw new NegocioException("Não foi possível realizar a requisição para atribuir o professor ao curso."); } return(publicarProfessorCurso); }
private async Task Valida_Tratamento_De_Professor_Nao_Incluso_Deve_Retornar_False() { // Arrange var professorCurso = new ProfessorCursoEol(1234567, 1010, 6); mediator.Setup(a => a.Send(It.IsAny <ObterProfessoresPorRfsQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new List <ProfessorGoogle>()); var professorCursoJson = JsonConvert.SerializeObject(professorCurso); var mensagem = new MensagemRabbit(professorCursoJson); // Act var retorno = await inserirProfessorCursoGoogleUseCase.Executar(mensagem); // Assert Assert.False(retorno); }
private async Task AtribuirProfessorComoDonoDoCurso(ProfessorCursoEol professorCursoEolParaIncluir, IEnumerable <ProfessorGoogle> professor, CursoGoogle curso) { var usuarioAtual = await mediator.Send(new ObterUsuarioPorEmailQuery(curso.Email)); var ehGestor = DonoDoCursoEhGestor(usuarioAtual); if (professorCursoEolParaIncluir.Modalidade != 0 && professorCursoEolParaIncluir.Modalidade != 1 && ehGestor) { var retornoGoogle = await mediator.Send(new AtribuirDonoCursoGoogleCommand(curso.Id, professor.First().GoogleClassroomId)); if (retornoGoogle) { curso.Email = professor.First().Email; await mediator.Send(new AlterarCursoCommand(curso)); } } }