liquid_feedback_frontend

view model/interest.lua @ 1668:6d75df24e66e

Updated German translation
author bsw
date Sun Mar 07 09:52:36 2021 +0100 (2021-03-07)
parents 2f9e1e882de6
children
line source
1 Interest = mondelefant.new_class()
2 Interest.table = 'interest'
3 Interest.primary_key = { "issue_id", "member_id" }
4 Interest:add_reference{
5 mode = 'm1',
6 to = "Member",
7 this_key = 'member_id',
8 that_key = 'id',
9 ref = 'member',
10 }
12 Interest:add_reference{
13 mode = 'm1',
14 to = "Issue",
15 this_key = 'issue_id',
16 that_key = 'id',
17 ref = 'issue',
18 }
20 function Interest:by_pk(issue_id, member_id)
21 return self:new_selector()
22 :add_where{ "issue_id = ? AND member_id = ?", issue_id, member_id }
23 :optional_object_mode()
24 :exec()
25 end
27 function Interest:update(issue_id, member, interested)
28 local interest = Interest:by_pk(issue_id, member.id)
30 local issue = Issue:new_selector():add_where{ "id = ?", issue_id }:for_share():single_object_mode():exec()
32 if not member:has_voting_right_for_unit_id(issue.area.unit_id) then
33 return execute.view { module = "index", view = "403" }
34 end
36 if issue.closed then
37 slot.put_into("error", _"This issue is already closed.")
38 return false
39 elseif issue.fully_frozen then
40 slot.put_into("error", _"Voting for this issue has already begun.")
41 return false
42 elseif
43 (issue.half_frozen and issue.phase_finished) or
44 (not issue.accepted and issue.phase_finished)
45 then
46 slot.put_into("error", _"Current phase is already closed.")
47 return false
48 end
50 if interested == false then
51 if interest then
52 interest:destroy()
53 end
54 return true
55 end
57 if not interest then
58 interest = Interest:new()
59 interest.issue_id = issue_id
60 interest.member_id = app.session.member_id
61 interest:save()
62 end
64 return true
66 end

Impressum / About Us