aboutsummaryrefslogtreecommitdiff
path: root/common/src/Common/Validation/Payment.hs
blob: e3c447a67211de091fda35400fef43348d26239a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
module Common.Validation.Payment
  ( name
  , cost
  , date
  , category
  ) where

import           Data.Text                (Text)
import           Data.Time.Calendar       (Day)
import           Data.Validation          (Validation)
import qualified Data.Validation          as V

import           Common.Model             (CategoryId)
import qualified Common.Msg               as Msg
import qualified Common.Validation.Atomic as Atomic

name :: Text -> Validation Text Text
name = Atomic.nonEmpty

cost :: Text -> Validation Text Int
cost input = V.bindValidation (Atomic.number input) Atomic.nonNullNumber

date :: Text -> Validation Text Day
date = Atomic.day

category :: [CategoryId] -> CategoryId -> Validation Text CategoryId
category cs c =
  if elem c cs then
    V.Success c
  else
    V.Failure $ Msg.get Msg.Form_InvalidCategory