diff --git a/backend/src/app.py b/backend/src/app.py index 4d73f8e..49b4da4 100644 --- a/backend/src/app.py +++ b/backend/src/app.py @@ -172,18 +172,66 @@ def survey(): # get data from the survey and write it to the database + # placeholder if the survey is valid + is_survey_valid = True + + # Check age if it's numeric age = req.get('age', None) + if not age.isnumeric(): + is_survey_valid = False + + # check gender possibilites gender = req.get('gender', None) + possible_genders = [ + "male", + "female", + "divers", + "sex_na" + ] + if gender not in possible_genders: + is_survey_valid = False + + # check education possibilities education = req.get('education', None) + possible_education = [ + "edu_lehre", + "edu_gymnasium", + "edu_berufsmatura", + "edu_bachelor", + "edu_Master", + "edu_na" + ] + if education not in possible_education: + is_survey_valid = False + + # check skills values skills = req.get('skills', None) - user_db = User.query.filter_by(id=id_req).first() - user_db.age = age - user_db.gender = gender - user_db.education = education - user_db.skills = skills - db.session.commit() - ret = {'message': 'Umfrage freigestellt'} - return ret, 200 + possible_skills = [ + "skills_sehr_gut", + "skills_gut", + "skills_mittel", + "skills_nicht_so_good", + "skills_garnicht", + "skills_na" + ] + + if skills not in possible_skills: + is_survey_valid = False + + if is_survey_valid: + user_db = User.query.filter_by(id=id_req).first() + user_db.age = age + user_db.gender = gender + user_db.education = education + user_db.skills = skills + db.session.commit() + print(req) + ret = {'message': 'Vielen Dank für das Ausfüllen der Umfrage.'} + return ret, 200 + else: + ret = { + 'message': 'Einige der Felder stimmen nicht überein und müssen angepasst werden.'} + return ret, 400 @app.route('/time') diff --git a/frontend/src/components/pages/Umfrage.js b/frontend/src/components/pages/Umfrage.js index 26aac1a..fc83439 100644 --- a/frontend/src/components/pages/Umfrage.js +++ b/frontend/src/components/pages/Umfrage.js @@ -21,6 +21,10 @@ export default function Umfrage() { const [educationErrorMessage, setEducationErrorMessage] = useState(""); const [skillsErrorMessage, setSkillsErrorMessage] = useState(""); + const [backendErrorMessage, setBackendErrorMessage] = useState(""); + const [backendSuccessMessage, setBackendSuccessMessage] = useState(""); + const [isSurveyValidBackend, setIsSurveyValidBackend] = useState(""); + /* boolean if the values are ok */ const [isAgeOk, setIsAgeOk] = useState(""); const [isGenderOk, setIsGenderOk] = useState(""); @@ -71,10 +75,23 @@ export default function Umfrage() { setIsSkillsOk(false); } + setIsSurveyValid(true); if (isSurveyValid === true) { authFetch("/api/protected/umfrage", { method: "post", body: JSON.stringify(opts), + }).then((response) => { + if (response.status === 200) { + response.json().then((r) => { + setBackendSuccessMessage(r.message); + setIsSurveyValidBackend(true); + }); + } else { + response.json().then((r) => { + setBackendErrorMessage(r.message); + setIsSurveyValidBackend(false); + }); + } }); } }; @@ -135,7 +152,7 @@ export default function Umfrage() { - + @@ -154,12 +171,12 @@ export default function Umfrage() { - - - - - - + + + + + + {!isEducationOk && } @@ -178,12 +195,12 @@ export default function Umfrage() { - - - - - - + + + + + + {!isSkillsOk && } @@ -194,6 +211,11 @@ export default function Umfrage() { onClick={onSubmitClick} /> + {!isSurveyValidBackend ? ( + + ) : ( +

{backendSuccessMessage}

+ )}