liquid_feedback_frontend

annotate app/main/registration/_action/update_vote.lua @ 1530:94d6843fdc94

Add language chooser to profile page
author bsw
date Mon Sep 21 18:44:25 2020 +0200 (2020-09-21)
parents 32cc544d5a5b
children
rev   line source
bsw/jbe@1309 1 if not app.session.member then
bsw/jbe@1309 2 return
bsw/jbe@1309 3 end
bsw/jbe@1309 4
bsw/jbe@1309 5 local cancel = param.get("cancel") and true or false
bsw/jbe@1309 6 if cancel then return true end
bsw/jbe@1309 7
bsw/jbe@1309 8 local issue = Issue:new_selector():add_where{ "id = ?", param.get("issue_id", atom.integer) }:for_share():single_object_mode():exec()
bsw/jbe@1309 9
bsw/jbe@1309 10
bsw/jbe@1309 11 if not app.session.member:has_voting_right_for_unit_id(issue.area.unit_id) then
bsw/jbe@1309 12 return execute.view { module = "index", view = "403" }
bsw/jbe@1309 13 end
bsw/jbe@1309 14
bsw/jbe@1309 15 if issue.state ~= "voting" and not issue.closed then
bsw/jbe@1309 16 slot.put_into("error", _"Voting has not started yet.")
bsw/jbe@1309 17 return false
bsw/jbe@1309 18 end
bsw/jbe@1309 19
bsw/jbe@1309 20 if issue.phase_finished or issue.closed and not update_comment then
bsw/jbe@1309 21 slot.put_into("error", _"This issue is already closed.")
bsw/jbe@1309 22 return false
bsw/jbe@1309 23 end
bsw/jbe@1309 24
bsw/jbe@1309 25 local direct_voter = DirectVoter:by_pk(issue.id, app.session.member_id)
bsw/jbe@1309 26
bsw/jbe@1309 27 if param.get("discard") then
bsw/jbe@1309 28 if direct_voter then
bsw/jbe@1309 29 direct_voter:destroy()
bsw/jbe@1309 30 end
bsw/jbe@1309 31 slot.put_into("notice", _"Your vote has been discarded. Delegation rules apply if set.")
bsw/jbe@1309 32 return
bsw/jbe@1309 33 end
bsw/jbe@1309 34
bsw/jbe@1309 35 local initiatives = issue:get_reference_selector("initiatives")
bsw/jbe@1309 36 :add_where("initiative.admitted")
bsw/jbe@1309 37 :add_order_by("initiative.satisfied_supporter_count DESC")
bsw/jbe@1309 38 :exec()
bsw/jbe@1309 39
bsw/jbe@1309 40 local vote_for_initiative_id = tonumber(param.get("vote_for_initiative_id"))
bsw/jbe@1309 41
bsw/jbe@1309 42 local voted = 0
bsw/jbe@1309 43
bsw/jbe@1309 44 for i, initiative in ipairs(initiatives) do
bsw/jbe@1309 45 if initiative.id == vote_for_initiative_id then
bsw/jbe@1309 46 voted = voted + 1
bsw/jbe@1309 47 end
bsw/jbe@1309 48 end
bsw/jbe@1309 49
bsw/jbe@1309 50 if voted ~= 1 then
bsw/jbe@1309 51 slot.put_into("error", _"Please choose one project to vote for.")
bsw/jbe@1309 52 return false
bsw/jbe@1309 53 end
bsw/jbe@1309 54
bsw/jbe@1309 55 if not direct_voter then
bsw/jbe@1309 56 direct_voter = DirectVoter:new()
bsw/jbe@1309 57 direct_voter.issue_id = issue.id
bsw/jbe@1309 58 direct_voter.member_id = app.session.member_id
bsw/jbe@1309 59 direct_voter:save()
bsw/jbe@1309 60 else
bsw/jbe@1309 61 local votes = Vote:new_selector()
bsw/jbe@1309 62 :add_where{ "vote.issue_id = ?", issue.id }
bsw/jbe@1309 63 :add_where{ "vote.member_id = ?", app.session.member_id }
bsw/jbe@1309 64 :exec()
bsw/jbe@1309 65 for i, vote in ipairs(votes) do
bsw/jbe@1309 66 vote:destroy()
bsw/jbe@1309 67 end
bsw/jbe@1309 68 end
bsw/jbe@1309 69
bsw/jbe@1309 70 for i, initiative in ipairs(initiatives) do
bsw/jbe@1309 71 local vote = Vote:new()
bsw/jbe@1309 72 vote.issue_id = issue.id
bsw/jbe@1309 73 vote.initiative_id = initiative.id
bsw/jbe@1309 74 vote.member_id = app.session.member_id
bsw/jbe@1309 75 if initiative.id == vote_for_initiative_id then
bsw/jbe@1309 76 vote.grade = 1
bsw/jbe@1309 77 else
bsw/jbe@1309 78 vote.grade = 0
bsw/jbe@1309 79 end
bsw/jbe@1309 80 vote:save()
bsw/jbe@1309 81 end

Impressum / About Us