% Group.requireGroupNum 0;
@header [("title", ["Member management"])];
ref showNormal = true;
if $"cmd" = "Create" then
if not (Init.validUsername ($"name")) then %>
Invalid username
<% else switch Init.userNameToId ($"name") of
SOME _ => %>
Username already in use
<% | NONE =>
val ap = Web.stoi ($"app");
val bal =
(case $"bal" of
"" => Balance.addBalance ($"name")
| s => Web.stoi s);
val id = Init.addUser ($"name", $"rname", bal, ap, 1);
Group.addToGroups (id, map Web.stoi (Web.getMultiParam "grp"));
if $"amount" <> "" then
val amount = Web.stor ($"amount");
val trn = Money.addTransaction ($"descr", amount, Init.dateString ());
Money.addCharge {trn = trn, usr = id, amount = amount};
Money.applyCharges trn
end;
App.add ap;
if $"subscribe" = "on" then
if not (Pref.subscribe ("hcoop-announce", $"name" ^ Init.emailSuffix)) then
%>Error subscribing to hcoop-announce
<%
end
end;
if $"nomail" = "" then
App.welcome ap
end
%>Member added
<% end
end
elseif $"mod" <> "" then
showNormal := false;
val user = Init.lookupUser (Web.stoi ($"mod")) %>
Modify member record
<% elseif $"cmd" = "Save" then
val user = Init.lookupUser (Web.stoi ($"id"));
Init.modUser {user with name = $"name", bal = Web.stoi ($"bal")} %>
Member record saved.
<% elseif $"del" <> "" then
showNormal := false;
val user = Init.lookupUser (Web.stoi ($"del")) %>
Are you sure you want to delete member <% #name user %>?
">Yes, delete <% #name user %>!
<% elseif $"del2" <> "" then
val user = Init.lookupUser (Web.stoi ($"del2"));
Init.deleteUser (Web.stoi ($"del2")) %>
<% #name user %> deleted!
<% elseif $"retire" <> "" then
showNormal := false;
val user = Init.lookupUser (Web.stoi ($"retire")) %>
Are you sure you want to retire member <% #name user %>?
">Yes, retire <% #name user %>!
<% elseif $"retire2" <> "" then
val usr = Web.stoi ($"retire2");
val user = Init.lookupUser usr;
switch (Group.groupNameToId "paying", Group.groupNameToId "retired") of
(SOME paying, SOME retired) =>
Group.removeFromGroup {usr = usr, grp = paying};
Group.addToGroup {usr = usr, grp = retired} %>
<% #name user %> retired!
<%
| _ => %>Couldn't find "paying" or "retired" group by name!
<%
end
elseif $"cmd" = "addform" then
showNormal := false %>
New member
<% elseif $"cmd" = "diff" then
showNormal := false;
val against = (case $"against" of
"" => Init.usersInAfs ()
| x => String.tokens Char.isSpace x);
val diff = Init.usersDiff (Init.listUsernames (), against) %>
User diff
Only on the portal:
Only in AFS:
<% foreach user in #onlyInSecond diff do %>
- <% Web.html user %>
<% end %>
<% end %>
<% if showNormal then %>
Add a user manually
<% if $"showretired" = "1" then %>
Hide Retired Members
<% else %>
Show Retired Members
<% end %>
Manage current members
<% foreach user in List.filter (fn u => ($"showretired" = "1") or not (Group.userInGroupName (#id u, "retired"))) (Init.listUsers ()) do %>
<% Web.html (#name user) %> |
<% val bal = Balance.lookupBalance (#bal user);
if #name bal <> #name user then %>
<% Web.html (#name bal) %>
<% end %>
|
[Modify] [Delete]
[Retire] |
<% end %>
How does the set of users in AFS compare with the set of active portal users?
<% end %>
<% @footer [] %>