use serde::{Deserialize, Serialize};
use wdpe::command::WebDynproCommandExecutor;
use wdpe::element::parser::ElementParser;
use wdpe::{
command::element::text::InputFieldValueCommand, define_elements, element::text::InputField,
error::WebDynproError,
};
#[derive(Clone, Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
pub struct StudentQualification {
teaching_major: Option<StudentTeachingMajorInformation>,
teaching_plural_major: Option<StudentTeachingPluralMajorInformation>,
lifelong: Option<StudentLifelongInformation>,
forign_study: Option<StudentForignStudyInformation>,
}
impl StudentQualification {
pub(crate) fn with_parser(parser: &ElementParser) -> StudentQualification {
Self {
teaching_major: StudentTeachingMajorInformation::with_parser(parser).ok(),
teaching_plural_major: StudentTeachingPluralMajorInformation::with_parser(parser).ok(),
lifelong: StudentLifelongInformation::with_parser(parser).ok(),
forign_study: StudentForignStudyInformation::with_parser(parser).ok(),
}
}
pub fn teaching_major(&self) -> Option<&StudentTeachingMajorInformation> {
self.teaching_major.as_ref()
}
pub fn teaching_plural_major(&self) -> Option<&StudentTeachingPluralMajorInformation> {
self.teaching_plural_major.as_ref()
}
pub fn lifelong(&self) -> Option<&StudentLifelongInformation> {
self.lifelong.as_ref()
}
pub fn forign_study(&self) -> Option<&StudentForignStudyInformation> {
self.forign_study.as_ref()
}
}
#[derive(Clone, Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
pub struct StudentTeachingMajorInformation {
major_name: Option<String>,
qualification_number: Option<String>,
initiation_date: Option<String>,
qualification_date: Option<String>,
}
impl<'a> StudentTeachingMajorInformation {
define_elements! {
MAJOR_OTYPE: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.TC_DEFAULT_MAJOR_OTYPE";
MAJOR_QUAL_NUM: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.TC_DEFAULT_MAJOR_QUAL_NUM";
MAJOR_SELECT_DT: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.TC_DEFAULT_MAJOR_SELECT_DT";
MAJOR_QUAL_DT: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.TC_DEFAULT_MAJOR_QUAL_DT";
}
pub(crate) fn with_parser(
parser: &'a ElementParser,
) -> Result<StudentTeachingMajorInformation, WebDynproError> {
Ok(Self {
major_name: parser
.read(InputFieldValueCommand::new(Self::MAJOR_OTYPE))
.ok(),
qualification_number: parser
.read(InputFieldValueCommand::new(Self::MAJOR_QUAL_NUM))
.ok(),
initiation_date: parser
.read(InputFieldValueCommand::new(Self::MAJOR_SELECT_DT))
.ok(),
qualification_date: parser
.read(InputFieldValueCommand::new(Self::MAJOR_QUAL_DT))
.ok(),
})
}
pub fn major_name(&self) -> Option<&str> {
self.major_name.as_deref()
}
pub fn qualification_number(&self) -> Option<&str> {
self.qualification_number.as_deref()
}
pub fn initiation_date(&self) -> Option<&str> {
self.initiation_date.as_deref()
}
pub fn qualification_date(&self) -> Option<&str> {
self.qualification_date.as_deref()
}
}
#[derive(Clone, Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
pub struct StudentTeachingPluralMajorInformation {
major_name: Option<String>,
qualification_number: Option<String>,
qualification_date: Option<String>,
}
impl<'a> StudentTeachingPluralMajorInformation {
define_elements! {
DOUBLE_OTYPE: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.TC_DEFAULT_DOUBLE_OTYPE";
DOUBLE_QUAL_NUM: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.TC_DEFAULT_DOUBLE_QUAL_NUM";
DOUBLEL_DT: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.TC_DEFAULT_DOUBLEL_DT";
}
pub(crate) fn with_parser(
parser: &'a ElementParser,
) -> Result<StudentTeachingPluralMajorInformation, WebDynproError> {
Ok(Self {
major_name: parser
.read(InputFieldValueCommand::new(Self::DOUBLE_OTYPE))
.ok(),
qualification_number: parser
.read(InputFieldValueCommand::new(Self::DOUBLE_QUAL_NUM))
.ok(),
qualification_date: parser
.read(InputFieldValueCommand::new(Self::DOUBLEL_DT))
.ok(),
})
}
pub fn major_name(&self) -> Option<&str> {
self.major_name.as_deref()
}
pub fn qualification_number(&self) -> Option<&str> {
self.qualification_number.as_deref()
}
pub fn qualification_date(&self) -> Option<&str> {
self.qualification_date.as_deref()
}
}
#[derive(Clone, Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
pub struct StudentLifelongInformation {
apply_date: Option<String>,
lifelong_type: Option<String>,
qualification_number: Option<String>,
qualification_date: Option<String>,
}
impl<'a> StudentLifelongInformation {
define_elements! {
CONEDU_APP_DT: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.TC_DEFAULT_CONEDU_APP_DT";
CONEDU_TYPE: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.TC_DEFAULT_CONEDU_TYPE";
CONEDU_QUAL_NUM: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.TC_DEFAULT_CONEDU_QUAL_NUM";
CONEDU_QUAL_DT: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.TC_DEFAULT_CONEDU_QUAL_DT";
}
pub(crate) fn with_parser(
parser: &'a ElementParser,
) -> Result<StudentLifelongInformation, WebDynproError> {
Ok(Self {
apply_date: parser
.read(InputFieldValueCommand::new(Self::CONEDU_APP_DT))
.ok(),
lifelong_type: parser
.read(InputFieldValueCommand::new(Self::CONEDU_TYPE))
.ok(),
qualification_number: parser
.read(InputFieldValueCommand::new(Self::CONEDU_QUAL_NUM))
.ok(),
qualification_date: parser
.read(InputFieldValueCommand::new(Self::CONEDU_QUAL_DT))
.ok(),
})
}
pub fn apply_date(&self) -> Option<&str> {
self.apply_date.as_deref()
}
pub fn lifelong_type(&self) -> Option<&str> {
self.lifelong_type.as_deref()
}
pub fn qualification_number(&self) -> Option<&str> {
self.qualification_number.as_deref()
}
pub fn qualification_date(&self) -> Option<&str> {
self.qualification_date.as_deref()
}
}
#[derive(Clone, Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
pub struct StudentForignStudyInformation {
approval_date: Option<String>,
authentication_number: Option<String>,
issue_date: Option<String>,
}
impl<'a> StudentForignStudyInformation {
define_elements! {
APPRODATE: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.APPRODATE";
AUTHEN_NO: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.AUTHEN_NO";
ISSUEDATE: InputField<'a> = "ZCMW1001.ID_0001:VIW_DEFAULT.ISSUEDATE";
}
pub(crate) fn with_parser(
parser: &'a ElementParser,
) -> Result<StudentForignStudyInformation, WebDynproError> {
Ok(Self {
approval_date: parser
.read(InputFieldValueCommand::new(Self::APPRODATE))
.ok(),
authentication_number: parser
.read(InputFieldValueCommand::new(Self::AUTHEN_NO))
.ok(),
issue_date: parser
.read(InputFieldValueCommand::new(Self::ISSUEDATE))
.ok(),
})
}
pub fn approval_date(&self) -> Option<&str> {
self.approval_date.as_deref()
}
pub fn authentication_number(&self) -> Option<&str> {
self.authentication_number.as_deref()
}
pub fn issue_date(&self) -> Option<&str> {
self.issue_date.as_deref()
}
}