Skip to content

Commit

Permalink
Fix issue where student fetch fails on nil course score
Browse files Browse the repository at this point in the history
  • Loading branch information
ephraimkunz committed Oct 31, 2023
1 parent 09edb59 commit bceba75
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 7 deletions.
2 changes: 1 addition & 1 deletion StudentOutreach/Models/CanvasTypes.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ struct Enrollment: Decodable, Identifiable, Hashable {
}

struct Grades: Decodable, Hashable {
let currentScore: Double
let currentScore: Double?
}

struct Course: Decodable, Identifiable, Hashable {
Expand Down
34 changes: 29 additions & 5 deletions StudentOutreach/Models/MessageFilter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import Foundation

enum MessageFilter: CaseIterable, Identifiable {
case notSubmitted, notGraded, scoredMoreThan, scoredLessThan, markedIncomplete, reassigned
case courseScoreLessThan, courseScoreMoreThan, courseScoreBetween, all
case courseScoreLessThan, courseScoreMoreThan, courseScoreBetween, courseScoreEmpty, all

var id: Self {
return self
Expand All @@ -36,6 +36,8 @@ enum MessageFilter: CaseIterable, Identifiable {
return "Course score more than"
case .courseScoreBetween:
return "Course score is between"
case .courseScoreEmpty:
return "Course score is empty"
case .all:
return "All students in course"
}
Expand Down Expand Up @@ -74,6 +76,8 @@ enum MessageFilter: CaseIterable, Identifiable {
return "Score in \(courseName) is more than \(score.formatted())"
case .courseScoreBetween:
return "Score in \(courseName) is more than \(score.formatted()) and less than \(score2.formatted())"
case .courseScoreEmpty:
return ""
case .all:
return ""
}
Expand Down Expand Up @@ -131,7 +135,7 @@ enum MessageFilter: CaseIterable, Identifiable {

return isReassignable
}
case .courseScoreLessThan, .courseScoreMoreThan, .courseScoreBetween, .all:
case .courseScoreLessThan, .courseScoreMoreThan, .courseScoreBetween, .courseScoreEmpty, .all:
return course != nil && mode == .course
}

Expand Down Expand Up @@ -170,11 +174,31 @@ enum MessageFilter: CaseIterable, Identifiable {
case .reassigned:
return studentAssignmentInfos.filter({ $0.redoRequest })
case .courseScoreLessThan:
return studentAssignmentInfos.filter({ $0.courseScore < score })
return studentAssignmentInfos.filter { sai in
if let courseScore = sai.courseScore {
return courseScore < score
} else {
return false
}
}
case .courseScoreMoreThan:
return studentAssignmentInfos.filter({ $0.courseScore > score })
return studentAssignmentInfos.filter { sai in
if let courseScore = sai.courseScore {
return courseScore > score
} else {
return false
}
}
case .courseScoreBetween:
return studentAssignmentInfos.filter({ $0.courseScore > score && $0.courseScore < score2 })
return studentAssignmentInfos.filter { sai in
if let courseScore = sai.courseScore {
return courseScore > score && courseScore < score2
} else {
return false
}
}
case .courseScoreEmpty:
return studentAssignmentInfos.filter({ $0.courseScore == nil })
case .all:
return studentAssignmentInfos
}
Expand Down
2 changes: 1 addition & 1 deletion StudentOutreach/Models/ViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ struct StudentAssignmentInfo: Hashable {
let submittedAt: Date?
let redoRequest: Bool

let courseScore: Double
let courseScore: Double?

var firstName: String {
let formatter = PersonNameComponentsFormatter()
Expand Down

0 comments on commit bceba75

Please sign in to comment.