bsw/jbe@0: local truster_id = app.session.member.id bsw/jbe@0: bsw/jbe@0: local trustee_id = param.get("trustee_id", atom.integer) bsw/jbe@0: bsw@248: local unit_id = param.get("unit_id", atom.integer) bsw@248: bsw/jbe@0: local area_id = param.get("area_id", atom.integer) bsw/jbe@0: bsw/jbe@0: local issue_id = param.get("issue_id", atom.integer) bsw/jbe@0: bsw@575: local initiative_id = param.get("initiative_id", atom.integer) bsw@575: bsw/jbe@0: if issue_id then bsw/jbe@0: area_id = nil bsw/jbe@0: end bsw/jbe@0: bsw@529: local preview = param.get("preview") bsw@529: bsw@529: if preview == "1" then bsw@529: request.redirect{ module = "delegation", view = "show", params = { bsw@575: unit_id = unit_id, area_id = area_id, issue_id = issue_id, initiative_id = initiative_id, preview_trustee_id = trustee_id bsw@529: } } bsw@529: return bsw@529: end bsw@529: bsw@293: local delegation = Delegation:by_pk(truster_id, unit_id, area_id, issue_id) bsw@293: bsw@293: bsw/jbe@4: if param.get("delete") or trustee_id == -1 then bsw/jbe@0: bsw/jbe@0: if delegation then bsw/jbe@0: delegation:destroy() bsw/jbe@0: end bsw/jbe@5: bsw/jbe@0: else bsw@296: bsw@300: local trustee bsw@300: bsw@300: if trustee_id then bsw@300: trustee = Member:by_id(trustee_id) bsw@300: end bsw/jbe@0: bsw@281: local check_unit_id bsw@281: if unit_id then bsw@281: check_unit_id = unit_id bsw@281: elseif area_id then bsw@281: local area = Area:by_id(area_id) bsw@281: check_unit_id = area.unit_id bsw@281: else bsw@281: local issue = Issue:by_id(issue_id) bsw@281: local area = Area:by_id(issue.area_id) bsw@281: check_unit_id = area.unit_id bsw@281: end bsw@296: bsw@300: if trustee and not trustee:has_voting_right_for_unit_id(check_unit_id) then bsw@296: slot.put_into("error", _"Trustee has no voting right in this unit") bsw@296: return false bsw@296: end bsw@281: bsw@281: if not app.session.member:has_voting_right_for_unit_id(check_unit_id) then bsw@281: error("access denied") bsw@281: end bsw@281: bsw/jbe@0: if not delegation then bsw/jbe@0: delegation = Delegation:new() bsw/jbe@0: delegation.truster_id = truster_id bsw@248: delegation.unit_id = unit_id bsw/jbe@0: delegation.area_id = area_id bsw/jbe@0: delegation.issue_id = issue_id bsw/jbe@5: if issue_id then bsw/jbe@5: delegation.scope = "issue" bsw/jbe@5: elseif area_id then bsw/jbe@5: delegation.scope = "area" bsw@248: elseif unit_id then bsw@248: delegation.scope = "unit" bsw/jbe@5: end bsw/jbe@0: end bsw@180: if trustee_id == 0 then bsw@180: delegation.trustee_id = nil bsw@180: else bsw@180: delegation.trustee_id = trustee_id bsw@180: end bsw/jbe@0: bsw/jbe@0: delegation:save() bsw@529: bsw/jbe@0: end bsw/jbe@0: