Skip to content

Commit

Permalink
Fix staff page
Browse files Browse the repository at this point in the history
  • Loading branch information
Celeo committed Oct 1, 2024
1 parent 8b51cf1 commit 7738a99
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 74 deletions.
5 changes: 2 additions & 3 deletions vzdv-site/src/endpoints/facility.rs
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,7 @@ async fn page_roster(
Some(s) => s,
None => "",
};
let roles = determine_staff_positions(controller, &state.config).join(", ");

let roles = determine_staff_positions(controller).join(", ");
let certs = certifications
.iter()
.filter(|cert| cert.cid == controller.cid)
Expand Down Expand Up @@ -209,7 +208,7 @@ async fn page_staff(
.fetch_all(&state.db)
.await?;
for controller in &controllers {
let roles = determine_staff_positions(controller, &state.config);
let roles = determine_staff_positions(controller);
for role in roles {
if let Some(staff_pos) = staff_map.get_mut(role.as_str()) {
staff_pos.controllers.push(controller.clone());
Expand Down
1 change: 0 additions & 1 deletion vzdv.empty.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ resource_category_ordering = []

[staff]
email_domain = ""
overrides = []

[vatsim]
vatusa_api_key = ""
Expand Down
4 changes: 0 additions & 4 deletions vzdv.example.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,6 @@ resource_category_ordering = ["General", "SOP", "LOA", "Misc"]

[staff]
email_domain = "zdvartcc.org"
overrides = [
{ role = "FE", cid = 967658 },
{ role = "EC", cid = 1520736 }
]

[vatsim]
# This data is for the _dev_ SSO site
Expand Down
7 changes: 0 additions & 7 deletions vzdv/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,8 @@ pub struct ConfigDatabase {
pub resource_category_ordering: Vec<String>,
}

#[derive(Debug, Clone, Deserialize, Default)]
pub struct ConfigStaffOverride {
pub role: String,
pub cid: u32,
}

#[derive(Debug, Clone, Deserialize, Default)]
pub struct ConfigStaff {
pub overrides: Vec<ConfigStaffOverride>,
pub email_domain: String,
}

Expand Down
77 changes: 18 additions & 59 deletions vzdv/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use reqwest::ClientBuilder;
use sql::Controller;
use sqlx::{sqlite::SqliteRow, Pool, Row, Sqlite};
use std::{
collections::HashMap,
collections::{HashMap, HashSet},
path::{Path, PathBuf},
sync::LazyLock,
time::SystemTime,
Expand Down Expand Up @@ -85,28 +85,16 @@ pub async fn get_controller_cids_and_names(
///
/// This function will return all positions in the event the controller holds more
/// than one, like being an Instructor and also the FE, or a Mentor and an AEC.
pub fn determine_staff_positions(controller: &Controller, config: &Config) -> Vec<String> {
let mut ret_roles = Vec::new();
let db_roles: Vec<_> = controller.roles.split_terminator(',').collect();
for role in db_roles {
if IGNORE_MISSING_STAFF_POSITIONS_FOR.contains(&role) {
continue;
}
let ovr = config.staff.overrides.iter().find(|o| o.role == role);
if let Some(ovr) = ovr {
if ovr.cid == controller.cid {
ret_roles.push(role.to_owned());
} else {
ret_roles.push(format!("A{role}"));
}
} else {
ret_roles.push(role.to_owned());
}
}
pub fn determine_staff_positions(controller: &Controller) -> Vec<String> {
let mut roles: HashSet<_> = controller
.roles
.split_terminator(',')
.filter(|r| !IGNORE_MISSING_STAFF_POSITIONS_FOR.contains(r))
.collect();
if controller.home_facility == "ZDV" && [8, 9, 10].contains(&controller.rating) {
ret_roles.push("INS".to_owned());
roles.insert("INS");
}
ret_roles
roles.iter().map(|&r| r.to_owned()).collect()
}

pub enum ControllerRating {
Expand Down Expand Up @@ -534,9 +522,7 @@ pub mod tests {
PermissionsGroup,
};
use crate::{
config::{Config, ConfigStaffOverride},
generate_operating_initials_for,
sql::Controller,
config::Config, generate_operating_initials_for, sql::Controller,
vatsim::parse_vatsim_timestamp,
};

Expand All @@ -559,60 +545,35 @@ pub mod tests {
fn test_determine_staff_positions_empty() {
let mut controller = Controller::default();
controller.cid = 123;
let config = Config::default();

assert!(determine_staff_positions(&controller, &config).is_empty());
assert!(determine_staff_positions(&controller).is_empty());
}

#[test]
fn test_determine_staff_positions_shared() {
let mut controller = Controller::default();
controller.cid = 123;
controller.roles = "MTR".to_owned();
let config = Config::default();

assert_eq!(determine_staff_positions(&controller, &config), vec!["MTR"]);
assert_eq!(determine_staff_positions(&controller), vec!["MTR"]);
}

#[test]
fn test_determine_staff_positions_single() {
let mut controller = Controller::default();
controller.cid = 123;
controller.roles = "FE".to_owned();
let config = Config::default();

assert_eq!(determine_staff_positions(&controller, &config), vec!["FE"]);
assert_eq!(determine_staff_positions(&controller), vec!["FE"]);
}

#[test]
fn test_determine_staff_positions_single_assistant() {
let mut controller = Controller::default();
controller.cid = 123;
controller.roles = "FE".to_owned();
let mut config = Config::default();
config.staff.overrides.push(ConfigStaffOverride {
role: "FE".to_owned(),
cid: 456,
});

assert_eq!(determine_staff_positions(&controller, &config), vec!["AFE"]);
}
controller.roles = "AFE".to_owned();

#[test]
fn test_determine_staff_positions_multiple() {
let mut controller = Controller::default();
controller.cid = 123;
controller.roles = "FE,MTR".to_owned();
let mut config = Config::default();
config.staff.overrides.push(ConfigStaffOverride {
role: "FE".to_owned(),
cid: 456,
});

assert_eq!(
determine_staff_positions(&controller, &config),
vec!["AFE", "MTR"]
);
assert_eq!(determine_staff_positions(&controller), vec!["AFE"]);
}

#[test]
Expand All @@ -621,19 +582,17 @@ pub mod tests {
controller.cid = 123;
controller.rating = 10;
controller.home_facility = "ZDV".to_owned();
let config = Config::default();

assert_eq!(determine_staff_positions(&controller, &config), vec!["INS"]);
assert_eq!(determine_staff_positions(&controller), vec!["INS"]);
}

#[test]
fn test_determine_staff_positions_ingore() {
fn test_determine_staff_positions_ignore() {
let mut controller = Controller::default();
controller.cid = 123;
controller.roles = "FACCBT".to_owned();
let config = Config::default();

assert!(determine_staff_positions(&controller, &config).is_empty());
assert!(determine_staff_positions(&controller).is_empty());
}

#[test]
Expand Down

0 comments on commit 7738a99

Please sign in to comment.