diff options
Diffstat (limited to 'common/src/Common/Validation/Payment.hs')
-rw-r--r-- | common/src/Common/Validation/Payment.hs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/common/src/Common/Validation/Payment.hs b/common/src/Common/Validation/Payment.hs new file mode 100644 index 0000000..e3c447a --- /dev/null +++ b/common/src/Common/Validation/Payment.hs @@ -0,0 +1,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 |