Пример #1
0
        private async Task AssignValueToHomeworksAsync(StudentPerformanceDto studentPerformance)
        {
            var homeworkIds = studentPerformance.Homeworks.Select(dto => dto.HomeworkId).ToList();

            var homeworksData = await _repository.GetAll <HomeworkInfo>()
                                .Where(homework => homeworkIds.Contains(homework.HomeworkInfoId))
                                .Select(homework => new
            {
                HomeworkId = homework.HomeworkInfoId,
                Number     = homework.Number,
                MaxPoints  = homework.MaxPoints
            })
                                .ToListAsync();

            studentPerformance.EditableHomeworks = studentPerformance.Homeworks.ToList();

            foreach (var editableHomework in studentPerformance.EditableHomeworks)
            {
                var dbHomework =
                    homeworksData.SingleOrDefault(homework => editableHomework.HomeworkId == homework.HomeworkId);

                if (dbHomework != null)
                {
                    editableHomework.MaxPoints      = dbHomework.MaxPoints;
                    editableHomework.HomeworkNumber = dbHomework.Number;
                }
            }
        }
        public async Task <ActionResult> EditSubjectPerformance(StudentPerformanceDto studentPerformance)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(View("Edit", studentPerformance));
                }
                await _performanceService.EditPerformanceAsync(studentPerformance);

                return(RedirectToAction("Details", "Subject", new { id = studentPerformance.SubjectId }));
            }
            catch (SPCException ex)
            {
                return(View("ErrorView", new ErrorDto(ex.Message, ex.StatusCode)));
            }
            catch (Exception ex)
            {
                return(View("Error"));
            }
        }
Пример #3
0
        public async Task EditPerformanceAsync(StudentPerformanceDto studentPerformanceDto)
        {
            _logService.LogInfo($"Edit performance info for student {studentPerformanceDto.StudentId}, {studentPerformanceDto.StudentSecondName} {studentPerformanceDto.StudentName}");

            var studentPerformance = await _repository.GetAll <StudentPerformance>()
                                     .Where(performance =>
                                            performance.StudentId == studentPerformanceDto.StudentId &&
                                            performance.SubjectId == studentPerformanceDto.SubjectId)
                                     .Include(performance => performance.HomeworkResults)
                                     .SingleOrDefaultAsync()
                                     ?? throw new SPCException(
                                               $"Student performance for subject {studentPerformanceDto.SubjectId} and student {studentPerformanceDto.StudentId} not exists",
                                               404);

            studentPerformance.Module1TestPoints = studentPerformanceDto.Module1Result;
            studentPerformance.Module2TestPoints = studentPerformanceDto.Module2Result;
            studentPerformance.ExamPoints        = studentPerformanceDto.ExamResult;

            _repository.Update(studentPerformance);

            foreach (var homework in studentPerformanceDto.EditableHomeworks)
            {
                var dbHomework = studentPerformance.HomeworkResults.SingleOrDefault(result =>
                                                                                    result.HomeworkResultId == homework.HomeworkResultId);

                if (dbHomework != null)
                {
                    dbHomework.Points = homework.Points;
                    _repository.Update(dbHomework);
                }
            }

            _logService.LogInfo($"Performance info for student {studentPerformanceDto.StudentId}, {studentPerformanceDto.StudentSecondName} {studentPerformanceDto.StudentName} edited");

            await _repository.SaveContextAsync();
        }
Пример #4
0
 public async Task <IActionResult> EditSubjectPerformance([FromBody] StudentPerformanceDto studentPerformance)
 {
     return(await HandleRequestAsync(async() =>
                                     await _performanceService.EditPerformanceAsync(studentPerformance)));
 }