public async Task <RetornoBaseDto> Handle(ExcluirAulaUnicaCommand request, CancellationToken cancellationToken) { var aula = await repositorioAula.ObterPorIdAsync(request.AulaId); if (await mediator.Send(new AulaPossuiAvaliacaoQuery(aula, request.Usuario.CodigoRf))) { throw new NegocioException("Aula com avaliação vinculada. Para excluir esta aula primeiro deverá ser excluída a avaliação."); } await ValidarComponentesDoProfessor(aula.TurmaId, long.Parse(aula.DisciplinaId), aula.DataAula, request.Usuario); unitOfWork.IniciarTransacao(); try { if (aula.WorkflowAprovacaoId.HasValue) { await mediator.Send(new ExcluirWorkflowCommand(aula.WorkflowAprovacaoId.Value)); } await mediator.Send(new ExcluirNotificacoesDaAulaCommand(aula.Id)); await mediator.Send(new ExcluirFrequenciaDaAulaCommand(aula.Id)); await mediator.Send(new ExcluirPlanoAulaDaAulaCommand(aula.Id)); await mediator.Send(new ExcluirAnotacoesFrequencciaDaAulaCommand(aula.Id)); await mediator.Send(new ExcluirDiarioBordoDaAulaCommand(aula.Id)); await mediator.Send(new IncluirFilaExclusaoPendenciasAulaCommand(aula.Id, request.Usuario)); aula.Excluido = true; await repositorioAula.SalvarAsync(aula); unitOfWork.PersistirTransacao(); } catch (Exception) { unitOfWork.Rollback(); throw; } var retorno = new RetornoBaseDto(); retorno.Mensagens.Add("Aula excluída com sucesso."); return(retorno); }
public async Task <Aula> Handle(ObterAulaPorIdQuery request, CancellationToken cancellationToken) => await repositorioAula.ObterPorIdAsync(request.AulaId);