public async Task <IActionResult> Delete(int projectGradeId) { DeleteProjectGradeDto dto = new DeleteProjectGradeDto { Id = projectGradeId }; ServiceResponse <string> response = await _projectGradeService.DeleteProjectGrade(dto); if (response.Success) { return(Ok(response)); } return(NotFound(response)); }
public async Task <ServiceResponse <string> > DeleteProjectGrade(DeleteProjectGradeDto deleteProjectGradeDto) { ServiceResponse <string> response = new ServiceResponse <string>(); User user = await _context.Users .FirstOrDefaultAsync(u => u.Id == GetUserId()); ProjectGrade projectGrade = await _context.ProjectGrades.Include(pg => pg.GradedProjectGroup) .FirstOrDefaultAsync(pg => pg.Id == deleteProjectGradeDto.Id); if (projectGrade == null) { response.Data = "Not allowed"; response.Message = "There is no project grade with this Id"; response.Success = false; return(response); } if (user == null || projectGrade.GradingUserId != user.Id) { response.Data = null; response.Message = "You are not authorized to delete the grade of this group"; response.Success = false; return(response); } var target = Path.Combine(_hostingEnvironment.ContentRootPath, string.Format("{0}/{1}/{2}/{3}/{4}", "StaticFiles/ProjectGradeFiles", projectGrade.GradedProjectGroup.AffiliatedCourseId, projectGrade.GradedProjectGroup.AffiliatedSection, projectGrade.GradedProjectGroupID, user.Id)); var filePath = Directory.GetFiles(target).FirstOrDefault(); projectGrade.FilePath = null; if (filePath != null) { File.Delete(filePath); } projectGrade.HasFile = false; _context.ProjectGrades.Remove(projectGrade); await _context.SaveChangesAsync(); response.Data = "Successful"; response.Message = "Project grade is successfully cancelled"; response.Success = true; return(response); }