Suspended for at least 24 months.

This commit is contained in:
Dominik Pantůček 2023-03-19 20:43:00 +01:00
parent 7e171bbcef
commit 58c5a78829
3 changed files with 18 additions and 3 deletions

View file

@ -38,6 +38,7 @@
member-id
member-existing?
member-format
member-suspended-months
member-record-tests!
)
@ -64,6 +65,8 @@
(string-intersperse
(map symbol->string aliases)
", "))
(when (member-suspended? mr)
(print " Suspended for " (member-suspended-months mr) " months."))
(newline)
(let loop ((sinfo sinfo))
(when (not (null? sinfo))
@ -149,6 +152,7 @@
(cons (case (cadr fmtl)
((#\N) (mr-ref mr 'nick))
((#\I) (number->string (mr-ref mr 'id)))
((#\S) (number->string (member-suspended-months mr)))
((#\~) "~"))
resl))
(loop (cdr fmtl)
@ -156,9 +160,12 @@
;; Returns the number of months the user is suspended. Zero if not
;; suspended.
(define (member-suspended-month mr)
(define (member-suspended-months mr)
(if (member-suspended? mr)
1
(let ((period (periods-match (mr-ref mr 'suspend))))
(if period
(month-diff (car period) (*current-month*))
0))
0))
;; Performs module self-tests.

View file

@ -315,6 +315,13 @@
(member-records->string destroyed-mrs))
(print a:highlight " Students (" (length student-mrs) "): " a:default
(member-records->string student-mrs))
(let ((suspended2 (filter-members-by-predicate
suspended-mrs
(lambda (mr)
(>= (member-suspended-months mr) 24)))))
(when (not (null? suspended2))
(print " Suspended for at least 24 months: "
(member-records->string suspended2 "~N (~S)"))))
(when (not (null? invalid-mrs))
(print a:error " Invalid Id (" (length invalid-mrs) "): "
(member-records->string invalid-mrs "~N (~I)")

View file

@ -37,6 +37,7 @@
month-in-periods?
period->string
periods->string
periods-match
period-tests!
)
@ -126,7 +127,7 @@
(month->string (car p))
(if (cdr p)
(month->string (cdr p))
"....-..")))
"****-**")))
;; Returns a string representing a list of periods.
(define (periods->string ps)