public async Task <IActionResult> Add(int courseId, int maxGrade, DateTime dueDate) { AddPeerGradeAssignmentDto dto = new AddPeerGradeAssignmentDto { CourseId = courseId, LastEdited = DateTime.Now, MaxGrade = maxGrade, DueDate = dueDate }; ServiceResponse <AddPeerGradeAssignmentDto> response = await _peerGradeAssignmentService.AddPeerGradeAssignment(dto); if (response.Success) { return(Ok(response)); } return(NotFound(response)); }
public async Task <ServiceResponse <AddPeerGradeAssignmentDto> > AddPeerGradeAssignment(AddPeerGradeAssignmentDto dto) { ServiceResponse <AddPeerGradeAssignmentDto> response = new ServiceResponse <AddPeerGradeAssignmentDto>(); User user = await _context.Users.Include(u => u.InstructedCourses) .FirstOrDefaultAsync(u => u.Id == GetUserId()); Course course = await _context.Courses .FirstOrDefaultAsync(rg => rg.Id == dto.CourseId); if (course == null) { response.Data = null; response.Message = "There is no course with this id"; response.Success = false; return(response); } if (!doesUserInstruct(user, dto.CourseId)) { response.Data = null; response.Message = "You are not instructing this course"; response.Success = false; return(response); } PeerGradeAssignment pga = await _context.PeerGradeAssignments.Include(pga => pga.AffiliatedCourse) .FirstOrDefaultAsync(pga => pga.CourseId == dto.CourseId); if (pga != null) { response.Data = null; response.Message = "There is already a peer grading assignment for the 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); } PeerGradeAssignment createdPga = new PeerGradeAssignment { AffiliatedCourse = course, CourseId = dto.CourseId, DueDate = dto.DueDate, LastEdited = dto.LastEdited, MaxGrade = dto.MaxGrade }; _context.PeerGradeAssignments.Add(createdPga); await _context.SaveChangesAsync(); course.PeerGradeAssignment = pga; response.Data = dto; response.Message = "You successfully entered peer grade assignment"; response.Success = true; return(response); }