You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.3 KiB
Lua
52 lines
1.3 KiB
Lua
local ngx = _G.ngx
|
|
local action = setmetatable({}, require "apps.api.internal.action_base")
|
|
local assert_error = require("lapis.application").assert_error
|
|
local assert_valid = require("lapis.validate").assert_valid
|
|
local trim_filter = require("lapis.util").trim_filter
|
|
local role = require "utils.role"
|
|
local models = require "models"
|
|
local Announcements = models.announcements
|
|
|
|
function action:GET()
|
|
|
|
-- Verify the User's permissions
|
|
assert_error(role.admin(self.api_user))
|
|
|
|
-- Get all Announcements
|
|
local announcements = assert_error(Announcements:get_all())
|
|
for _, announcement in ipairs(announcements) do
|
|
Announcements:format_from_db(announcement)
|
|
end
|
|
|
|
return {
|
|
status = ngx.HTTP_OK,
|
|
json = announcements
|
|
}
|
|
end
|
|
|
|
function action:POST()
|
|
|
|
-- Verify the User's permissions
|
|
assert_error(role.admin(self.api_user))
|
|
|
|
-- Validate parameters
|
|
local params = {
|
|
board_id = tonumber(self.params.board_id),
|
|
text = self.params.text,
|
|
}
|
|
trim_filter(params)
|
|
Announcements:format_to_db(params)
|
|
assert_valid(params, Announcements.valid_record)
|
|
|
|
-- Create Announcement
|
|
local announcement = assert_error(Announcements:new(params))
|
|
Announcements:format_from_db(announcement)
|
|
|
|
return {
|
|
status = ngx.HTTP_OK,
|
|
json = announcement
|
|
}
|
|
end
|
|
|
|
return action
|