Merge pull request #71 from R15-Software-Dev/fix/comparison-filtering

Fix comparison logic for filtering
This commit was merged in pull request #71.
This commit is contained in:
Lucas Vas authored and GitHub committed 2026-03-19 13:49:06 -04:00
commit b502c2f96d
1 file changed
+18 -14
+18 -14
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,25 @@ pub fn StudentEligibilityPage() -> impl IntoView {
&& resolved_requirements && resolved_requirements
.iter() .iter()
.all(|list| { .all(|list| {
debug_log!("Checking list: {:?}", list);
if list.is_empty() {
true
} else {
list.iter() list.iter()
.fold( .any(
false, |requirement| {
|prev, requirement| {
let result = requirement let result = requirement
.compare(&student_info) .compare(&student_info);
.unwrap_or_else(|err| {
debug_log!("Requirement failed: {err}"); match result.as_ref() {
false Ok(_) => debug_log!("Requirement with id {} success", requirement.id),
}); Err(e) => debug_error!("Requirement with id {} failed: {}", requirement.id, e)
if prev { prev } else { result } };
result.is_ok()
}, },
) )
}
}); });
if valid { if valid {
debug_log!("Scholarship is valid."); debug_log!("Scholarship is valid.");