module Model.Payer.Income ( incomeDefinedForAll ) where import Data.Time.Clock (UTCTime) import Data.List (sort) import Data.Maybe import Database.Persist import Model.Database import Model.User (getUsers) import Model.Income (getFirstIncome) incomeDefinedForAll :: Persist (Maybe UTCTime) incomeDefinedForAll = do userIds <- map entityKey <$> getUsers firstIncomes <- mapM getFirstIncome userIds return $ if all isJust firstIncomes then listToMaybe . reverse . sort . map incomeCreation . catMaybes $ firstIncomes else Nothing