EinsatzOnline/src/modules/member_management/controller/member_groups.rs

54 lines
1.8 KiB
Rust

use crate::database::controller::groups::get_group_member_count;
use crate::database::controller::roles::get_roles;
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::groups::GroupsModule;
use crate::modules::member_management::model::member::Member;
use rocket::http::Status;
use rocket::State;
use rocket_dyn_templates::Template;
pub fn render(settings: &State<Settings>, caller: Member) -> Result<Template, Status> {
if !caller.has_permission("modules.member_management.groups.view".to_string()) {
return Err(Status::Unauthorized);
}
let header = Header {
html_language: "de".to_string(),
site_title: "Gruppen".to_string(),
stylesheets: vec![Stylesheet {
path: "/css/errms.css".to_string(),
}],
};
let footer = Footer {
scripts: vec![Script {
path: "/js/member_management_groups.js".to_string(),
}, Script{ path: "/js/member_management_group_member_searchbar.js".to_string() }],
};
let mut sidebar = Sidebar::new(caller.clone());
sidebar.member_management.active = true;
let groups = match get_group_member_count(settings, caller.entity_id) {
Ok(groups) => groups,
Err(_) => return Err(Status::InternalServerError),
};
let roles = match get_roles(settings) {
Ok(roles) => roles,
Err(_) => return Err(Status::InternalServerError),
};
return Ok(Template::render(
"module_member_management_groups",
GroupsModule {
header,
footer,
sidebar,
caller_permissions: caller.permissions,
groups,
roles,
},
));
}