Compare commits

...
4 Commits
Author SHA1 Message Date
Lucas Vas f9d5b25436 Merge pull request #72 from R15-Software-Dev/fix/filtering-bugs
Check requirement return value on Ok variant
2026-03-23 12:05:22 -04:00
alphafetus 891e324186 fix: check requirement return value on Ok variant 2026-03-23 11:47:06 -04:00
Lucas Vas b502c2f96d Merge pull request #71 from R15-Software-Dev/fix/comparison-filtering
Fix comparison logic for filtering
2026-03-19 13:49:06 -04:00
alphafetus 681da8c326 fix: use correct comparison logic
Was originally short-circuiting on empty lists of requirements.
2026-03-19 13:37:11 -04:00
+26 -18
View File
@@ -4,7 +4,7 @@ use crate::pages::api::files::list_files;
use crate::pages::api::students::get_all_student_data; use crate::pages::api::students::get_all_student_data;
use crate::pages::api::{get_all_scholarship_info, get_comparison_info}; use crate::pages::api::{get_all_scholarship_info, get_comparison_info};
use crate::utils::get_user_claims; use crate::utils::get_user_claims;
use leptos::logging::debug_log; use leptos::logging::{debug_log, debug_error};
use leptos::prelude::*; use leptos::prelude::*;
use leptos_oidc::AuthSignal; use leptos_oidc::AuthSignal;
@@ -63,8 +63,7 @@ pub fn StudentEligibilityPage() -> impl IntoView {
.get("name") .get("name")
.unwrap_or(&ValueType::String(None)) .unwrap_or(&ValueType::String(None))
.as_string() .as_string()
.ok() .ok()?
.flatten()
.unwrap_or_default(); .unwrap_or_default();
debug_log!("Checking scholarship: {}", scholarship_name); debug_log!("Checking scholarship: {}", scholarship_name);
let requirements_map = scholarship let requirements_map = scholarship
@@ -72,8 +71,7 @@ pub fn StudentEligibilityPage() -> impl IntoView {
.get("requirements") .get("requirements")
.unwrap_or(&ValueType::Map(None)) .unwrap_or(&ValueType::Map(None))
.as_map() .as_map()
.ok() .ok()?
.flatten()
.unwrap_or_default() .unwrap_or_default()
.values() .values()
.cloned() .cloned()
@@ -108,19 +106,29 @@ pub fn StudentEligibilityPage() -> impl IntoView {
&& resolved_requirements && resolved_requirements
.iter() .iter()
.all(|list| { .all(|list| {
list.iter() debug_log!("Checking list: {:?}", list);
.fold( if list.is_empty() {
false, true
|prev, requirement| { } else {
let result = requirement list.iter()
.compare(&student_info) .any(
.unwrap_or_else(|err| { |requirement| {
debug_log!("Requirement failed: {err}"); let result = requirement
false .compare(&student_info);
});
if prev { prev } else { result } match result.as_ref() {
}, Ok(status) => {
) debug_log!("Requirement with id {} is Ok({})", requirement.id, status);
status.clone()
},
Err(e) => {
debug_error!("Requirement with id {} failed: {}", requirement.id, e);
false
}
}
},
)
}
}); });
if valid { if valid {
debug_log!("Scholarship is valid."); debug_log!("Scholarship is valid.");