summaryrefslogtreecommitdiffstats
path: root/did-controller.lua
blob: 7aeb1e8c4902437c459f8279048fc086d9dedf95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
module(..., package.seeall)

-- Load libraries
require("controllerfunctions")

default_action = "viewrecords"

function listuseddefinitions(self)
	return self.model.getuseddefinitionlist(self, sessiondata.userinfo.userid, self.clientdata.did,
		self.clientdata.extension, self.clientdata.identification, self.clientdata.description,
		self.clientdata.department, self.clientdata.page)
end

function listunuseddefinitions(self)
	return self.model.getunuseddefinitionlist(self, sessiondata.userinfo.userid, self.clientdata.did,
		self.clientdata.identification,	self.clientdata.description, self.clientdata.department,
		self.clientdata.page)
end

function listdefinitions(self)
	return self.model.getdefinitionlist(self, sessiondata.userinfo.userid, self.clientdata.did,
		self.clientdata.extension, self.clientdata.identification, self.clientdata.description,
		self.clientdata.department, self.clientdata.page)
end

function searchdefinitionlist(self)
	self.clientdata.did = self.clientdata.q or self.clientdata.did
	local result = self.model.searchdefinitions(self, sessiondata.userinfo.userid, self.clientdata.did)
	if self.clientdata.q then
		self.conf.viewtype = "text"
	end
	return result
end

local function handle_form(self, getFunction, setFunction, clientdata, option, label, descr)
	local form = getFunction()

	if clientdata["Save"] or clientdata["Test"] then
		controllerfunctions.handle_clientdata(form, clientdata)

		if clientdata["Test"] then
			form = setFunction(form, true)
		else
			form = setFunction(form)
		end
		if not form.errtxt and descr then
			form.descr = descr
		end
		
		if clientdata.redir then
			form.value.redir = cfe({ type="hidden", value=clientdata.redir, label="" })
		end
		form = self:redirect_to_referrer(form)
		if clientdata.redir and not form.errtxt and not clientdata["Test"] then
			form.value = form.descr -- make it a command result
			form.descr = nil
			self:redirect(clientdata.redir, form)
		end
	elseif clientdata["Cancel"] and clientdata.redir then
		self:redirect(clientdata.redir, nil)
	else
		if clientdata.redir then
			form.value.redir = cfe({ type="hidden", value=clientdata.redir, label="" })
		end
		form = self:redirect_to_referrer() or form
	end

	form.type = "form"
	form.option = option
	form.label = label

	return form
end

function editdefinition(self)
	return handle_form(self, function() return self.model.getdefinition(self, sessiondata.userinfo.userid, self.clientdata.did) end, function(...) return self.model.updatedefinition(self, sessiondata.userinfo.userid, ...) end,  self.clientdata, "Save", "Edit DID Number")
end

function createdefinition(self)
	return handle_form(self, function() return self.model.getdefinition(self, sessiondata.userinfo.userid) end, function(...) return self.model.savedefinition(self, sessiondata.userinfo.userid, ...) end, self.clientdata, "Save", "Create DID Number")
end

function assigndefinition(self)
	self.conf.viewtype = self.clientdata.viewtype or self.conf.viewtype
	return controllerfunctions.handle_form(self, function() return self.model.getdefinition(self, sessiondata.userinfo.userid, self.clientdata.did) end, function(value) return self.model.updatedefinition(self, sessiondata.userinfo.userid, value) end, self.clientdata, "Save", "Assign DID Number")
end

function newdefinition(self)
	local retval = controllerfunctions.handle_form(self, self.model.getunuseddefinition, function(value) return self.model.setunuseddefinition(self, sessiondata.userinfo.userid, value) end, self.clientdata, "Select", "Create New DID Number")
	if retval.value.did and not retval.errtxt then
		-- Successfully found an unused did, redirect to edit it
		self:redirect("editdefinition?did="..retval.value.did.value.."&redir=listdefinitions")
	end
	return retval
end

function deletedefinition(self)
	return self:redirect_to_referrer(self.model.deletedefinition(self, sessiondata.userinfo.userid, self.clientdata.did))
end

function publish(self)
	return self:redirect_to_referrer(self.model.publishdefinition(self.clientdata.did))
end

function publishall(self)
	return self:redirect_to_referrer(self.model.publishalldefinitions())
end

function status(self)
	return self.model.testdatabase()
end

function createdatabase(self)
	return controllerfunctions.handle_form(self, self.model.getnewdatabase, self.model.create_database, self.clientdata, "Create", "Create New Database", "Database Created")
end

function viewactivitylog(self)
	return self.model.getactivitylog()
end

function listpermissions(self)
	return self.model:getpermissionslist()
end

function edituserpermissions(self)
	return controllerfunctions.handle_form(self, function()
			return self.model:getuserpermissions(self.clientdata.userid)
		end, function(value)
			return self.model:setuserpermissions(value)
		end, self.clientdata, "Save", "Edit User Permissions", "User permissions set")
end

function editrolepermissions(self)
	return controllerfunctions.handle_form(self, function()
			return self.model:getrolepermissions(self.clientdata.role)
		end, function(value)
			return self.model:setrolepermissions(value)
		end, self.clientdata, "Save", "Edit Role Permissions", "Role permissions set")
end

function requestdid(self)
	return self:redirect_to_referrer(self.model.requestdid(self, sessiondata.userinfo.userid))
end