liquid_feedback_frontend

annotate app/main/api/event.lua @ 1838:bee9e998fa4d

Fixed new suggestion dialog layout and error redirect
author bsw
date Thu Feb 03 13:06:21 2022 +0100 (2022-02-03)
parents 32cc544d5a5b
children
rev   line source
bsw/jbe@1309 1 slot.set_layout(nil, "application/json")
bsw/jbe@1309 2
bsw/jbe@1309 3 local r = json.object{
bsw/jbe@1309 4 result = json.array{}
bsw/jbe@1309 5 }
bsw/jbe@1309 6
bsw/jbe@1309 7 local selector = Event:new_selector()
bsw/jbe@1309 8
bsw/jbe@1309 9 local member_id = param.get("member_id", atom.integer)
bsw/jbe@1309 10 local other_member_id = param.get("member_id", atom.integer)
bsw/jbe@1309 11 local scope = param.get("scope")
bsw/jbe@1309 12 local issue_id = param.get("issue_id", atom.integer)
bsw/jbe@1309 13 local state = param.get("state")
bsw/jbe@1309 14 local initiative_id = param.get("initiative_id", atom.integer)
bsw/jbe@1309 15
bsw/jbe@1309 16 local include_members = param.get("include_members", atom.boolean)
bsw/jbe@1309 17 local include_other_members = param.get("include_other_members", atom.boolean)
bsw/jbe@1309 18 local include_profile = param.get("include_profile", atom.boolean)
bsw/jbe@1309 19 local include_issues = param.get("include_issues", atom.boolean)
bsw/jbe@1309 20 local include_initiatives = param.get("include_initiatives", atom.boolean)
bsw/jbe@1309 21 local include_drafts = param.get("include_drafts", atom.boolean)
bsw/jbe@1309 22 local include_suggestions = param.get("include_suggestions", atom.boolean)
bsw/jbe@1309 23
bsw/jbe@1309 24 if member_id then
bsw/jbe@1309 25 selector:add_where{ "member_id = ?", member_id }
bsw/jbe@1309 26 end
bsw/jbe@1309 27
bsw/jbe@1309 28 if other_member_id then
bsw/jbe@1309 29 selector:add_where{ "other_member_id = ?", other_member_id }
bsw/jbe@1309 30 end
bsw/jbe@1309 31
bsw/jbe@1309 32 if scope then
bsw/jbe@1309 33 selector:add_where{ "scope = ?", scope }
bsw/jbe@1309 34 end
bsw/jbe@1309 35
bsw/jbe@1309 36 if issue_id then
bsw/jbe@1309 37 selector:add_where{ "issue_id = ?", issue_id }
bsw/jbe@1309 38 end
bsw/jbe@1309 39
bsw/jbe@1309 40 if scope then
bsw/jbe@1309 41 selector:add_where{ "scope = ?", scope }
bsw/jbe@1309 42 end
bsw/jbe@1309 43
bsw/jbe@1309 44 if initiative_id then
bsw/jbe@1309 45 selector:add_where{ "initiative_id = ?", initiative_id }
bsw/jbe@1309 46 end
bsw/jbe@1309 47
bsw/jbe@1309 48 selector:add_order_by("id DESC")
bsw/jbe@1309 49
bsw/jbe@1309 50 local events = selector:exec()
bsw/jbe@1309 51
bsw/jbe@1309 52 local member_ids = {}
bsw/jbe@1309 53 local issue_ids = {}
bsw/jbe@1309 54 local initiative_ids = {}
bsw/jbe@1309 55 local draft_ids = {}
bsw/jbe@1309 56 local suggestion_ids = {}
bsw/jbe@1309 57
bsw/jbe@1309 58 for i, event in ipairs(events) do
bsw/jbe@1309 59 local e = json.object()
bsw/jbe@1309 60 e.id = event.id
bsw/jbe@1309 61 e.occurrence = format.timestamp(event.occurrence)
bsw/jbe@1309 62 e.event = event.event
bsw/jbe@1309 63 e.member_id = event.member_id
bsw/jbe@1309 64 e.other_member_id = event.other_member_id
bsw/jbe@1309 65 e.scope = event.scope
bsw/jbe@1309 66 e.issue_id = event.issue_id
bsw/jbe@1309 67 e.state = event.state
bsw/jbe@1309 68 e.initiative_id = event.initiative_id
bsw/jbe@1309 69 e.draft_id = event.draft_id
bsw/jbe@1309 70 e.suggestion_id = event.suggestion_id
bsw/jbe@1309 71 e.value = event.value
bsw/jbe@1309 72 if include_members and e.member_id then
bsw/jbe@1309 73 member_ids[e.member_id] = true
bsw/jbe@1309 74 end
bsw/jbe@1309 75 if include_other_members and e.other_member_id then
bsw/jbe@1309 76 member_ids[e.member_id] = true
bsw/jbe@1309 77 end
bsw/jbe@1309 78 if include_issues and e.issue_id then
bsw/jbe@1309 79 issue_ids[e.issue_id] = true
bsw/jbe@1309 80 end
bsw/jbe@1309 81 if include_initiatives and e.initiative_id then
bsw/jbe@1309 82 initiative_ids[e.initiative_id] = true
bsw/jbe@1309 83 end
bsw/jbe@1309 84 if include_drafts and e.draft_id then
bsw/jbe@1309 85 draft_ids[e.draft_id] = true
bsw/jbe@1309 86 end
bsw/jbe@1309 87 if include_suggestions and e.suggestion_id then
bsw/jbe@1309 88 suggestion_ids[e.suggestion_id] = true
bsw/jbe@1309 89 end
bsw/jbe@1309 90 r.result[#r.result+1] = e
bsw/jbe@1309 91 end
bsw/jbe@1309 92
bsw/jbe@1309 93 function util.keys_to_array(tbl)
bsw/jbe@1309 94 local r = {}
bsw/jbe@1309 95 for k, v in pairs(tbl) do
bsw/jbe@1309 96 r[#r+1] = k
bsw/jbe@1309 97 end
bsw/jbe@1309 98 return r
bsw/jbe@1309 99 end
bsw/jbe@1309 100
bsw/jbe@1309 101 function util.array_to_json_object(tbl, key)
bsw/jbe@1309 102 local r = json.object()
bsw/jbe@1309 103 for i, v in ipairs(tbl) do
bsw/jbe@1309 104 r[v[key]] = v
bsw/jbe@1309 105 end
bsw/jbe@1309 106 return r
bsw/jbe@1309 107 end
bsw/jbe@1309 108
bsw/jbe@1309 109 if next(member_ids) then
bsw/jbe@1309 110 local members = Member:by_ids(util.keys_to_array(member_ids))
bsw/jbe@1309 111 r.members = util.array_to_json_object(
bsw/jbe@1309 112 execute.chunk{ module = "api", chunk = "_member", params = { members = members, include_profile = include_profile } },
bsw/jbe@1309 113 "id"
bsw/jbe@1309 114 )
bsw/jbe@1309 115 if r.members == false then
bsw/jbe@1309 116 return
bsw/jbe@1309 117 end
bsw/jbe@1309 118 end
bsw/jbe@1309 119
bsw/jbe@1309 120 if next(issue_ids) then
bsw/jbe@1309 121 local issues = Issue:by_ids(util.keys_to_array(issue_ids))
bsw/jbe@1309 122 r.issues = util.array_to_json_object(
bsw/jbe@1309 123 execute.chunk{ module = "api", chunk = "_issue", params = { issues = issues } },
bsw/jbe@1309 124 "id"
bsw/jbe@1309 125 )
bsw/jbe@1309 126 if r.issues == false then
bsw/jbe@1309 127 return
bsw/jbe@1309 128 end
bsw/jbe@1309 129 end
bsw/jbe@1309 130
bsw/jbe@1309 131
bsw/jbe@1309 132 slot.put_into("data", json.export(r))

Impressum / About Us