public async Task <ServiceResponse <PeerGradeAssignmentInfoDto> > GetPeerGradeAssignmentByCourseId(int courseId) { ServiceResponse <PeerGradeAssignmentInfoDto> response = new ServiceResponse <PeerGradeAssignmentInfoDto>(); PeerGradeAssignment pga = await _context.PeerGradeAssignments.FirstOrDefaultAsync(pga => pga.CourseId == courseId); if (pga == null) { response.Data = null; response.Message = "There is no peer grade assignment with this Id."; response.Success = false; return(response); } PeerGradeAssignmentInfoDto pgaInfoDto = new PeerGradeAssignmentInfoDto { Id = pga.Id, CourseId = pga.CourseId, MaxGrade = pga.MaxGrade, DueDate = pga.DueDate, LastEdited = pga.LastEdited, }; response.Data = pgaInfoDto; response.Message = "success"; response.Success = true; return(response); }
public async Task <ServiceResponse <PeerGradeAssignmentInfoDto> > EditPeerGradeAssignment(EditPeerGradeAssignmentDto dto) { ServiceResponse <PeerGradeAssignmentInfoDto> response = new ServiceResponse <PeerGradeAssignmentInfoDto>(); User user = await _context.Users.Include(u => u.InstructedCourses) .FirstOrDefaultAsync(u => u.Id == GetUserId()); PeerGradeAssignment pga = await _context.PeerGradeAssignments.Include(pg => pg.PeerGrades).FirstOrDefaultAsync(pga => pga.Id == dto.Id); if (pga == null) { response.Data = null; response.Message = "There is no peer grade assignment with this Id."; response.Success = false; return(response); } if (!doesUserInstruct(user, pga.CourseId)) { response.Data = null; response.Message = "You are not instructing this course"; response.Success = false; return(response); } if (dto.MaxGrade < 0) { response.Data = null; response.Message = "Max grade should not be negative"; response.Success = false; return(response); } if (pga.MaxGrade != 0) { // update operations due to possible maxGradeChange foreach (PeerGrade pg in pga.PeerGrades) { pg.Grade = (int)Math.Ceiling((pg.Grade * dto.MaxGrade) / pga.MaxGrade); pg.MaxGrade = dto.MaxGrade; } } pga.MaxGrade = dto.MaxGrade; pga.DueDate = dto.DueDate; pga.LastEdited = dto.LastEdited; _context.PeerGradeAssignments.Update(pga); await _context.SaveChangesAsync(); PeerGradeAssignmentInfoDto pgaInfoDto = new PeerGradeAssignmentInfoDto { Id = pga.Id, CourseId = pga.CourseId, MaxGrade = pga.MaxGrade, DueDate = pga.DueDate, LastEdited = pga.LastEdited, }; response.Data = pgaInfoDto; response.Message = "You successfully edited peer grade assignment"; response.Success = true; return(response); }