EinsatzOnline/src/modules/event_billing/event_billing_list.rs

62 lines
1.9 KiB
Rust

use rocket::http::Status;
use rocket::State;
use rocket_dyn_templates::Template;
use crate::database::controller::groups::get_raw_groups;
use crate::helper::session_cookies::model::SessionCookie;
use crate::helper::sitebuilder::model::general::{Footer, Header, Script, Stylesheet};
use crate::helper::sitebuilder::model::sidebar::Sidebar;
use crate::modules::event_billing::event::EventBilling;
use crate::modules::event_management::eventlist::EventList;
use crate::Settings;
#[get("/portal/eb/list")]
pub fn event_billing_list(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_billing::VIEW.to_string(),
) {
return Err(Status::Forbidden);
}
let header = Header {
html_language: "de".to_string(),
site_title: "Übersicht Einsatzabrechnung".to_string(),
stylesheets: vec![Stylesheet {
path: "/css/errms.css".to_string(),
}],
};
let footer = Footer {
scripts: vec![Script {
path: "/js/eb_list.js".to_string(),
}, Script {
path: "/js/search2.js".to_string(),
},Script {
path: "/js/pagination.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_eb_list", eventlist))
}