diff --git a/lib/Zureg/Database.hs b/lib/Zureg/Database.hs index 60951d6..bffbc04 100644 --- a/lib/Zureg/Database.hs +++ b/lib/Zureg/Database.hs @@ -167,6 +167,7 @@ data RegistrantsSummary = RegistrantsSummary , rsConfirmed :: Int , rsAttending :: Int , rsAvailable :: Int + , rsScanned :: Int } deriving (Show) $(A.deriveJSON A.options ''RegistrantsSummary) @@ -175,11 +176,12 @@ registrantsSummaryToAttributeValue :: RegistrantsSummary -> DynamoDB.AttributeValue registrantsSummaryToAttributeValue RegistrantsSummary {..} = DynamoDB.attributeValue & DynamoDB.avM .~ HMS.fromList - [ ("total", avi rsTotal), - ("waiting", avi rsWaiting ), - ("confirmed", avi rsConfirmed), - ("attending", avi rsAttending), - ("available", avi rsAvailable) + [ ("total", avi rsTotal) + , ("waiting", avi rsWaiting) + , ("confirmed", avi rsConfirmed) + , ("attending", avi rsAttending) + , ("available", avi rsAvailable) + , ("scanned", avi rsScanned) ] @@ -187,7 +189,7 @@ registrantsSummaryFromAttributeValue :: DynamoDB.AttributeValue -> Maybe RegistrantsSummary registrantsSummaryFromAttributeValue av = RegistrantsSummary <$> getInt "total" <*> getInt "waiting" <*> getInt "confirmed" - <*> getInt "attending" <*> getInt "available" + <*> getInt "attending" <*> getInt "available" <*> getInt "scanned" where getInt :: T.Text -> Maybe Int getInt key = do diff --git a/lib/Zureg/Main/Janitor.hs b/lib/Zureg/Main/Janitor.hs index bbf2d70..96dd719 100644 --- a/lib/Zureg/Main/Janitor.hs +++ b/lib/Zureg/Main/Janitor.hs @@ -67,15 +67,17 @@ main hackathon = waitingRegistrants = waitingListUUIDs registrants registrantsToPop = take freeSpaces waitingRegistrants freeSpacesLeft = freeSpaces - length registrantsToPop + scanned = length $ filter rScanned registrants popWaitinglistUUIDs hackathon registrantsToPop let summary = Database.RegistrantsSummary - { Database.rsTotal = length registrants - , Database.rsWaiting = countByState isWaiting registrants + { Database.rsTotal = length registrants + , Database.rsWaiting = countByState isWaiting registrants , Database.rsConfirmed = countByState isConfirmed registrants , Database.rsAttending = attending , Database.rsAvailable = freeSpacesLeft + , Database.rsScanned = scanned } Database.putRegistrantsSummary db summary @@ -86,7 +88,8 @@ renderSummary rs = show (Database.rsTotal rs) ++ " total, " ++ show (Database.rsWaiting rs) ++ " waiting, " ++ show (Database.rsAttending rs) ++ " attending, " ++ show (Database.rsConfirmed rs) ++ " confirmed, " ++ - show (Database.rsAvailable rs) ++ " available" + show (Database.rsAvailable rs) ++ " available, " ++ + show (Database.rsScanned rs) ++ " scanned" -- This is to put Nothings to the end of a sorted list newtype Fifo = Fifo (Maybe Time.UTCTime) deriving Eq