liquid_feedback_frontend

annotate model/delegation.lua @ 988:81bde33c2256

Added support for regular delegation check, fixed css for pagination
author bsw
date Sat Apr 20 18:40:34 2013 +0200 (2013-04-20)
parents 42afe0765f86
children
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

Impressum / About Us