crem-0.1.0.0: examples/Crem/Example/RiskManager/Policy.hs
{-# LANGUAGE OverloadedStrings #-}
module Crem.Example.RiskManager.Policy where
import Crem.Example.RiskManager.Domain
import Crem.StateMachine
riskPolicy :: StateMachine RiskEvent (Maybe RiskCommand)
riskPolicy =
stateless
( \case
UserDataRegistered ud -> ProvideCreditBureauData <$> creditBureauDataForUser ud
LoanDetailsProvided _ -> Nothing
CreditBureauDataReceived _ -> Nothing
)
where
creditBureauDataForUser :: UserData -> Maybe CreditBureauData
creditBureauDataForUser (UserData name _ _) =
if name == "Marco"
then
Just $
CreditBureauData
(MissedPaymentDeadlines 2)
(EuroCents 100000)
else Nothing