packages feed

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