Money.applyCharges trn
end;
+ App.add ap;
+
if $"subscribe" = "on" then
if not (Pref.subscribe ("hcoop-announce", $"name" ^ Init.emailSuffix)) then
%><h3>Error subscribing to hcoop-announce</h3><%
end
- end %>
- <h3>Member added</h3>
+ end;
+
+ if $"nomail" = "" then
+ App.welcome ap
+ end
+
+ %><h3>Member added</h3>
<% end
end
elseif $"mod" <> "" then
Init.deleteUser (Web.stoi ($"del2")) %>
<h3><% #name user %> deleted!</h3>
-<% elseif $"cmd" = "grandfather" then
- Init.grandfatherUsers()
- %><h3>Grandfathered</h3>
+<% elseif $"retire" <> "" then
+ showNormal := false;
+ val user = Init.lookupUser (Web.stoi ($"retire")) %>
+ <h3>Are you sure you want to retire member <a href="user?id=<% #id user %>"><% #name user %></a>?</h3>
+ <a href="users?retire2=<% $"retire" %>">Yes, retire <% #name user %>!</a>
+
+<% 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} %>
+ <h3><% #name user %> retired!</h3><%
+ | _ => %><h3>Couldn't find "paying" or "retired" group by name!</h3><%
+ end
-<% elseif $"cmd" = "addform" then
+elseif $"cmd" = "addform" then
showNormal := false %>
<h3>New member</h3>
</table>
</form>
-<% elseif $"cmd" = "unmigrated" then
+<% elseif $"cmd" = "diff" then
showNormal := false;
- ref negative = 0;
- val users = Init.unmigratedUsers () %>
-<h3>Unmigrated members (<% length users %>)</h3>
+ val against = (case $"against" of
+ "" => Init.usersInAfs ()
+ | x => String.tokens Char.isSpace x);
-<table>
-<% foreach user in users do %>
- <tr> <td><a href="user?id=<% #id user %>"><% Web.html (#name user) %></a></td>
-<% val bal = Balance.lookupBalance (#bal user);
-if Balance.isNegative bal then
- negative := negative + 1
-end %>
-<td><% #amount bal %></td><td>
-<%if #name bal <> #name user then %>
- <i><% Web.html (#name bal) %></i>
-<% end %>
-</td> </tr>
+ val diff = Init.usersDiff (Init.listUsernames (), against) %>
+
+<h3>User diff</h3>
+
+<h4>Only on the portal:</h4>
+<ul>
+<% foreach user in #onlyInFirst diff do %>
+ <li> <a href="user?id=<% valOf (Init.userNameToId user) %>"><% Web.html user %></a></li>
<% end %>
-</table>
+</ul>
-<p><% negative %> have negative balances.</p>
+<h4>Only in AFS:</h4>
+<ul>
+<% foreach user in #onlyInSecond diff do %>
+ <li> <% Web.html user %></li>
+<% end %>
+</ul>
<% end %>
<% if showNormal then %>
<a href="users?cmd=addform">Add a user manually</a><br>
+<% if $"showretired" = "1" then %>
+<a href="users?showretired=0">Hide Retired Members</a><br>
+<% else %>
+<a href="users?showretired=1">Show Retired Members</a><br>
+<% end %>
<h3>Manage current members</h3>
-<table>
-<% foreach user in Init.listUsers () do %>
- <tr> <td><a href="user?id=<% #id user %>"><% Web.html (#name user) %></a></td> <td>
+<table class="data">
+<% foreach user in List.filter (fn u => ($"showretired" = "1") or not (Group.userInGroupName (#id u, "retired"))) (Init.listUsers ()) do %>
+ <tr>
+ <td><a href="user?id=<% #id user %>"><% Web.html (#name user) %></a></td>
+ <td>
<% val bal = Balance.lookupBalance (#bal user);
if #name bal <> #name user then %>
<i><% Web.html (#name bal) %></i>
<% end %>
- </td><td><a href="users?mod=<% #id user %>">[Modify]</a> <a href="users?del=<% #id user %>">[Delete]</a></td> </tr>
+ </td>
+ <td><a href="users?mod=<% #id user %>">[Modify]</a> <a href="users?del=<% #id user %>">[Delete]</a>
+ <a href="users?retire=<% #id user %>">[Retire]</a></td>
+ </tr>
<% end %>
</table>
-<br><a href="users?cmd=grandfather">Grandfather old users to have applications</a><br>
-<a href="users?cmd=unmigrated">Who hasn't migrated yet?</a><br>
+<br>
+<a href="users?cmd=diff">How does the set of users in AFS compare with the set of active portal users?</a><br>
<% end %>