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")); } }
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(); }
public async Task <IActionResult> EditSubjectPerformance([FromBody] StudentPerformanceDto studentPerformance) { return(await HandleRequestAsync(async() => await _performanceService.EditPerformanceAsync(studentPerformance))); }