aboutsummaryrefslogtreecommitdiff
path: root/server/src/Model/Payer.hs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/Model/Payer.hs')
-rw-r--r--server/src/Model/Payer.hs31
1 files changed, 16 insertions, 15 deletions
diff --git a/server/src/Model/Payer.hs b/server/src/Model/Payer.hs
index de4abd1..db3f37c 100644
--- a/server/src/Model/Payer.hs
+++ b/server/src/Model/Payer.hs
@@ -2,14 +2,15 @@ module Model.Payer
( getOrderedExceedingPayers
) where
-import Data.Map (Map)
-import Data.Time (UTCTime(..), NominalDiffTime)
-import qualified Data.List as List
-import qualified Data.Map as Map
-import qualified Data.Maybe as Maybe
-import qualified Data.Time as Time
+import qualified Data.List as List
+import Data.Map (Map)
+import qualified Data.Map as Map
+import qualified Data.Maybe as Maybe
+import Data.Time (NominalDiffTime, UTCTime (..))
+import qualified Data.Time as Time
-import Common.Model (User(..), UserId, Income(..), IncomeId, Payment(..))
+import Common.Model (Income (..), IncomeId, Payment (..), User (..),
+ UserId)
type Users = Map UserId User
@@ -20,20 +21,20 @@ type Incomes = Map IncomeId Income
type Payments = [Payment]
data Payer = Payer
- { preIncomePaymentSum :: Int
+ { preIncomePaymentSum :: Int
, postIncomePaymentSum :: Int
- , _incomes :: [Income]
+ , _incomes :: [Income]
}
data PostPaymentPayer = PostPaymentPayer
{ _preIncomePaymentSum :: Int
- , _cumulativeIncome :: Int
- , ratio :: Float
+ , _cumulativeIncome :: Int
+ , ratio :: Float
}
data ExceedingPayer = ExceedingPayer
{ _userId :: UserId
- , amount :: Int
+ , amount :: Int
} deriving (Show)
getOrderedExceedingPayers :: UTCTime -> [User] -> [Income] -> Payments -> [ExceedingPayer]
@@ -72,7 +73,7 @@ useIncomesFrom users incomes payments =
mbIncomeTime = incomeDefinedForAll (Map.keys users) incomes
in case (firstPaymentTime, mbIncomeTime) of
(Just t1, Just t2) -> Just (max t1 t2)
- _ -> Nothing
+ _ -> Nothing
paymentTime :: Payment -> UTCTime
paymentTime = flip UTCTime (Time.secondsToDiffTime 0) . _payment_date
@@ -95,7 +96,7 @@ getPayers currentTime users incomes payments =
(\p ->
case incomesDefined of
Nothing -> False
- Just t -> paymentTime p >= t
+ Just t -> paymentTime p >= t
)
userId
payments
@@ -197,7 +198,7 @@ nominalDay :: NominalDiffTime
nominalDay = 86400
safeHead :: [a] -> Maybe a
-safeHead [] = Nothing
+safeHead [] = Nothing
safeHead (x : _) = Just x
safeMinimum :: (Ord a) => [a] -> Maybe a