133 lines
4.5 KiB
Rust
133 lines
4.5 KiB
Rust
use crate::database::controller::addresses::get_addresses_for_entity_only_one_allowed;
|
|
use crate::database::controller::member_communication::get_member_communication;
|
|
use crate::database::controller::member_licenses::get_member_licenses;
|
|
use crate::database::controller::member_qualifications::get_qualifcation_categories;
|
|
use crate::helper::age_calculator::calculate_age;
|
|
use crate::helper::caller_permissions::get_permissions_for_context;
|
|
use crate::modules::member_management::model::login::Login;
|
|
use crate::helper::settings::Settings;
|
|
use crate::helper::sitebuilder::model::general::{Footer, Header, Script, Stylesheet};
|
|
use crate::helper::sitebuilder::model::sidebar::Sidebar;
|
|
use crate::modules::member_management::model::member::Member;
|
|
use crate::modules::member_management::model::member_module::MemberModuleProfile;
|
|
use rocket::http::Status;
|
|
use rocket::State;
|
|
|
|
use crate::database::controller::units_members::get_members_units;
|
|
use crate::database::controller::users::get_user_by_member;
|
|
use rocket_dyn_templates::Template;
|
|
|
|
pub fn handle_view(
|
|
settings: &State<Settings>,
|
|
member: Member,
|
|
) -> Result<Template, Status> {
|
|
let header = Header {
|
|
html_language: "de".to_string(),
|
|
site_title: "Mitgliedprofil".to_string(),
|
|
stylesheets: vec![Stylesheet {
|
|
path: "/css/errms.css".to_string(),
|
|
}],
|
|
};
|
|
let footer = Footer {
|
|
scripts: vec![
|
|
Script {
|
|
path: "/js/member_management_profile.js".to_string(),
|
|
},
|
|
],
|
|
};
|
|
let sidebar = Sidebar::new(member.clone());
|
|
|
|
let age = match member.date_of_birth {
|
|
Some(date) => Some(calculate_age(date)),
|
|
None => None,
|
|
};
|
|
|
|
let address = get_addresses_for_entity_only_one_allowed(settings, member.entity_id);
|
|
let licenses = get_member_licenses(settings, member.entity_id);
|
|
let qualification_categories = get_qualifcation_categories(settings, member.entity_id);
|
|
let communication_targets = get_member_communication(settings, member.entity_id);
|
|
let caller_permissions = get_permissions_for_context(settings, &member, &member);
|
|
let units = match get_members_units(settings, member.entity_id){
|
|
Ok(units) => units,
|
|
Err(_) => return Err(Status::InternalServerError)
|
|
};
|
|
|
|
let login = Login::from(get_user_by_member(settings, member.entity_id));
|
|
|
|
return Ok(Template::render(
|
|
"module_member_management_personal_profile",
|
|
MemberModuleProfile {
|
|
header,
|
|
footer,
|
|
member,
|
|
member_age: age,
|
|
address,
|
|
licenses,
|
|
qualification_categories,
|
|
communication_targets,
|
|
readonly: true,
|
|
sidebar,
|
|
caller_permissions,
|
|
units,
|
|
login
|
|
},
|
|
));
|
|
}
|
|
|
|
pub fn handle_edit(
|
|
settings: &State<Settings>,
|
|
member: Member,
|
|
) -> Result<Template, Status> {
|
|
let header = Header {
|
|
html_language: "de".to_string(),
|
|
site_title: "Mitgliedprofil".to_string(),
|
|
stylesheets: vec![Stylesheet {
|
|
path: "/css/errms.css".to_string(),
|
|
}],
|
|
};
|
|
let footer = Footer {
|
|
scripts: vec![
|
|
Script {
|
|
path: "/js/member_management_profile.js".to_string(),
|
|
},
|
|
],
|
|
};
|
|
let sidebar = Sidebar::new(member.clone());
|
|
|
|
let age = match member.date_of_birth {
|
|
Some(date) => Some(calculate_age(date)),
|
|
None => None,
|
|
};
|
|
|
|
let address = get_addresses_for_entity_only_one_allowed(settings, member.entity_id);
|
|
let licenses = get_member_licenses(settings, member.entity_id);
|
|
let qualification_categories = get_qualifcation_categories(settings, member.entity_id);
|
|
let communication_targets = get_member_communication(settings, member.entity_id);
|
|
let caller_permissions = get_permissions_for_context(settings, &member, &member);
|
|
|
|
let units = match get_members_units(settings, member.entity_id){
|
|
Ok(units) => units,
|
|
Err(_) => return Err(Status::InternalServerError)
|
|
};
|
|
|
|
let login = Login::from(get_user_by_member(settings, member.entity_id));
|
|
|
|
return Ok(Template::render(
|
|
"module_member_management_personal_profile",
|
|
MemberModuleProfile {
|
|
header,
|
|
footer,
|
|
member,
|
|
member_age: age,
|
|
address,
|
|
licenses,
|
|
qualification_categories,
|
|
communication_targets,
|
|
readonly: false,
|
|
sidebar,
|
|
caller_permissions,
|
|
units,
|
|
login
|
|
},
|
|
));
|
|
} |