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 +

Impressum / About Us