Example #1
0
        public async Task <List <CartaIntencoesRetornoPersistenciaDto> > Executar(CartaIntencoesPersistenciaDto param)
        {
            List <CartaIntencoesRetornoPersistenciaDto> auditorias = new List <CartaIntencoesRetornoPersistenciaDto>();

            var turmaId = await mediator.Send(new ObterTurmaIdPorCodigoQuery(param.CodigoTurma));

            if (turmaId == 0)
            {
                throw new NegocioException("Não foi possível encontrar a turma.");
            }

            var aberto = await AulaDentroDoPeriodo(mediator, param.CodigoTurma, DateTime.Now);

            if (!aberto)
            {
                throw new NegocioException("Não é possível salvar carta de intenções pois o período não está aberto.");
            }

            AuditoriaDto auditoria = null;

            foreach (CartaIntencoesDto carta in param.Cartas)
            {
                if (carta.Id == 0)
                {
                    auditoria = await mediator.Send(new InserirCartaIntencoesCommand(carta, turmaId, param.ComponenteCurricularId));
                }
                else
                {
                    var existente = await mediator.Send(new ObterCartaIntentocesPorIdQuery(carta.Id));

                    auditoria = await mediator.Send(new AlterarCartaIntencoesCommand(carta, existente, turmaId, param.ComponenteCurricularId));
                }

                auditorias.Add(new CartaIntencoesRetornoPersistenciaDto
                {
                    PeriodoEscolarId = carta.PeriodoEscolarId,
                    Auditoria        = auditoria
                });
            }

            return(auditorias);
        }
Example #2
0
 public async Task <IActionResult> Salvar([FromServices] ICartaIntencoesPersistenciaUseCase useCase, [FromBody] CartaIntencoesPersistenciaDto dto)
 {
     return(Ok(await useCase.Executar(dto)));
 }