public async Task <IActionResult> Edit(int peerGradeAssignmentId, int maxGrade, DateTime dueDate) { EditPeerGradeAssignmentDto dto = new EditPeerGradeAssignmentDto { Id = peerGradeAssignmentId, LastEdited = DateTime.Now, MaxGrade = maxGrade, DueDate = dueDate }; ServiceResponse <PeerGradeAssignmentInfoDto> response = await _peerGradeAssignmentService.EditPeerGradeAssignment(dto); if (response.Success) { return(Ok(response)); } return(NotFound(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); }