You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.6 KiB
81 lines
1.6 KiB
package service;
|
|
using Lambda;
|
|
using tools.ObjectListTool;
|
|
/**
|
|
* Service for managing groups
|
|
* @author fbarbut
|
|
*/
|
|
class GroupService
|
|
{
|
|
|
|
public function new()
|
|
{
|
|
|
|
}
|
|
|
|
/**
|
|
* copy groups.
|
|
* @param g
|
|
*/
|
|
public static function duplicateGroup(g:db.Amap){
|
|
|
|
var d = new db.Amap();
|
|
d.name = g.name+" (copy)";
|
|
d.contact = g.contact;
|
|
d.txtIntro = g.txtIntro;
|
|
d.txtHome = g.txtHome;
|
|
d.txtDistrib = g.txtDistrib;
|
|
d.extUrl = g.extUrl;
|
|
d.membershipRenewalDate = g.membershipRenewalDate;
|
|
d.membershipPrice = g.membershipPrice;
|
|
d.vatRates = g.vatRates;
|
|
d.flags = g.flags;
|
|
d.groupType = g.groupType;
|
|
d.image = g.image;
|
|
d.regOption = g.regOption;
|
|
d.currency = g.currency;
|
|
d.currencyCode = g.currencyCode;
|
|
d.allowedPaymentsType = g.allowedPaymentsType;
|
|
d.checkOrder = g.checkOrder;
|
|
d.IBAN = g.IBAN;
|
|
d.insert();
|
|
|
|
//put me in the group
|
|
|
|
return d;
|
|
}
|
|
|
|
static function duplicateCategories(from:db.Amap,to:db.Amap){
|
|
|
|
}
|
|
|
|
static function duplicateContract(){
|
|
|
|
}
|
|
|
|
/**
|
|
Get users with rights in this group
|
|
**/
|
|
public static function getGroupMembersWithRights(group:db.Amap,?rights:Array<db.UserAmap.Right>):Array<db.User>{
|
|
|
|
var membersWithAnyRights = db.UserAmap.manager.search($rights!=null && $amap==group,false).array();
|
|
if(rights==null){
|
|
return Lambda.map(membersWithAnyRights,function(ua) return ua.user).array();
|
|
}else{
|
|
var members = [];
|
|
for( m in membersWithAnyRights){
|
|
for(r in rights){
|
|
if(m.hasRight(r)){
|
|
members.push(m.user);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return members.deduplicate();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|