{- This file is part of Vervis. - - Written in 2016 by fr33domlover . - - ♡ Copying is an act of love. Please copy, reuse and share. - - The author(s) have dedicated all copyright and related and neighboring - rights to this software to the public domain worldwide. This software is - distributed without any warranty. - - You should have received a copy of the CC0 Public Domain Dedication along - with this software. If not, see - . -} module Vervis.TicketFilter ( TicketFilter (..) , filterTickets ) where import Prelude import Data.Default.Class import Database.Esqueleto import Vervis.Model data TicketFilter = TicketFilter { tfStatus :: Maybe Bool } instance Default TicketFilter where def = TicketFilter { tfStatus = Nothing } ticketFilter :: Esqueleto q e b => TicketFilter -> e (Entity Ticket) -> Maybe (e (Value Bool)) ticketFilter tf ticket = case tfStatus tf of Nothing -> Nothing Just t -> Just $ ticket ^. TicketDone ==. val t filterTickets :: Esqueleto q e b => TicketFilter -> e (Entity Ticket) -> e (Value Bool) -> e (Value Bool) filterTickets tf ticket cond = case ticketFilter tf ticket of Nothing -> cond Just f -> cond &&. f