37 lines
1.3 KiB
Rust
37 lines
1.3 KiB
Rust
// list of algos/methods that make sure the state of the schedule is still fair
|
|
|
|
use crate::model::{Day, MonthlySchedule, Resident};
|
|
|
|
// return yes if any resident has a shift in back to bacak days
|
|
// TODO: performance: this could only check the current recursion resident otherwise we would have cut the branch earlier
|
|
pub fn back_to_back_shifts(schedule: &MonthlySchedule) -> bool {
|
|
schedule.contains_any_consecutive_shifts()
|
|
}
|
|
|
|
// return yes if the same resident has a shift on a sunday and also the next saturday
|
|
pub fn sunday_and_next_saturday_shifts(schedule: &MonthlySchedule, resident: &Resident) -> bool {
|
|
todo!()
|
|
}
|
|
|
|
// find if a pair exists doing a shift at the same day, if yes return true
|
|
pub fn pair_exists(
|
|
schedule: &MonthlySchedule,
|
|
resident_a: &Resident,
|
|
resident_b: &Resident,
|
|
) -> bool {
|
|
todo!()
|
|
}
|
|
|
|
// if day is odd then open otherwise closed
|
|
pub fn is_closed(day: &Day) -> bool {
|
|
todo!()
|
|
}
|
|
|
|
// here include:
|
|
// if total shifts are 50 and there are 5 residents BUT this resident has reduced workload, he should to 9 instead of 10
|
|
// if resident has specific shift types then see he is not put in a wrong shift type
|
|
// if resident has a max limit of shifts see that he is not doing more
|
|
pub fn are_personal_restrictions_met(resident: &Resident) -> bool {
|
|
todo!()
|
|
}
|