Untitled

 avatar
unknown
plain_text
a year ago
1.4 kB
3
Indexable
public IActionResult PredictGrade() {
    var sessions = Database.StudySessions;
    var subjects = Database.Subjects; // Fetch the subjects from the database

    var results = sessions.GroupBy(s => s.SubjectID).Select(group => new {
        SubjectID = group.Key,
        SubjectName = subjects.FirstOrDefault(sub => sub.SubjectID == group.Key)?.Name, // Get the subject name
        PredictedGrade = CalculateGrade(group.ToList()),
        ExistingKnowledgeLevel = int.Parse(group.First().KnowledgeLevel),
        PredictedKnowledge = CalculatePredictedKnowledge(group.ToList())
    }).ToList();

    return View(results); // Pass the list of predicted grades to the view
}

private string CalculateGrade(List<StudySession> sessions) {
    // Calculate total study time and number of sessions for the subject
    int totalSessions = sessions.Count;
    int totalStudyTime = sessions.Sum(session =>
        (session.DurationMinutes - Database.Breaks
            .Where(b => b.StudySessionID == session.StudySessionID)
            .Sum(b => b.DurationMinutes)));

    double score = (totalStudyTime * int.Parse(sessions.First().KnowledgeLevel)) / 100.0;

    if (score >= 7) return "A";
    else if (score >= 6 && score < 7) return "B";
    else if (score >= 5 && score < 6) return "C";
    else if (score >= 4 && score < 5) return "D";
    else return "F";
}
Editor is loading...
Leave a Comment