public async Task <IActionResult> GetPeerGradesGivenBy(int projectGroupId, int reviewerId) { GetPeerGradesGivenByDto dto = new GetPeerGradesGivenByDto { ProjectGroupId = projectGroupId, ReviewerId = reviewerId }; ServiceResponse <List <PeerGradeInfoDto> > response = await _peerGradeService.GetPeerGradesGivenBy(dto); if (response.Success) { return(Ok(response)); } return(NotFound(response)); }
public async Task <ServiceResponse <List <PeerGradeInfoDto> > > GetPeerGradesGivenBy(GetPeerGradesGivenByDto dto) { ServiceResponse <List <PeerGradeInfoDto> > response = new ServiceResponse <List <PeerGradeInfoDto> >(); User user = await _context.Users .Include(u => u.InstructedCourses) .FirstOrDefaultAsync(u => u.Id == GetUserId()); ProjectGroup projectGroup = await _context.ProjectGroups.Include(g => g.AffiliatedCourse).ThenInclude(c => c.PeerGradeAssignment) .Include(g => g.GroupMembers) .FirstOrDefaultAsync(rg => rg.Id == dto.ProjectGroupId); if (projectGroup == null) { response.Data = null; response.Message = "There is no project group with this id"; response.Success = false; return(response); } if (!IsUserInGroup(projectGroup, dto.ReviewerId)) { response.Data = null; response.Message = "There is no user with reviewerId in group"; response.Success = false; return(response); } PeerGradeAssignment pga = await _context.PeerGradeAssignments .FirstOrDefaultAsync(pga => pga.CourseId == projectGroup.AffiliatedCourseId); if (pga == null) { response.Data = null; response.Message = "Course doesn't have a peer grade assignment"; response.Success = false; return(response); } if (user == null || (!doesUserInstruct(user, projectGroup.AffiliatedCourseId) && user.Id != dto.ReviewerId)) { response.Data = null; response.Message = "You are not authorized to see these peer grades"; response.Success = false; return(response); } List <PeerGradeInfoDto> peerGrades = _context.PeerGrades.Where(pg => pg.ProjectGroupId == dto.ProjectGroupId).Where(pg => pg.ReviewerId == dto.ReviewerId).Select(c => _mapper.Map <PeerGradeInfoDto>(c)).ToList(); response.Data = peerGrades; response.Message = "Success"; response.Success = true; return(response); }