Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
        }