예제 #1
0
        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());
        }