public async Task <IActionResult> DeleteTaskAsync([Required] Guid disciplineId, [FromServices] ILessonBusiness lessonBusiness) { if (ModelState.IsValid) { if (!(await _disciplineBusiness.FindByDisciplineIdTaskAsync(disciplineId) is DisciplineVO discipline)) { return(NotFound("Não existe uma disciplina com esse Id")); } if (!(await _courseBusiness.FindByCourseIdTaskAsync(discipline.CourseId) is CourseVO course)) { return(NotFound("Não existe nenhum curso com o coordenador informado")); } if (course.CoordinatorId != Guid.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized("Você não tem autorizaçao para remover uma disciplina de outro curso!")); } if (await lessonBusiness.ExistsByDisciplineIdTaskAsync(disciplineId)) { return(BadRequest("Não é possivel excluir a disciplina, pois existem aulas utilizando-a!")); } if (await _studentBusiness.ExistsStudentWithDisciplineTaskAsync(disciplineId)) { return(BadRequest("Não é possivel excluir a disciplina, pois existem alunos utilizando-a!")); } await _disciplineBusiness.DeleteTaskAsync(discipline.DisciplineId); return(NoContent()); } return(BadRequest()); }