75 lines
2.1 KiB
Rust
75 lines
2.1 KiB
Rust
use crate::helper::session_cookies::model::SessionCookie;
|
|
use crate::helper::settings::Settings;
|
|
use rocket::http::Status;
|
|
use rocket::State;
|
|
|
|
use crate::helper::sitebuilder::model::general::{Header, Footer, Stylesheet, Script};
|
|
use crate::helper::sitebuilder::model::sidebar::Sidebar;
|
|
use crate::database::model::groups::RawGroup;
|
|
use crate::database::controller::groups::get_raw_groups;
|
|
use rocket_dyn_templates::Template;
|
|
|
|
#[derive(Serialize)]
|
|
pub struct EventTemplates {
|
|
pub header: Header,
|
|
pub footer: Footer,
|
|
pub sidebar: Sidebar,
|
|
pub caller: uuid::Uuid,
|
|
}
|
|
|
|
#[derive(Serialize)]
|
|
pub struct EventList {
|
|
pub header: Header,
|
|
pub footer: Footer,
|
|
pub sidebar: Sidebar,
|
|
pub caller: uuid::Uuid,
|
|
pub groups: Vec<RawGroup>,
|
|
}
|
|
|
|
#[get("/portal/em/list")]
|
|
pub fn eventlist(cookie: SessionCookie, settings: &State<Settings>) -> Result<Template, Status> {
|
|
let member = match cookie.member {
|
|
//Unwraps member from cookie or send user to login if no member specified (user skipped member selection)
|
|
Some(member) => member,
|
|
None => return Err(Status::Unauthorized),
|
|
};
|
|
|
|
if !member.has_permission(
|
|
crate::permissions::modules::event_management::events::VIEW.to_string(),
|
|
) {
|
|
return Err(Status::Forbidden);
|
|
}
|
|
|
|
let header = Header {
|
|
html_language: "de".to_string(),
|
|
site_title: "Einsatzkartei".to_string(),
|
|
stylesheets: vec![Stylesheet {
|
|
path: "/css/errms.css".to_string(),
|
|
}],
|
|
};
|
|
let footer = Footer {
|
|
scripts: vec![Script {
|
|
path: "/js/em_eventlist.js".to_string(),
|
|
}, Script {
|
|
path: "/js/mini_searchbar.js".to_string(),
|
|
}],
|
|
};
|
|
let mut sidebar = Sidebar::new(member.clone());
|
|
sidebar.event_management.active = true;
|
|
|
|
let groups = match get_raw_groups(settings){
|
|
Ok(groups) => groups,
|
|
Err(e) => return Err(Status::InternalServerError)
|
|
};
|
|
|
|
let eventlist = EventList {
|
|
header,
|
|
footer,
|
|
sidebar,
|
|
caller: member.entity_id,
|
|
groups
|
|
};
|
|
|
|
Ok(Template::render("module_em_eventlist", eventlist))
|
|
}
|