public async Task <IActionResult> Add(IFormFile file, int gradedProjectGroupId, decimal maxGrade, decimal grade, string comment) { AddProjectGradeDto dto = new AddProjectGradeDto { File = file, GradedProjectGroupID = gradedProjectGroupId, LastEdited = DateTime.Now, MaxGrade = maxGrade, Grade = grade, Comment = comment }; ServiceResponse <AddProjectGradeDto> response = await _projectGradeService.AddProjectGrade(dto); if (response.Success) { return(Ok(response)); } return(NotFound(response)); }
public async Task <ServiceResponse <AddProjectGradeDto> > AddProjectGrade(AddProjectGradeDto addProjectGradeDto) { ServiceResponse <AddProjectGradeDto> response = new ServiceResponse <AddProjectGradeDto>(); User user = await _context.Users .Include(u => u.InstructedCourses) .FirstOrDefaultAsync(u => u.Id == GetUserId()); ProjectGroup projectGroup = await _context.ProjectGroups.Include(pg => pg.AffiliatedCourse) .FirstOrDefaultAsync(rg => rg.Id == addProjectGradeDto.GradedProjectGroupID); if (projectGroup == null) { response.Data = null; response.Message = "There is no project group with this id"; response.Success = false; return(response); } /* * if( user == null || !doesUserInstruct( user, projectGroup.AffiliatedCourseId )) * { * response.Data = null; * response.Message = "You are not authorized to grade this group"; * response.Success = false; * return response; * }*/ if (addProjectGradeDto.MaxGrade < addProjectGradeDto.Grade) { response.Data = null; response.Message = "Grade should be less than or equal to the max grade"; response.Success = false; return(response); } if (addProjectGradeDto.MaxGrade < 0) { response.Data = null; response.Message = "Max grade should not be negative"; response.Success = false; return(response); } ProjectGrade projectGrade = await _context.ProjectGrades .FirstOrDefaultAsync(pg => pg.GradingUserId == GetUserId() && pg.GradedProjectGroupID == addProjectGradeDto.GradedProjectGroupID); //herkes bir kez gradelemek????? if (projectGrade != null) { response.Data = null; response.Message = "You have already graded this group "; response.Success = false; return(response); } ProjectGrade createdProjectGrade = new ProjectGrade { MaxGrade = addProjectGradeDto.MaxGrade, Grade = addProjectGradeDto.Grade, Description = addProjectGradeDto.Comment, LastEdited = addProjectGradeDto.LastEdited, GradingUser = user, GradingUserId = user.Id, GradedProjectGroup = projectGroup, GradedProjectGroupID = projectGroup.Id, }; var target = Path.Combine(_hostingEnvironment.ContentRootPath, string.Format("{0}/{1}/{2}/{3}/{4}", "StaticFiles/ProjectGradeFiles", projectGroup.AffiliatedCourseId, projectGroup.AffiliatedSection, projectGroup.Id, user.Id)); Directory.CreateDirectory(target); if (addProjectGradeDto.File != null) { if (addProjectGradeDto.File.Length > 0) { createdProjectGrade.HasFile = true; string oldfile = Directory.GetFiles(target).FirstOrDefault(); string extension = Path.GetExtension(addProjectGradeDto.File.FileName); var filePath = Path.Combine(target, string.Format("{0}_Section{1}_Group{2}_{3}_GroupFeedback" , projectGroup.AffiliatedCourse.Name.Trim().Replace(" ", "_"), projectGroup.AffiliatedSection, projectGroup.Id, user.Name.Trim().Replace(" ", "_")) + extension); createdProjectGrade.FilePath = filePath; if (File.Exists(oldfile)) { File.Delete(oldfile); } using (var stream = new FileStream(filePath, FileMode.Create)) { await addProjectGradeDto.File.CopyToAsync(stream); } } } _context.ProjectGrades.Add(createdProjectGrade); await _context.SaveChangesAsync(); projectGroup.ProjectGrades.Add(createdProjectGrade); response.Data = addProjectGradeDto; response.Message = "You successfully entered project grade"; response.Success = true; return(response); }