Refactoring
This commit is contained in:
parent
9cba9d3ce7
commit
4c65ed47e4
|
@ -9,6 +9,7 @@ $( document ).ready(function() {
|
|||
$(".qualification_delete").on("click", QualificationList.delete_qualification);
|
||||
$( "#add_qualification_category" ).change(QualificationList.get_qualification_for_category);
|
||||
$("#add_qualification_submit").on("click", QualificationList.add_qualification);
|
||||
$(".drive_permission_update").on("click", DrivingPermissionModule.update);
|
||||
});
|
||||
|
||||
QualificationList = ( function() {
|
||||
|
@ -97,3 +98,53 @@ QualificationList = ( function() {
|
|||
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-body">
|
||||
{{#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}}
|
||||
|
||||
<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 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::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::member_management::model::qualifications::{
|
||||
Qualification, QualificationCategory, QualificationList,
|
||||
|
@ -24,31 +30,10 @@ pub fn api_member_get_qualifications(
|
|||
member_id: String,
|
||||
) -> Result<Json<QualificationList>, Json<ApiError>> {
|
||||
//TODO: Check permissions!
|
||||
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(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(),
|
||||
}));
|
||||
}
|
||||
};
|
||||
let member = parse_member_cookie(cookie.member)?;
|
||||
let member_id = parse_member_id(member_id)?;
|
||||
|
||||
//TODO: Proper error handling/display
|
||||
let categories = get_qualifcation_categories(&settings, member_id);
|
||||
Ok(Json(QualificationList { categories }))
|
||||
}
|
||||
|
@ -63,31 +48,10 @@ pub fn api_member_get_qualifications_for_category(
|
|||
category_id: String,
|
||||
) -> Result<Json<Vec<Qualification>>, Json<ApiError>> {
|
||||
//TODO: Check permissions!
|
||||
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(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(),
|
||||
}));
|
||||
}
|
||||
};
|
||||
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))
|
||||
}
|
||||
|
@ -102,44 +66,9 @@ pub fn api_member_remove_qualification(
|
|||
member_id: String,
|
||||
qualification_id: String,
|
||||
) -> Result<(), Json<ApiError>> {
|
||||
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(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(),
|
||||
}));
|
||||
}
|
||||
};
|
||||
let member = parse_member_cookie(cookie.member)?;
|
||||
let member_id = parse_member_id(member_id)?;
|
||||
let qualification_id = parse_qualification_id(qualification_id)?;
|
||||
|
||||
match remove_qualification_for_member(&settings, member_id, qualification_id) {
|
||||
Ok(_) => Ok(()),
|
||||
|
@ -164,44 +93,9 @@ pub fn api_member_add_qualification(
|
|||
member_id: String,
|
||||
qualification_id: String,
|
||||
) -> Result<(), Json<ApiError>> {
|
||||
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(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(),
|
||||
}));
|
||||
}
|
||||
};
|
||||
let member = parse_member_cookie(cookie.member)?;
|
||||
let member_id = parse_member_id(member_id)?;
|
||||
let qualification_id = parse_qualification_id(qualification_id)?;
|
||||
|
||||
match add_qualification_for_member(&settings, member_id, qualification_id) {
|
||||
Ok(_) => Ok(()),
|
||||
|
@ -215,33 +109,3 @@ pub fn api_member_add_qualification(
|
|||
|
||||
//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;
|
||||
|
|
Loading…
Reference in New Issue