Refactoring
This commit is contained in:
parent
9cba9d3ce7
commit
4c65ed47e4
|
@ -9,6 +9,7 @@ $( document ).ready(function() {
|
||||||
$(".qualification_delete").on("click", QualificationList.delete_qualification);
|
$(".qualification_delete").on("click", QualificationList.delete_qualification);
|
||||||
$( "#add_qualification_category" ).change(QualificationList.get_qualification_for_category);
|
$( "#add_qualification_category" ).change(QualificationList.get_qualification_for_category);
|
||||||
$("#add_qualification_submit").on("click", QualificationList.add_qualification);
|
$("#add_qualification_submit").on("click", QualificationList.add_qualification);
|
||||||
|
$(".drive_permission_update").on("click", DrivingPermissionModule.update);
|
||||||
});
|
});
|
||||||
|
|
||||||
QualificationList = ( function() {
|
QualificationList = ( function() {
|
||||||
|
@ -97,3 +98,53 @@ QualificationList = ( function() {
|
||||||
add_qualification: add_qualification
|
add_qualification: add_qualification
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
DrivingPermissionModule = ( function() {
|
||||||
|
var update = function(){
|
||||||
|
var permission_name = $(this).data("permission-name");
|
||||||
|
var permission_level = $(this).data("permission-level");
|
||||||
|
|
||||||
|
if(permission_name === undefined || permission_level === undefined){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(permission_level){
|
||||||
|
case "none":
|
||||||
|
update_to_license(permission_name);
|
||||||
|
break;
|
||||||
|
case "license":
|
||||||
|
update_to_drive_permission(permission_name);
|
||||||
|
break;
|
||||||
|
case "drive_permission":
|
||||||
|
update_to_none(permission_name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var update_to_license = function(permission_name){
|
||||||
|
if(permission_name === undefined){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$.ajax({
|
||||||
|
url: '/api/member_management/add_driving_license?member_id='+member_id+'&license_name='+permission_name,
|
||||||
|
type: 'PUT',
|
||||||
|
contentType: 'application/json',
|
||||||
|
success: function(data) {
|
||||||
|
$(this).hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var update_to_drive_permission = function(permission_name){
|
||||||
|
if(permission_name === undefined){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var update_to_none = function(permission_name){
|
||||||
|
if(permission_name === undefined){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return{
|
||||||
|
update: update,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)();
|
|
@ -218,7 +218,7 @@
|
||||||
<div class="card-header">Fahrberechtigungen & Führerscheine</div>
|
<div class="card-header">Fahrberechtigungen & Führerscheine</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
{{#each licenses}}
|
{{#each licenses}}
|
||||||
<button type="button" class="btn {{#if drive_permission}}btn-success{{else}}{{#if license}}btn-warning{{/if}}{{/if}}" data-toggle="tooltip" data-placement="bottom" title="{{category_description}}">{{category_name}}</button>
|
<button type="button" data-permission-name="{{category_name}}" data-permission-level="{{#if drive_permission}}drive_permission{{else}}{{#if license}}license{{else}}none{{/if}}{{/if}}" class="btn {{#if drive_permission}}btn-success{{else}}{{#if license}}btn-warning{{/if}}{{/if}} drive_permission_update" data-toggle="tooltip" data-placement="bottom" title="{{category_description}}">{{category_name}}</button>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
|
@ -1 +1,35 @@
|
||||||
|
use crate::modules::api::model::ApiError::ApiError;
|
||||||
|
use rocket_contrib::json::Json;
|
||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
pub fn parse_qualification_id(qualification_id: String) -> Result<uuid::Uuid, Json<ApiError>> {
|
||||||
|
match uuid::Uuid::from_str(&qualification_id) {
|
||||||
|
Ok(id) => Ok(id),
|
||||||
|
Err(e) => {
|
||||||
|
warn!(
|
||||||
|
"Couldn't parse qualification uuid send via API: {} {}",
|
||||||
|
qualification_id, e
|
||||||
|
);
|
||||||
|
Err(Json(ApiError {
|
||||||
|
code: "400-qualification-uuid-invalid".to_string(),
|
||||||
|
description: "qualification UUID invalid".to_string(),
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn parse_category_id(category_id: String) -> Result<uuid::Uuid, Json<ApiError>> {
|
||||||
|
match uuid::Uuid::from_str(&category_id) {
|
||||||
|
Ok(id) => Ok(id),
|
||||||
|
Err(e) => {
|
||||||
|
warn!(
|
||||||
|
"Couldn't parse category_id send via API: {} {}",
|
||||||
|
category_id, e
|
||||||
|
);
|
||||||
|
Err(Json(ApiError {
|
||||||
|
code: "400-category_id-invalid".to_string(),
|
||||||
|
description: "category id invalid".to_string(),
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
|
pub mod member_driving_permissions;
|
||||||
pub mod member_qualifications;
|
pub mod member_qualifications;
|
||||||
|
pub mod parser;
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
use crate::modules::api::model::ApiError::ApiError;
|
||||||
|
use crate::modules::member_management::model::member::Member;
|
||||||
|
use rocket_contrib::json::Json;
|
||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
pub fn parse_member_id(member_id: String) -> Result<uuid::Uuid, Json<ApiError>> {
|
||||||
|
match uuid::Uuid::from_str(&member_id) {
|
||||||
|
Ok(id) => Ok(id),
|
||||||
|
Err(e) => {
|
||||||
|
warn!(
|
||||||
|
"Couldn't parse member uuid send via API: {} {}",
|
||||||
|
member_id, e
|
||||||
|
);
|
||||||
|
Err(Json(ApiError {
|
||||||
|
code: "400-member-uuid-invalid".to_string(),
|
||||||
|
description: "Member UUID invalid".to_string(),
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn parse_member_cookie(member: Option<Member>) -> Result<Member, Json<ApiError>> {
|
||||||
|
match member {
|
||||||
|
//Unwraps member from cookie or send user to login if no member specified (user skipped member selection)
|
||||||
|
Some(member) => Ok(member),
|
||||||
|
None => Err(Json(ApiError {
|
||||||
|
code: "403-member-selection-skipped".to_string(),
|
||||||
|
description: "Member Selection skipped".to_string(),
|
||||||
|
})),
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
use crate::helper::session_cookies::model::SessionCookie;
|
||||||
|
use crate::helper::settings::Settings;
|
||||||
|
use crate::modules::api::member_management::controller::parser::{
|
||||||
|
parse_member_cookie, parse_member_id,
|
||||||
|
};
|
||||||
|
use crate::modules::api::model::ApiError::ApiError;
|
||||||
|
use rocket::State;
|
||||||
|
use rocket_contrib::json::Json;
|
||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
#[put(
|
||||||
|
"/api/member_management/add_driving_license?<member_id>&<license_name>",
|
||||||
|
format = "json"
|
||||||
|
)]
|
||||||
|
pub fn api_member_add_qualification(
|
||||||
|
cookie: SessionCookie,
|
||||||
|
settings: State<Settings>,
|
||||||
|
member_id: String,
|
||||||
|
license_name: String,
|
||||||
|
) -> Result<(), Json<ApiError>> {
|
||||||
|
let member = parse_member_cookie(cookie.member)?;
|
||||||
|
let member_id = parse_member_id(member_id)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
|
@ -4,6 +4,12 @@ use crate::database::controller::member_qualifications::{
|
||||||
};
|
};
|
||||||
use crate::helper::session_cookies::model::SessionCookie;
|
use crate::helper::session_cookies::model::SessionCookie;
|
||||||
use crate::helper::settings::Settings;
|
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_member_id,
|
||||||
|
};
|
||||||
use crate::modules::api::model::ApiError::ApiError;
|
use crate::modules::api::model::ApiError::ApiError;
|
||||||
use crate::modules::member_management::model::qualifications::{
|
use crate::modules::member_management::model::qualifications::{
|
||||||
Qualification, QualificationCategory, QualificationList,
|
Qualification, QualificationCategory, QualificationList,
|
||||||
|
@ -24,31 +30,10 @@ pub fn api_member_get_qualifications(
|
||||||
member_id: String,
|
member_id: String,
|
||||||
) -> Result<Json<QualificationList>, Json<ApiError>> {
|
) -> Result<Json<QualificationList>, Json<ApiError>> {
|
||||||
//TODO: Check permissions!
|
//TODO: Check permissions!
|
||||||
let member = match cookie.member {
|
let member = parse_member_cookie(cookie.member)?;
|
||||||
//Unwraps member from cookie or send user to login if no member specified (user skipped member selection)
|
let member_id = parse_member_id(member_id)?;
|
||||||
Some(member) => member,
|
|
||||||
None => {
|
|
||||||
return Err(Json(ApiError {
|
|
||||||
code: "403".to_string(),
|
|
||||||
description: "Member Selection skipped".to_string(),
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let member_id = match uuid::Uuid::from_str(&member_id) {
|
|
||||||
Ok(id) => id,
|
|
||||||
Err(e) => {
|
|
||||||
warn!(
|
|
||||||
"Couldn't parse member uuid send via API: {} {}",
|
|
||||||
member_id, e
|
|
||||||
);
|
|
||||||
return Err(Json(ApiError {
|
|
||||||
code: "400-member-uuid-invalid".to_string(),
|
|
||||||
description: "Member UUID invalid".to_string(),
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
//TODO: Proper error handling/display
|
||||||
let categories = get_qualifcation_categories(&settings, member_id);
|
let categories = get_qualifcation_categories(&settings, member_id);
|
||||||
Ok(Json(QualificationList { categories }))
|
Ok(Json(QualificationList { categories }))
|
||||||
}
|
}
|
||||||
|
@ -63,31 +48,10 @@ pub fn api_member_get_qualifications_for_category(
|
||||||
category_id: String,
|
category_id: String,
|
||||||
) -> Result<Json<Vec<Qualification>>, Json<ApiError>> {
|
) -> Result<Json<Vec<Qualification>>, Json<ApiError>> {
|
||||||
//TODO: Check permissions!
|
//TODO: Check permissions!
|
||||||
let member = match cookie.member {
|
let member = parse_member_cookie(cookie.member)?;
|
||||||
//Unwraps member from cookie or send user to login if no member specified (user skipped member selection)
|
let category_id = parse_category_id(category_id)?;
|
||||||
Some(member) => member,
|
|
||||||
None => {
|
|
||||||
return Err(Json(ApiError {
|
|
||||||
code: "403".to_string(),
|
|
||||||
description: "Member Selection skipped".to_string(),
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let category_id = match uuid::Uuid::from_str(&category_id) {
|
|
||||||
Ok(id) => id,
|
|
||||||
Err(e) => {
|
|
||||||
warn!(
|
|
||||||
"Couldn't parse category_id send via API: {} {}",
|
|
||||||
category_id, e
|
|
||||||
);
|
|
||||||
return Err(Json(ApiError {
|
|
||||||
code: "400-category_id-invalid".to_string(),
|
|
||||||
description: "category id invalid".to_string(),
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
//TODO: Proper error handling/display
|
||||||
let categories = get_qualifications_for_category(&settings, category_id);
|
let categories = get_qualifications_for_category(&settings, category_id);
|
||||||
Ok(Json(categories))
|
Ok(Json(categories))
|
||||||
}
|
}
|
||||||
|
@ -102,44 +66,9 @@ pub fn api_member_remove_qualification(
|
||||||
member_id: String,
|
member_id: String,
|
||||||
qualification_id: String,
|
qualification_id: String,
|
||||||
) -> Result<(), Json<ApiError>> {
|
) -> Result<(), Json<ApiError>> {
|
||||||
let member = match cookie.member {
|
let member = parse_member_cookie(cookie.member)?;
|
||||||
//Unwraps member from cookie or send user to login if no member specified (user skipped member selection)
|
let member_id = parse_member_id(member_id)?;
|
||||||
Some(member) => member,
|
let qualification_id = parse_qualification_id(qualification_id)?;
|
||||||
None => {
|
|
||||||
return Err(Json(ApiError {
|
|
||||||
code: "403-member-selection-skipped".to_string(),
|
|
||||||
description: "Member Selection skipped".to_string(),
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let member_id = match uuid::Uuid::from_str(&member_id) {
|
|
||||||
Ok(id) => id,
|
|
||||||
Err(e) => {
|
|
||||||
warn!(
|
|
||||||
"Couldn't parse member uuid send via API: {} {}",
|
|
||||||
member_id, e
|
|
||||||
);
|
|
||||||
return Err(Json(ApiError {
|
|
||||||
code: "400-member-uuid-invalid".to_string(),
|
|
||||||
description: "Member UUID invalid".to_string(),
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let qualification_id = match uuid::Uuid::from_str(&qualification_id) {
|
|
||||||
Ok(id) => id,
|
|
||||||
Err(e) => {
|
|
||||||
warn!(
|
|
||||||
"Couldn't parse qualification uuid send via API: {} {}",
|
|
||||||
qualification_id, e
|
|
||||||
);
|
|
||||||
return Err(Json(ApiError {
|
|
||||||
code: "400-qualification-uuid-invalid".to_string(),
|
|
||||||
description: "qualification UUID invalid".to_string(),
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
match remove_qualification_for_member(&settings, member_id, qualification_id) {
|
match remove_qualification_for_member(&settings, member_id, qualification_id) {
|
||||||
Ok(_) => Ok(()),
|
Ok(_) => Ok(()),
|
||||||
|
@ -164,44 +93,9 @@ pub fn api_member_add_qualification(
|
||||||
member_id: String,
|
member_id: String,
|
||||||
qualification_id: String,
|
qualification_id: String,
|
||||||
) -> Result<(), Json<ApiError>> {
|
) -> Result<(), Json<ApiError>> {
|
||||||
let member = match cookie.member {
|
let member = parse_member_cookie(cookie.member)?;
|
||||||
//Unwraps member from cookie or send user to login if no member specified (user skipped member selection)
|
let member_id = parse_member_id(member_id)?;
|
||||||
Some(member) => member,
|
let qualification_id = parse_qualification_id(qualification_id)?;
|
||||||
None => {
|
|
||||||
return Err(Json(ApiError {
|
|
||||||
code: "403-member-selection-skipped".to_string(),
|
|
||||||
description: "Member Selection skipped".to_string(),
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let member_id = match uuid::Uuid::from_str(&member_id) {
|
|
||||||
Ok(id) => id,
|
|
||||||
Err(e) => {
|
|
||||||
warn!(
|
|
||||||
"Couldn't parse member uuid send via API: {} {}",
|
|
||||||
member_id, e
|
|
||||||
);
|
|
||||||
return Err(Json(ApiError {
|
|
||||||
code: "400-member-uuid-invalid".to_string(),
|
|
||||||
description: "Member UUID invalid".to_string(),
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let qualification_id = match uuid::Uuid::from_str(&qualification_id) {
|
|
||||||
Ok(id) => id,
|
|
||||||
Err(e) => {
|
|
||||||
warn!(
|
|
||||||
"Couldn't parse qualification uuid send via API: {} {}",
|
|
||||||
qualification_id, e
|
|
||||||
);
|
|
||||||
return Err(Json(ApiError {
|
|
||||||
code: "400-qualification-uuid-invalid".to_string(),
|
|
||||||
description: "qualification UUID invalid".to_string(),
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
match add_qualification_for_member(&settings, member_id, qualification_id) {
|
match add_qualification_for_member(&settings, member_id, qualification_id) {
|
||||||
Ok(_) => Ok(()),
|
Ok(_) => Ok(()),
|
||||||
|
@ -215,33 +109,3 @@ pub fn api_member_add_qualification(
|
||||||
|
|
||||||
//TODO: check permissions
|
//TODO: check permissions
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
use crate::modules::member_management::model::qualifications::{
|
|
||||||
Qualification, QualificationCategory,
|
|
||||||
};
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
pub fn test_qualifiction() {
|
|
||||||
let list = QualificationList {
|
|
||||||
categories: vec![QualificationCategory {
|
|
||||||
id: Default::default(),
|
|
||||||
name: "Test".to_string(),
|
|
||||||
description: None,
|
|
||||||
qualifications: vec![Qualification {
|
|
||||||
id: Default::default(),
|
|
||||||
name: "Test2".to_string(),
|
|
||||||
description: None,
|
|
||||||
}],
|
|
||||||
visible: false,
|
|
||||||
}],
|
|
||||||
};
|
|
||||||
|
|
||||||
let j = serde_json::to_string(&list);
|
|
||||||
print!("{}", j.unwrap());
|
|
||||||
|
|
||||||
assert_eq!("test", "test");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
|
pub mod member_driving_permissions;
|
||||||
pub mod member_qualifications;
|
pub mod member_qualifications;
|
||||||
|
|
Loading…
Reference in New Issue