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.
140 lines
4.2 KiB
140 lines
4.2 KiB
package service;
|
|
import tink.core.Error;
|
|
import db.UserAmap.Right;
|
|
|
|
class WaitingListService{
|
|
|
|
|
|
public static function registerToWl(user:db.User,group:db.Amap,message:String){
|
|
var t = sugoi.i18n.Locale.texts;
|
|
|
|
canRegister(user,group);
|
|
|
|
var w = new db.WaitingList();
|
|
w.user = user;
|
|
w.group = group;
|
|
w.message = message;
|
|
w.insert();
|
|
|
|
//emails
|
|
var html = t._("<p><b>::name::</b> suscribed to the waiting list of <b>::group::</b> on ::date::</p>",{
|
|
group:group.name,
|
|
name:user.name,
|
|
date:App.current.view.hDate(Date.now())
|
|
});
|
|
if(message!=null && message!=""){
|
|
html += t._("<p>He/she left this message :<br/>\"::message::\"</p>",{message:message});
|
|
}
|
|
|
|
for( u in service.GroupService.getGroupMembersWithRights(group,[Right.GroupAdmin,Right.Membership]) ){
|
|
|
|
App.quickMail(
|
|
u.email,
|
|
t._("[::group::] ::name:: suscribed to the waiting list.",{group:group.name,name:user.name}),
|
|
html,
|
|
group
|
|
);
|
|
}
|
|
}
|
|
|
|
public static function canRegister(user:db.User,group:db.Amap){
|
|
var t = sugoi.i18n.Locale.texts;
|
|
|
|
if ( db.WaitingList.manager.select($amapId == group.id && $user == user) != null) {
|
|
throw new Error(t._("You are already in the waiting list of this group"));
|
|
}
|
|
if ( db.UserAmap.manager.select($amapId == group.id && $user == user) != null) {
|
|
throw new Error(t._("You are already member of this group."));
|
|
}
|
|
}
|
|
|
|
/**
|
|
the user cancels his request
|
|
**/
|
|
public static function removeFromWl(user:db.User,group:db.Amap){
|
|
var t = sugoi.i18n.Locale.texts;
|
|
if ( user == null) {
|
|
throw new Error(t._("You should be logged in."));
|
|
}
|
|
|
|
var wl = db.WaitingList.manager.select($amapId == group.id && $user == user,true);
|
|
|
|
if ( wl == null) {
|
|
throw new Error(t._("You are not in the waiting list of this group"));
|
|
}
|
|
wl.delete();
|
|
}
|
|
|
|
/**
|
|
an admin cancels a request
|
|
**/
|
|
public static function cancelRequest(user:db.User,group:db.Amap){
|
|
var t = sugoi.i18n.Locale.texts;
|
|
if ( user == null) throw "user is null";
|
|
var wl = db.WaitingList.manager.select($amapId == group.id && $user == user,true);
|
|
if ( wl == null) throw "this user is not in waiting list";
|
|
|
|
//email the requester
|
|
App.quickMail(
|
|
wl.user.email,
|
|
t._("[::group::] Membership request refused.",{group:group.name}),
|
|
t._("Your membership request for <b>::group::</b> has been refused.",{group:group.name})
|
|
);
|
|
|
|
//email others admin
|
|
for( u in service.GroupService.getGroupMembersWithRights(group,[Right.GroupAdmin,Right.Membership]) ){
|
|
if(u.id==App.current.user.id) continue;
|
|
App.quickMail(
|
|
u.email,
|
|
t._("[::group::] ::name:: membership request has been refused by ::admin::.",{group:group.name, name:user.name, admin:App.current.user.name}),
|
|
t._("<p><b>::name::</b> was registred to the waiting list.</p><p><b>::admin::</b> has refused his/her request.</p>",{name:user.name, admin:App.current.user.name}),
|
|
group
|
|
);
|
|
}
|
|
|
|
wl.delete();
|
|
}
|
|
|
|
/**
|
|
an admin approves a request
|
|
**/
|
|
public static function approveRequest(user:db.User,group:db.Amap){
|
|
var t = sugoi.i18n.Locale.texts;
|
|
if ( user == null) throw "user is null";
|
|
var wl = db.WaitingList.manager.select($amapId == group.id && $user == user,true);
|
|
if ( wl == null) throw "this user is not in waiting list";
|
|
|
|
if (db.UserAmap.get(user, group, false) == null){
|
|
var ua = new db.UserAmap();
|
|
ua.amap = wl.group;
|
|
ua.user = wl.user;
|
|
ua.insert();
|
|
}
|
|
|
|
wl.delete();
|
|
|
|
//email the requester
|
|
App.quickMail(
|
|
wl.user.email,
|
|
t._("[::group::] Membership request accepted.",{group:group.name}),
|
|
t._("<p>Your membership request for <b>::group::</b> has been accepted !</p><p>You're now a member of the group.</p>",{group:group.name}),
|
|
group
|
|
);
|
|
|
|
//email others admin
|
|
for( u in service.GroupService.getGroupMembersWithRights(group,[Right.GroupAdmin,Right.Membership]) ){
|
|
if(u.id==App.current.user.id) continue;
|
|
App.quickMail(
|
|
u.email,
|
|
t._("[::group::] ::name:: membership request has been accepted by ::admin::.",{group:group.name, name:user.name, admin:App.current.user.name}),
|
|
t._("<p><b>::name::</b> was registred to the waiting list.</p><p><b>::admin::</b> has accepted his/her request.</p>",{name:user.name, admin:App.current.user.name}),
|
|
group
|
|
);
|
|
}
|
|
|
|
wl.delete();
|
|
}
|
|
|
|
|
|
|
|
}
|