85 lines
2.8 KiB
Rust
85 lines
2.8 KiB
Rust
use crate::database::controller::member_qualifications::{
|
|
add_qualification_for_member, get_qualifications_for_category,
|
|
remove_qualification_for_member,
|
|
};
|
|
use crate::helper::session_cookies::model::SessionCookie;
|
|
use crate::helper::settings::Settings;
|
|
use crate::modules::api::member_management::controller::member_qualifications::{
|
|
parse_category_id, parse_qualification_id,
|
|
};
|
|
use crate::modules::api::member_management::controller::parser::{parse_member_cookie, parse_uuid_string};
|
|
use crate::modules::api::model::api_outcome::{ApiError, ApiErrorWrapper};
|
|
use crate::modules::member_management::model::qualifications::{Qualification};
|
|
use rocket::State;
|
|
use rocket::serde::json::Json;
|
|
|
|
#[get(
|
|
"/api/member_management/get_qualifications_for_category?<category_id>",
|
|
format = "json"
|
|
)]
|
|
pub fn api_member_get_qualifications_for_category(
|
|
cookie: SessionCookie,
|
|
settings: &State<Settings>,
|
|
category_id: String,
|
|
) -> Result<Json<Vec<Qualification>>, Json<ApiErrorWrapper>> {
|
|
//TODO: Check permissions!
|
|
let _member = parse_member_cookie(cookie.member)?;
|
|
let category_id = parse_category_id(category_id)?;
|
|
|
|
//TODO: Proper error handling/display
|
|
let categories = get_qualifications_for_category(settings, category_id);
|
|
Ok(Json(categories))
|
|
}
|
|
|
|
#[put(
|
|
"/api/member_management/remove_qualification?<member_id>&<qualification_id>",
|
|
format = "json"
|
|
)]
|
|
pub fn api_member_remove_qualification(
|
|
_cookie: SessionCookie,
|
|
settings: &State<Settings>,
|
|
member_id: String,
|
|
qualification_id: String,
|
|
) -> Result<(), Json<ApiErrorWrapper>> {
|
|
//let member = parse_member_cookie(cookie.member)?;
|
|
let member_id = parse_uuid_string(member_id)?;
|
|
let qualification_id = parse_qualification_id(qualification_id)?;
|
|
|
|
match remove_qualification_for_member(settings, member_id, qualification_id) {
|
|
Ok(_) => Ok(()),
|
|
Err(_) => {
|
|
return Err(Json(
|
|
ApiError::new(500, "Datenbankfehler aufgetreten".to_string()).to_wrapper(),
|
|
))
|
|
}
|
|
}
|
|
|
|
//TODO: check permissions
|
|
}
|
|
|
|
#[put(
|
|
"/api/member_management/add_qualification?<member_id>&<qualification_id>",
|
|
format = "json"
|
|
)]
|
|
pub fn api_member_add_qualification(
|
|
_cookie: SessionCookie,
|
|
settings: &State<Settings>,
|
|
member_id: String,
|
|
qualification_id: String,
|
|
) -> Result<(), Json<ApiErrorWrapper>> {
|
|
//let member = parse_member_cookie(cookie.member)?;
|
|
let member_id = parse_uuid_string(member_id)?;
|
|
let qualification_id = parse_qualification_id(qualification_id)?;
|
|
|
|
match add_qualification_for_member(settings, member_id, qualification_id) {
|
|
Ok(_) => Ok(()),
|
|
Err(_) => {
|
|
return Err(Json(
|
|
ApiError::new(500, "Datenbankfehler aufgetreten".to_string()).to_wrapper(),
|
|
))
|
|
}
|
|
}
|
|
|
|
//TODO: check permissions
|
|
}
|