public async Task <IEnumerable <UsuarioNotificarDiarioBordoObservacaoDto> > Executar(ObterUsuarioNotificarDiarioBordoObservacaoDto dto) { var turma = await mediator.Send(new ObterTurmaPorIdQuery(dto.TurmaId)); if (turma is null) { throw new NegocioException("A turma informada não foi encontrada."); } var professoresTurmaObrigatoriosReceberNotificacao = await mediator.Send(new ObterProfessoresTitularesDaTurmaCompletosQuery(turma.CodigoTurma)); if (!professoresTurmaObrigatoriosReceberNotificacao?.Any() ?? true) { throw new NegocioException("Nenhum professor para a turma informada foi encontrada."); } // Caso um dos professores da turma for o usuário logado e for uma nova observação, ele não deve aparecer na listagem var usuarioLogado = await mediator.Send(new ObterUsuarioLogadoQuery()); if (usuarioLogado != null && dto.ObservacaoId is null && professoresTurmaObrigatoriosReceberNotificacao.Any(x => x.ProfessorRf == usuarioLogado.CodigoRf)) { professoresTurmaObrigatoriosReceberNotificacao = professoresTurmaObrigatoriosReceberNotificacao.Where(x => x.ProfessorRf != usuarioLogado.CodigoRf).ToList(); } return(await mediator.Send(new ObterUsuarioNotificarDiarioBordoObservacaoQuery(turma, professoresTurmaObrigatoriosReceberNotificacao, dto.ObservacaoId))); }
public async Task <IActionResult> ObterUsuariosParaNotificar([FromQuery] ObterUsuarioNotificarDiarioBordoObservacaoDto dto, [FromServices] IObterUsuarioNotificarDiarioBordoObservacaoUseCase obterUsuarioNotificarDiarioBordoObservacaoUseCase) { return(Ok(await obterUsuarioNotificarDiarioBordoObservacaoUseCase.Executar(dto))); }