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;
 }
示例#3
0
        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));
        }
示例#5
0
 public async Task <IActionResult> Salvar([FromBody] SalvarAnotacaoFrequenciaAlunoDto dto, [FromServices] ISalvarAnotacaoFrequenciaAlunoUseCase useCase)
 {
     return(Ok(await useCase.Executar(dto)));
 }