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