Skip to content

Commit 91dbe37

Browse files
committed
fix: handle invididual status break
1 parent 04187f1 commit 91dbe37

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

src/tasks/status_update.rs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ pub async fn status_update_check(ctx: Context, client: GraphQLClient) -> anyhow:
7272

7373
fn categorize_members(members: &Vec<Member>) -> (GroupedMember, Vec<i32>) {
7474
let mut naughty_list: HashMap<Option<String>, Vec<Member>> = HashMap::new();
75-
let mut years_on_break: HashSet<i32> = HashSet::new();
75+
let mut members_by_year: HashMap<i32, Vec<bool>> = HashMap::new();
7676

7777
for member in members {
7878
let Some(status) = &member.status else {
@@ -82,10 +82,14 @@ fn categorize_members(members: &Vec<Member>) -> (GroupedMember, Vec<i32>) {
8282
continue;
8383
};
8484

85+
if let Some(year) = member.year {
86+
members_by_year
87+
.entry(year)
88+
.or_default()
89+
.push(on_date.on_break);
90+
}
91+
8592
if on_date.on_break {
86-
if let Some(year) = member.year {
87-
years_on_break.insert(year);
88-
}
8993
continue;
9094
}
9195

@@ -95,6 +99,13 @@ fn categorize_members(members: &Vec<Member>) -> (GroupedMember, Vec<i32>) {
9599
}
96100
}
97101

102+
// Only register a year on break if all members of that year are on break
103+
let years_on_break: Vec<i32> = members_by_year
104+
.into_iter()
105+
.filter(|(_, breaks)| breaks.iter().all(|&on_break| on_break))
106+
.map(|(year, _)| year)
107+
.collect();
108+
98109
(naughty_list, years_on_break.into_iter().collect())
99110
}
100111

0 commit comments

Comments
 (0)