rev |
line source |
bsw/jbe@0
|
1 Delegation = mondelefant.new_class()
|
bsw/jbe@0
|
2 Delegation.table = 'delegation'
|
bsw/jbe@0
|
3
|
bsw/jbe@0
|
4 Delegation:add_reference{
|
bsw/jbe@0
|
5 mode = 'm1',
|
bsw/jbe@0
|
6 to = "Member",
|
bsw/jbe@0
|
7 this_key = 'truster_id',
|
bsw/jbe@0
|
8 that_key = 'id',
|
bsw/jbe@0
|
9 ref = 'truster',
|
bsw/jbe@0
|
10 }
|
bsw/jbe@0
|
11
|
bsw/jbe@0
|
12 Delegation:add_reference{
|
bsw/jbe@0
|
13 mode = 'm1',
|
bsw/jbe@0
|
14 to = "Member",
|
bsw/jbe@0
|
15 this_key = 'trustee_id',
|
bsw/jbe@0
|
16 that_key = 'id',
|
bsw/jbe@0
|
17 ref = 'trustee',
|
bsw/jbe@0
|
18 }
|
bsw/jbe@0
|
19
|
bsw/jbe@0
|
20 Delegation:add_reference{
|
bsw/jbe@0
|
21 mode = 'm1',
|
bsw@599
|
22 to = "Unit",
|
bsw@599
|
23 this_key = 'unit_id',
|
bsw@599
|
24 that_key = 'id',
|
bsw@599
|
25 ref = 'unit',
|
bsw@599
|
26 }
|
bsw@599
|
27
|
bsw@599
|
28 Delegation:add_reference{
|
bsw@599
|
29 mode = 'm1',
|
bsw/jbe@0
|
30 to = "Area",
|
bsw/jbe@0
|
31 this_key = 'area_id',
|
bsw/jbe@0
|
32 that_key = 'id',
|
bsw/jbe@0
|
33 ref = 'area',
|
bsw/jbe@0
|
34 }
|
bsw/jbe@0
|
35
|
bsw/jbe@0
|
36 Delegation:add_reference{
|
bsw/jbe@0
|
37 mode = 'm1',
|
bsw/jbe@0
|
38 to = "Issue",
|
bsw/jbe@0
|
39 this_key = 'issue_id',
|
bsw/jbe@0
|
40 that_key = 'id',
|
bsw/jbe@0
|
41 ref = 'issue',
|
bsw/jbe@0
|
42 }
|
bsw/jbe@0
|
43
|
bsw@248
|
44 function Delegation:by_pk(truster_id, unit_id, area_id, issue_id)
|
bsw/jbe@0
|
45 local selector = self:new_selector():optional_object_mode()
|
bsw/jbe@0
|
46 selector:add_where{ "truster_id = ?", truster_id }
|
bsw@248
|
47 if unit_id then
|
bsw@248
|
48 selector:add_where{ "unit_id = ?", unit_id }
|
bsw@248
|
49 else
|
bsw@248
|
50 selector:add_where("unit_id ISNULL")
|
bsw@248
|
51 end
|
bsw/jbe@0
|
52 if area_id then
|
bsw/jbe@0
|
53 selector:add_where{ "area_id = ?", area_id }
|
bsw/jbe@0
|
54 else
|
bsw/jbe@0
|
55 selector:add_where("area_id ISNULL")
|
bsw/jbe@0
|
56 end
|
bsw/jbe@0
|
57 if issue_id then
|
bsw/jbe@0
|
58 selector:add_where{ "issue_id = ? ", issue_id }
|
bsw/jbe@0
|
59 else
|
bsw/jbe@0
|
60 selector:add_where("issue_id ISNULL ")
|
bsw/jbe@0
|
61 end
|
bsw/jbe@0
|
62 return selector:exec()
|
bsw@248
|
63 end
|
bsw@558
|
64
|
bsw@558
|
65 function Delegation:selector_for_broken(member_id)
|
bsw@558
|
66 return Delegation:new_selector()
|
bsw@605
|
67 :left_join("issue", nil, "issue.id = delegation.issue_id")
|
bsw@605
|
68 :add_where("issue.id ISNULL OR issue.closed ISNULL")
|
bsw@558
|
69 :join("member", nil, "delegation.trustee_id = member.id")
|
bsw@558
|
70 :add_where{"delegation.truster_id = ?", member_id}
|
bsw@558
|
71 :add_where{"member.active = 'f' OR (member.last_activity IS NULL OR age(member.last_activity) > ?::interval)", config.delegation_warning_time }
|
bsw@558
|
72 end
|
bsw@988
|
73
|
bsw@988
|
74 function Delegation:delegations_to_check_for_member_id(member_id, for_update)
|
bsw@988
|
75
|
bsw@988
|
76 Member:new_selector():add_where({ "id = ?", member_id }):for_update():exec()
|
bsw@988
|
77
|
bsw@988
|
78 local selector = Delegation:new_selector()
|
bsw@988
|
79 :add_field("member.name", "member_name")
|
bsw@988
|
80 :add_field("unit.name", "unit_name")
|
bsw@988
|
81 :add_field("area.name", "area_name")
|
bsw@988
|
82 :left_join("area", nil, "area.active AND area.id = delegation.area_id")
|
bsw@988
|
83 :join("unit", nil, "unit.active AND (unit.id = delegation.unit_id OR unit.id = area.unit_id)")
|
bsw@988
|
84 :left_join("member", nil, "member.id = delegation.trustee_id")
|
bsw@988
|
85 :add_where({ "delegation.truster_id = ?", member_id })
|
bsw@988
|
86 :add_order_by("unit.name, area.name NULLS FIRST")
|
bsw@988
|
87
|
bsw@988
|
88 if for_update then
|
bsw@988
|
89 selector:for_update_of("delegation")
|
bsw@988
|
90 end
|
bsw@988
|
91
|
bsw@988
|
92 return selector:exec()
|
bsw@988
|
93
|
bsw@988
|
94 end |