X-Git-Url: http://git.hcoop.net/bpt/portal.git/blobdiff_plain/26d9b4fe7d9b69284abc49e5dcc17057eb3387c4..27e65914536e13f127861bd35ee3678c99872900:/app.sml diff --git a/app.sml b/app.sml index 1941e2d..40c4389 100644 --- a/app.sml +++ b/app.sml @@ -9,6 +9,7 @@ datatype status = | ACCEPTED | REJECTED | ADDED + | BEING_ADDED val statusFromInt = fn 0 => CONFIRMING @@ -16,6 +17,7 @@ val statusFromInt = | 2 => ACCEPTED | 3 => REJECTED | 4 => ADDED + | 5 => BEING_ADDED | _ => raise C.Sql "Bad status" val statusToInt = @@ -24,6 +26,7 @@ val statusToInt = | ACCEPTED => 2 | REJECTED => 3 | ADDED => 4 + | BEING_ADDED => 5 fun statusFromSql v = statusFromInt (C.intFromSql v) fun statusToSql s = C.intToSql (statusToInt s) @@ -58,11 +61,11 @@ fun lookupApp id = SOME row => mkAppRow row | NONE => raise Fail "Membership application not found" -fun listApps status = +fun listApps statuses = C.map (getDb ()) mkAppRow ($`SELECT id, name, rname, gname, email, forward, uses, other, passwd, status, applied, ipaddr, confirmed, decided, msg, unix_passwd, paypal, checkout FROM MemberApp - WHERE status = ^(statusToSql status) + WHERE status IN (^(String.concatWith "," (map statusToSql statuses))) AND NOT (status = 2 AND decided < CURRENT_TIMESTAMP - INTERVAL '1 MONTH') ORDER BY applied`) @@ -116,10 +119,10 @@ fun approve (app, msg) = OS.Process.isSuccess (Mail.mclose mail) end -fun add app = +fun preAdd app = let val _ = C.dml (getDb ()) ($`UPDATE MemberApp - SET status = 3 + SET status = 5 WHERE id = ^(C.intToSql app)`) val app = lookupApp app @@ -131,6 +134,11 @@ fun add app = TextIO.closeOut outf end +fun add app = + ignore (C.dml (getDb ()) ($`UPDATE MemberApp + SET status = 4 + WHERE id = ^(C.intToSql app)`)) + fun welcome app = let val app = lookupApp app