liquid_feedback_frontend
diff app/main/survey/_action/participate.lua @ 1843:b01d9920371b
merge
author | jbe |
---|---|
date | Thu Feb 03 15:57:22 2022 +0100 (2022-02-03) |
parents | 2d4136357989 |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/app/main/survey/_action/participate.lua Thu Feb 03 15:57:22 2022 +0100 1.3 @@ -0,0 +1,63 @@ 1.4 +local skip_survey = param.get("skip_survey") 1.5 + 1.6 +local survey = Survey:get_open() 1.7 + 1.8 +local survey_member = SurveyMember:by_pk(survey.id, app.session.member_id) 1.9 + 1.10 +if survey_member and not skip_survey then 1.11 + return true 1.12 +end 1.13 + 1.14 +local secret_length = 24 1.15 +local secret_alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 1.16 +local secret_purposes = { "oauth", "_other" } 1.17 +for idx, purpose in ipairs(secret_purposes) do 1.18 + secret_purposes[purpose] = idx 1.19 +end 1.20 + 1.21 +local function random_string(length_multiplier) 1.22 + return multirand.string( 1.23 + secret_length * (length_multiplier or 1), 1.24 + secret_alphabet 1.25 + ) 1.26 +end 1.27 + 1.28 +if not survey_member then 1.29 + survey_member = SurveyMember:new() 1.30 + survey_member.survey_id = survey.id 1.31 + survey_member.member_id = app.session.member_id 1.32 +end 1.33 + 1.34 +if skip_survey then 1.35 + local answer_set = survey_member.answer_set 1.36 + if answer_set then 1.37 + survey_member.survey_answer_set_ident = nil 1.38 + survey_member:save() 1.39 + answer_set:destroy() 1.40 + end 1.41 + survey_member.rejected = 'now' 1.42 +else 1.43 + local answer_set = SurveyAnswerSet:new() 1.44 + answer_set.ident = random_string() 1.45 + answer_set.survey_id = survey.id 1.46 + local verification = Verification:new_selector() 1.47 + :add_where{ "verified_member_id = ?", app.session.member_id } 1.48 + :optional_object_mode() 1.49 + :exec() 1.50 + if verification then 1.51 + answer_set.data = verification.request_data 1.52 + answer_set.data.name = nil 1.53 + answer_set.data.email = nil 1.54 + end 1.55 + answer_set:save() 1.56 + survey_member.survey_answer_set_ident = answer_set.ident 1.57 +end 1.58 + 1.59 +survey_member:save() 1.60 + 1.61 +if skip_survey then 1.62 + return "skip_survey" 1.63 +end 1.64 + 1.65 +return true 1.66 +