liquid_feedback_frontend

diff model/interest.lua @ 1618:2f9e1e882de6

Add/remove interest via fetch
author bsw
date Mon Feb 01 23:43:54 2021 +0100 (2021-02-01)
parents 3bfb2fcf7ab9
children
line diff
     1.1 --- a/model/interest.lua	Mon Feb 01 21:57:34 2021 +0100
     1.2 +++ b/model/interest.lua	Mon Feb 01 23:43:54 2021 +0100
     1.3 @@ -22,4 +22,45 @@
     1.4      :add_where{ "issue_id = ? AND member_id = ?", issue_id, member_id }
     1.5      :optional_object_mode()
     1.6      :exec()
     1.7 -end
     1.8 \ No newline at end of file
     1.9 +end
    1.10 +
    1.11 +function Interest:update(issue_id, member, interested)
    1.12 +  local interest = Interest:by_pk(issue_id, member.id)
    1.13 +
    1.14 +  local issue = Issue:new_selector():add_where{ "id = ?", issue_id }:for_share():single_object_mode():exec()
    1.15 +
    1.16 +  if not member:has_voting_right_for_unit_id(issue.area.unit_id) then
    1.17 +    return execute.view { module = "index", view = "403" }
    1.18 +  end
    1.19 +
    1.20 +  if issue.closed then
    1.21 +    slot.put_into("error", _"This issue is already closed.")
    1.22 +    return false
    1.23 +  elseif issue.fully_frozen then 
    1.24 +    slot.put_into("error", _"Voting for this issue has already begun.")
    1.25 +    return false
    1.26 +  elseif 
    1.27 +    (issue.half_frozen and issue.phase_finished) or
    1.28 +    (not issue.accepted and issue.phase_finished) 
    1.29 +  then
    1.30 +    slot.put_into("error", _"Current phase is already closed.")
    1.31 +    return false
    1.32 +  end
    1.33 +
    1.34 +  if interested == false then
    1.35 +    if interest then
    1.36 +      interest:destroy()
    1.37 +    end
    1.38 +    return true
    1.39 +  end
    1.40 +
    1.41 +  if not interest then
    1.42 +    interest = Interest:new()
    1.43 +    interest.issue_id   = issue_id
    1.44 +    interest.member_id  = app.session.member_id
    1.45 +    interest:save()
    1.46 +  end
    1.47 +
    1.48 +  return true
    1.49 +  
    1.50 +end

Impressum / About Us