<% 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

">
Name:
Real name:
Funded by:
<% 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

Name:
Real name:
Funded by:
Initial transaction amount:
Initial transaction description:
Subscribe to hcoop-announce
Groups:
<% 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:

<% 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 %> <% end %>
<% Web.html (#name user) %> <% val bal = Balance.lookupBalance (#bal user); if #name bal <> #name user then %> <% Web.html (#name bal) %> <% end %> [Modify] [Delete] [Retire]

How does the set of users in AFS compare with the set of active portal users?
<% end %> <% @footer [] %>