use serde::{Deserialize, Serialize};
use std::fmt::Display;
#[derive(Debug, Serialize, Deserialize)]
pub struct RawWebRegSearchResultItem {
#[serde(rename = "UNIT_TO")]
max_units: f32,
#[serde(rename = "SUBJ_CODE")]
pub subj_code: String,
#[serde(rename = "CRSE_TITLE")]
pub course_title: String,
#[serde(rename = "UNIT_FROM")]
min_units: f32,
#[serde(rename = "CRSE_CODE")]
pub course_code: String,
}
impl Display for RawWebRegSearchResultItem {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"[{} {}] {} ({})",
self.subj_code.trim(),
self.course_code.trim(),
self.course_title.trim(),
self.max_units
)
}
}
#[derive(Debug, Serialize, Deserialize)]
pub struct RawWebRegMeeting {
#[serde(rename = "END_HH_TIME")]
pub end_time_hr: i16,
#[serde(rename = "END_MM_TIME")]
pub end_time_min: i16,
#[serde(rename = "SCTN_CPCTY_QTY")]
pub section_capacity: i64,
#[serde(rename = "SCTN_ENRLT_QTY")]
pub enrolled_count: i64,
#[serde(rename = "SECTION_NUMBER")]
pub section_id: String,
#[serde(rename = "COUNT_ON_WAITLIST")]
pub count_on_waitlist: i64,
#[serde(rename = "ROOM_CODE")]
pub room_code: String,
#[serde(rename = "BEGIN_MM_TIME")]
pub start_time_min: i16,
#[serde(rename = "BEGIN_HH_TIME")]
pub start_time_hr: i16,
#[serde(rename = "DAY_CODE")]
pub day_code: String,
#[serde(rename = "PERSON_FULL_NAME")]
pub person_full_name: String,
#[serde(rename = "FK_SPM_SPCL_MTG_CD")]
pub special_meeting: String,
#[serde(rename = "BLDG_CODE")]
pub bldg_code: String,
#[serde(rename = "FK_CDI_INSTR_TYPE")]
pub meeting_type: String,
#[serde(rename = "SECT_CODE")]
pub sect_code: String,
#[serde(rename = "AVAIL_SEAT")]
pub avail_seat: i64,
#[serde(rename = "START_DATE")]
pub start_date: String,
#[serde(rename = "SECTION_START_DATE")]
pub section_start_date: String,
#[serde(rename = "FK_SST_SCTN_STATCD")]
pub display_type: String,
#[serde(rename = "PRINT_FLAG")]
pub print_flag: String,
}
impl RawWebRegMeeting {
pub fn is_visible(&self) -> bool {
self.print_flag.as_str() == "Y" || self.print_flag == " "
}
}
#[derive(Serialize, Deserialize, Debug)]
pub struct RawScheduledMeeting {
#[serde(rename = "SECTION_HEAD")]
pub section_id: i64,
#[serde(rename = "SECT_CREDIT_HRS")]
pub sect_credit_hrs: f32,
#[serde(rename = "BEGIN_MM_TIME")]
pub start_time_min: i16,
#[serde(rename = "BEGIN_HH_TIME")]
pub start_time_hr: i16,
#[serde(rename = "END_HH_TIME")]
pub end_time_hr: i16,
#[serde(rename = "END_MM_TIME")]
pub end_time_min: i16,
#[serde(rename = "SUBJ_CODE")]
pub subj_code: String,
#[serde(rename = "ROOM_CODE")]
pub room_code: String,
#[serde(rename = "CRSE_TITLE")]
pub course_title: String,
#[serde(rename = "GRADE_OPTION")]
pub grade_option: String,
#[serde(rename = "START_DATE")]
pub start_date: String,
#[serde(rename = "CRSE_CODE")]
pub course_code: String,
#[serde(rename = "DAY_CODE")]
pub day_code: String,
#[serde(rename = "PERSON_FULL_NAME")]
pub person_full_name: String,
#[serde(rename = "FK_SPM_SPCL_MTG_CD")]
pub special_meeting: String,
#[serde(rename = "FK_CDI_INSTR_TYPE")]
pub meeting_type: String,
#[serde(rename = "BLDG_CODE")]
pub bldg_code: String,
#[serde(rename = "ENROLL_STATUS")]
pub enroll_status: String,
#[serde(rename = "SECT_CODE")]
pub sect_code: String,
#[serde(rename = "SCTN_CPCTY_QTY")]
pub section_capacity: Option<i64>,
#[serde(rename = "SCTN_ENRLT_QTY")]
pub enrolled_count: Option<i64>,
#[serde(rename = "COUNT_ON_WAITLIST")]
pub count_on_waitlist: Option<i64>,
#[serde(rename = "WT_POS")]
pub waitlist_pos: String,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(tag = "TYPE")]
pub enum RawPrerequisite {
#[serde(rename = "TEST")]
Test(RawTestPrerequisite),
#[serde(rename = "COURSE")]
Course(RawCoursePrerequisite),
}
#[derive(Serialize, Deserialize, Debug)]
pub struct RawTestPrerequisite {
#[serde(rename = "TEST_TITLE")]
pub test_title: String,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct RawCoursePrerequisite {
#[serde(rename = "SUBJECT_CODE")]
pub subject_code: String,
#[serde(rename = "PREREQ_SEQ_ID")]
pub prereq_seq_id: String,
#[serde(rename = "CRSE_TITLE")]
pub course_title: String,
#[serde(rename = "COURSE_CODE")]
pub course_code: String,
#[serde(rename = "GRADE_SEQ_ID")]
pub grade_seq_id: String,
}
#[derive(Serialize, Deserialize)]
pub struct RawEvent {
#[serde(rename = "LOCATION")]
pub location: String,
#[serde(rename = "START_TIME")]
pub start_time: String,
#[serde(rename = "END_TIME")]
pub end_time: String,
#[serde(rename = "DESCRIPTION")]
pub description: String,
#[serde(rename = "DAYS")]
pub days: String,
#[serde(rename = "TIME_STAMP")]
pub time_stamp: String,
}
#[derive(Serialize, Deserialize)]
pub struct RawSubjectElement {
#[serde(rename = "LONG_DESC")]
pub long_desc: String,
#[serde(rename = "SUBJECT_CODE")]
pub subject_code: String,
}
#[derive(Serialize, Deserialize)]
pub struct RawDepartmentElement {
#[serde(rename = "DEP_CODE")]
pub dep_code: String,
#[serde(rename = "DEP_DESC")]
pub dep_desc: String,
}
#[derive(Serialize, Deserialize)]
pub struct RawTermListItem {
#[serde(rename = "termDesc")]
pub term_desc: String,
#[serde(rename = "seqId")]
pub seq_id: i64,
#[serde(rename = "termCode")]
pub term_code: String,
}
#[derive(Serialize, Deserialize)]
pub struct RawCourseTextItem {
#[serde(rename = "TEXT")]
pub text: String,
#[serde(rename = "SUBJCRSE")]
pub subj_crse: String,
}
#[derive(Serialize, Deserialize)]
pub struct RawSectionTextItem {
#[serde(rename = "SECTNUM")]
pub sectnum: String,
#[serde(rename = "TEXT")]
pub text: String,
}