public async Task <AuditoriaDto> Executar(SalvarAnotacaoFrequenciaAlunoDto dto) { var aula = await mediator.Send(new ObterAulaPorIdQuery(dto.AulaId)); if (aula == null) { throw new NegocioException("Aula não encontrada."); } var usuarioLogado = await mediator.Send(new ObterUsuarioLogadoQuery()); if (aula.DataAula.Date <= DateTime.Today) { var usuarioPossuiAtribuicaoNaTurmaNaData = await mediator.Send(new ObterUsuarioPossuiPermissaoNaTurmaEDisciplinaQuery(dto.ComponenteCurricularId, aula.TurmaId, aula.DataAula, usuarioLogado)); if (!usuarioPossuiAtribuicaoNaTurmaNaData) { throw new NegocioException("Você não pode fazer alterações ou inclusões nesta turma, componente e data."); } } var aluno = await mediator.Send(new ObterAlunoPorCodigoEolQuery(dto.CodigoAluno, aula.DataAula.Year)); if (aluno == null) { throw new NegocioException($"{(dto.EhInfantil ? "Criança não encontrada" : "Aluno não encontrado")}."); } if (aluno.EstaInativo(aula.DataAula)) { throw new NegocioException($"{(dto.EhInfantil ? "Criança não ativa na turma" : "Aluno não ativo na turma")}."); } return(await mediator.Send(new SalvarAnotacaoFrequenciaAlunoCommand(dto))); }
public SalvarAnotacaoFrequenciaAlunoCommand(SalvarAnotacaoFrequenciaAlunoDto dto) { MotivoAusenciaId = dto.MotivoAusenciaId; AulaId = dto.AulaId; Anotacao = dto.Anotacao; CodigoAluno = dto.CodigoAluno; EhInfantil = dto.EhInfantil; }
public async Task Deve_Salvar_Anotacao_Frequencia_Aluno() { // arrange var dto = new SalvarAnotacaoFrequenciaAlunoDto() { Anotacao = "teste", AulaId = 1771346, CodigoAluno = "6502235", ComponenteCurricularId = 139, EhInfantil = false, MotivoAusenciaId = 1 }; var hoje = DateTime.Today; mediator.Setup(a => a.Send(It.IsAny <ObterAulaPorIdQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new Aula() { DataAula = new DateTime(hoje.Year, hoje.Month, hoje.Day) }); mediator.Setup(a => a.Send(It.IsAny <ObterUsuarioLogadoQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new Usuario()); mediator.Setup(a => a.Send(It.IsAny <ObterAlunoPorCodigoEolQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new AlunoPorTurmaResposta() { CodigoAluno = "123", CodigoSituacaoMatricula = SituacaoMatriculaAluno.Ativo, DataSituacao = hoje }); mediator.Setup(a => a.Send(It.IsAny <ObterUsuarioPossuiPermissaoNaTurmaEDisciplinaQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(true); mediator.Setup(a => a.Send(It.IsAny <SalvarAnotacaoFrequenciaAlunoCommand>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new AuditoriaDto() { Id = 1 }); // act var auditoria = await salvarAnotacaoFrequenciaAlunoUseCase.Executar(dto); // assert mediator.Verify(x => x.Send(It.IsAny <SalvarAnotacaoFrequenciaAlunoCommand>(), It.IsAny <CancellationToken>()), Times.Once); Assert.NotNull(auditoria); Assert.True(auditoria.Id == 1); }
public async void Deve_Salvar_Anotacao_Aluno() { // Arrange & Act fixture._clientApi.DefaultRequestHeaders.Clear(); fixture._clientApi.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", fixture.GerarToken(new Permissao[] { Permissao.PDA_I, Permissao.PDA_A, Permissao.PDA_E })); // TODO ajustar quando o permissionamento estiver pronto var dto = new SalvarAnotacaoFrequenciaAlunoDto() { Anotacao = "teste", AulaId = 1771346, CodigoAluno = "6502235", ComponenteCurricularId = 139, EhInfantil = false, MotivoAusenciaId = 1 }; var jsonParaPost = new StringContent(JsonConvert.SerializeObject(dto), Encoding.UTF8, "application/json"); var result = await fixture._clientApi.PostAsync($"api/v1/anotacoes/alunos/", jsonParaPost); // Assert Assert.True(fixture.ValidarStatusCodeComSucesso(result)); }
public async Task <IActionResult> Salvar([FromBody] SalvarAnotacaoFrequenciaAlunoDto dto, [FromServices] ISalvarAnotacaoFrequenciaAlunoUseCase useCase) { return(Ok(await useCase.Executar(dto))); }