#!/usr/bin/env racket
;; lfs sponsor page generator
#lang racket
(require (planet ryanc/db:1:1))
(define cn (sqlite3-connect #:database "sponsee.db"))
(define xrow "
~a
~a
|
~a
~a
|
~a
~a
|
")
(define modval 3)
(define itm-padder #("0" "" ""))
(define xtmpl (file->string "zztmpl.htm"))
(define xtle "~a sponsorship for $~a/mo")
(define xkwd "sponsorship, ~a")
(define xdsc "Sponsorship for ~a category.")
(define xmid "
~a
\n
To donate via Paypal, click on the donate button
back to main sponsor page
")
(define species-lst (sort (list "cat" "pig" "goat" "tortoise" "chicken" "donkey" "rabbit" "deer" "duck" "peahen" "dog" "goose") string))
;change first element of a vector to string
(define (n1->str v)
(vector (number->string (vector-ref v 0)) (vector-ref v 1) (vector-ref v 2)))
;get names pky by species from db as list of nam pky
(define (itms-by-species species)
(let* ((itms (map n1->str
(query-rows
cn
"select pky,nam,dsc from sponsees where spe=$1 order by nam"
species)))
(amt (query-value cn "select amt from amounts where spe=$1" species))
(len-of-itms (length itms))
(num-of-xprs (ceiling (/ len-of-itms modval)))
(itms-modulo (modulo len-of-itms modval))
(itms-padded (if (equal? itms-modulo 0)
itms
(append itms (make-list
(- modval itms-modulo)
itm-padder))))
(xpr-for-table (string-join (make-list num-of-xprs xrow) " "))
(itms-lst (flatten (map vector->list itms-padded)))
(itms-str (apply format xpr-for-table itms-lst))
(tlecode (apply format xtle (list species amt)))
(kwdcode (apply format xkwd (list species)))
(dsccode (apply format xdsc (list species)))
(midcode (apply format xmid (list tlecode itms-str)))
(pgcode (apply format
xtmpl
(list tlecode kwdcode dsccode midcode))))
(display-to-file pgcode
(string-append "spnpg_" species ".html")
#:exists 'replace)))
(define (gen-pages)
(for-each itms-by-species species-lst))
;a oneshot function for renaming the existing files
(define (rn)
(let ((itms (query-rows cn "select pky,nam from sponsees")))
(for-each
(lambda (itm)
(system (apply format "mv images/sp/~a.jpg images/sp/~a.jpg" (list (vector-ref itm 1) (vector-ref itm 0)))))
itms)))
(gen-pages)