-- © 2006 Peter Thiemann {- | Simple seat reservation using transactional variables. -} module Main where import WASH.CGI.CGI hiding (map) import qualified WASH.CGI.Transaction as T import Monad type SeatCategory = Char seatCategories :: [SeatCategory] seatCategories = ['A'..'J'] seatNumbers :: [Int] seatNumbers = [0..9] appTitle = "WASH my Seat" main = run mainCGI -- | step 1: choose a seat category mainCGI = standardQuery appTitle <#>
Choose a category:
STAGE |
Name | |
Address | |
Acct. Info |
#> displayReservedSeat reservation seatNumber = if reservation then text (' ':show seatNumber) else empty displayReservations seatCategory reservations seatNumbers = <#>
Name | <%= name %> |
Address | <%= address %> |
Acct. Info | <%= acctinfo %> |
#> -- | step 5: process confirmed reservation confirmedReservation seatCategory reservations commit name address acctinfo = let nrOfSeats = sum (map fromEnum reservations) in commit () (goodBye nrOfSeats) goodBye r = standardQuery (appTitle ++ ": Good Bye") <#>