EinsatzOnline/src/modules/api/member_management/view/member_qualifications.rs

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
}