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

View file

@ -315,6 +315,13 @@
(member-records->string destroyed-mrs)) (member-records->string destroyed-mrs))
(print a:highlight " Students (" (length student-mrs) "): " a:default (print a:highlight " Students (" (length student-mrs) "): " a:default
(member-records->string student-mrs)) (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)) (when (not (null? invalid-mrs))
(print a:error " Invalid Id (" (length invalid-mrs) "): " (print a:error " Invalid Id (" (length invalid-mrs) "): "
(member-records->string invalid-mrs "~N (~I)") (member-records->string invalid-mrs "~N (~I)")

View file

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