public async Task <bool> Executar(AtribuirFuncionarioSemRfCursoDto atribuirFuncionarioSemRfCurso) { var funcionarioGoogle = await ObterFuncionario(atribuirFuncionarioSemRfCurso.Email); var curso = await ObterCurso(atribuirFuncionarioSemRfCurso.TurmaId, atribuirFuncionarioSemRfCurso.ComponenteCurricularId); if (curso is null) { throw new NegocioException("Curso ainda não inserido no Google Classroom"); } var existe = await mediator.Send(new ExisteFuncionarioCursoGoogleQuery(funcionarioGoogle.Indice, curso.Id)); if (existe) { throw new NegocioException("Curso já associado para o funcionário"); } try { await InserirFuncionarioCursoGoogleAsync(funcionarioGoogle, curso); return(true); } catch (Exception ex) { await IncluirCursoDoFuncionarioComErroAsync(atribuirFuncionarioSemRfCurso.Email, atribuirFuncionarioSemRfCurso.TurmaId, atribuirFuncionarioSemRfCurso.ComponenteCurricularId, $"ex.: {ex.Message}"); throw; } }
public async Task <IActionResult> EnviarRequisicaoAtribuirFuncionarioCursoSemRf([FromBody] AtribuirFuncionarioSemRfCursoDto atribuirFuncionarioSemRfCurso, [FromServices] IEnviarRequisicaoAtribuirFuncionarioSemRfCursoUseCase atribuirFuncionarioSemRfCursoUseCase) { var retorno = await atribuirFuncionarioSemRfCursoUseCase.Executar(atribuirFuncionarioSemRfCurso); return(Ok(retorno)); }