예제 #1
0
        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));
        }
예제 #2
0
        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);
        }