Skip to content

Commit

Permalink
Made getting task answers for student
Browse files Browse the repository at this point in the history
  • Loading branch information
IlyaM1 committed Jan 8, 2024
1 parent 122ce1d commit 6c1d8e2
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 3 deletions.
4 changes: 2 additions & 2 deletions Progress/Dto/ProgressDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ public class ProgressGetTaskAnswersForStudentDto : BaseDto
public class OneTaskAnswerDto : BaseDto
{
public int ChapterId { get; set; }
public int ChapterName { get; set; }
public string ChapterName { get; set; }

public int PageId { get; set; }
public int PageName { get; set; }
public string PageName { get; set; }

public int StudentScore { get; set; }
public int MaxScore { get; set; }
Expand Down
75 changes: 74 additions & 1 deletion Progress/Logic/ProgressService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,79 @@ public async Task<ProgressGetStudentProgressForCourseDto> GetStudentProgressForC

public async Task<ProgressGetTaskAnswersForStudentDto> GetStudentTasksAnswersAsync(int courseId, int studentUserId)
{
throw new NotImplementedException();
var studentId = await _groupService.GetStudentIdByUserIdAsync(studentUserId);
var allAnswers = (await _taskAnswerRepo.GetAllEntitiesAsync()).Where(x => x.StudentId == studentId).ToList();

var allDtos = new List<ProgressGetTaskAnswersForStudentDto.OneTaskAnswerDto>();
foreach (var taskAnswer in allAnswers)
allDtos.Add(await GetOneAnswerTaskDto(taskAnswer));

return new ProgressGetTaskAnswersForStudentDto() { Answers = allDtos};
}

private async Task<ProgressGetTaskAnswersForStudentDto.OneTaskAnswerDto> GetOneAnswerTaskDto(TaskAnswerModel taskAnswer)
{
var chapterInfo = await GetTaskAnswerChapterInfo(taskAnswer);
var pageInfo = await GetTaskAnswerPageInfo(taskAnswer);

return new ProgressGetTaskAnswersForStudentDto.OneTaskAnswerDto()
{
ChapterId = chapterInfo.ChapterId,
ChapterName = chapterInfo.ChapterName,

PageId = pageInfo.PageId,
PageName = pageInfo.PageName,

StudentScore = await GetStudentTaskScore(taskAnswer),
MaxScore = await GetTaskMaxScore(taskAnswer),

FileUrl = taskAnswer.FileUrl,
};
}

internal class ChapterInfo
{
public int ChapterId { get; set; }
public string ChapterName { get; set; }
}

private async Task<ChapterInfo> GetTaskAnswerChapterInfo(TaskAnswerModel taskAnswer)
{
var pageId = taskAnswer.PageId;
var page = await _coursePageRepo.GetEntityByIdAsync(pageId);

var chapter = await _courseChaptersRepo.GetEntityByIdAsync(page.ChapterId);

return new ChapterInfo { ChapterId = pageId, ChapterName = chapter.Name };
}

internal class PageInfo
{
public int PageId { get; set; }
public string PageName { get; set; }
}

private async Task<PageInfo> GetTaskAnswerPageInfo(TaskAnswerModel taskAnswer)
{
var pageId = taskAnswer.PageId;
var page = await _coursePageRepo.GetEntityByIdAsync(pageId);

return new PageInfo { PageId = pageId, PageName = page.Name };
}

private async Task<int> GetStudentTaskScore(TaskAnswerModel taskAnswer)
{
return (await _taskScoreRepo.GetAllEntitiesAsync())
.Where(x => x.StudentId == taskAnswer.StudentId && x.PageId == taskAnswer.PageId)
.FirstOrDefault()
?.StudentScore ?? 0;
}

private async Task<int> GetTaskMaxScore(TaskAnswerModel taskAnswer)
{
return (await _taskPageRepo.GetAllEntitiesAsync())
.Where(x => x.PageId == taskAnswer.PageId)
.First()
.MaxScore;
}
}

0 comments on commit 6c1d8e2

Please sign in to comment.