liquid_feedback_frontend
annotate app/main/survey/_action/participate.lua @ 1827:a5e1de39e19a
Jump to member list after adding member as a contact
| author | bsw | 
|---|---|
| date | Thu Feb 03 12:05:42 2022 +0100 (2022-02-03) | 
| parents | 2d4136357989 | 
| children | 
| rev | line source | 
|---|---|
| bsw@1735 | 1 local skip_survey = param.get("skip_survey") | 
| bsw@1735 | 2 | 
| bsw@1735 | 3 local survey = Survey:get_open() | 
| bsw@1735 | 4 | 
| bsw@1735 | 5 local survey_member = SurveyMember:by_pk(survey.id, app.session.member_id) | 
| bsw@1735 | 6 | 
| bsw@1735 | 7 if survey_member and not skip_survey then | 
| bsw@1735 | 8 return true | 
| bsw@1735 | 9 end | 
| bsw@1735 | 10 | 
| bsw@1735 | 11 local secret_length = 24 | 
| bsw@1735 | 12 local secret_alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' | 
| bsw@1735 | 13 local secret_purposes = { "oauth", "_other" } | 
| bsw@1735 | 14 for idx, purpose in ipairs(secret_purposes) do | 
| bsw@1735 | 15 secret_purposes[purpose] = idx | 
| bsw@1735 | 16 end | 
| bsw@1735 | 17 | 
| bsw@1735 | 18 local function random_string(length_multiplier) | 
| bsw@1735 | 19 return multirand.string( | 
| bsw@1735 | 20 secret_length * (length_multiplier or 1), | 
| bsw@1735 | 21 secret_alphabet | 
| bsw@1735 | 22 ) | 
| bsw@1735 | 23 end | 
| bsw@1735 | 24 | 
| bsw@1735 | 25 if not survey_member then | 
| bsw@1735 | 26 survey_member = SurveyMember:new() | 
| bsw@1735 | 27 survey_member.survey_id = survey.id | 
| bsw@1735 | 28 survey_member.member_id = app.session.member_id | 
| bsw@1735 | 29 end | 
| bsw@1735 | 30 | 
| bsw@1735 | 31 if skip_survey then | 
| bsw@1735 | 32 local answer_set = survey_member.answer_set | 
| bsw@1735 | 33 if answer_set then | 
| bsw@1735 | 34 survey_member.survey_answer_set_ident = nil | 
| bsw@1735 | 35 survey_member:save() | 
| bsw@1735 | 36 answer_set:destroy() | 
| bsw@1735 | 37 end | 
| bsw@1735 | 38 survey_member.rejected = 'now' | 
| bsw@1735 | 39 else | 
| bsw@1735 | 40 local answer_set = SurveyAnswerSet:new() | 
| bsw@1735 | 41 answer_set.ident = random_string() | 
| bsw@1735 | 42 answer_set.survey_id = survey.id | 
| bsw@1818 | 43 local verification = Verification:new_selector() | 
| bsw@1818 | 44 :add_where{ "verified_member_id = ?", app.session.member_id } | 
| bsw@1818 | 45 :optional_object_mode() | 
| bsw@1818 | 46 :exec() | 
| bsw@1818 | 47 if verification then | 
| bsw@1818 | 48 answer_set.data = verification.request_data | 
| bsw@1818 | 49 answer_set.data.name = nil | 
| bsw@1818 | 50 answer_set.data.email = nil | 
| bsw@1818 | 51 end | 
| bsw@1735 | 52 answer_set:save() | 
| bsw@1735 | 53 survey_member.survey_answer_set_ident = answer_set.ident | 
| bsw@1735 | 54 end | 
| bsw@1735 | 55 | 
| bsw@1735 | 56 survey_member:save() | 
| bsw@1735 | 57 | 
| bsw@1735 | 58 if skip_survey then | 
| bsw@1735 | 59 return "skip_survey" | 
| bsw@1735 | 60 end | 
| bsw@1735 | 61 | 
| bsw@1735 | 62 return true | 
| bsw@1735 | 63 |