diff options
Diffstat (limited to 'server/src/Validation')
| -rw-r--r-- | server/src/Validation/Atomic.hs | 32 | ||||
| -rw-r--r-- | server/src/Validation/CreatePayment.hs | 25 | 
2 files changed, 57 insertions, 0 deletions
diff --git a/server/src/Validation/Atomic.hs b/server/src/Validation/Atomic.hs new file mode 100644 index 0000000..d15ad49 --- /dev/null +++ b/server/src/Validation/Atomic.hs @@ -0,0 +1,32 @@ +module Validation.Atomic +  ( nonEmpty +  , nonNullNumber +  -- , number +  ) where + +import           Data.Text  (Text) +import qualified Data.Text  as T + +import qualified Common.Msg as Msg + +nonEmpty :: Text -> Maybe Text +nonEmpty str = +  if T.null str +    then Just $ Msg.get Msg.Form_NonEmpty +    else Nothing + +nonNullNumber :: Int -> Maybe Text +nonNullNumber n = +  if n == 0 +     then Just $ Msg.get Msg.Form_NonNullNumber +    else Nothing + +-- number :: (Int -> Bool) -> Text -> Maybe Int +-- number numberForm str = +--   case reads (T.unpack str) :: [(Int, String)] of +--     (num, _) : _ -> +--       if numberForm num +--         then Just num +--         else Nothing +--     _ -> +--       Nothing diff --git a/server/src/Validation/CreatePayment.hs b/server/src/Validation/CreatePayment.hs new file mode 100644 index 0000000..fbcdb7c --- /dev/null +++ b/server/src/Validation/CreatePayment.hs @@ -0,0 +1,25 @@ +module Validation.CreatePayment +  ( validate +  ) where + +import           Data.Maybe                 (catMaybes) + +import           Common.Model.CreatePayment (CreatePayment (..), +                                             CreatePaymentError (..)) +import qualified Validation.Atomic          as Atomic + +validate :: CreatePayment -> Maybe CreatePaymentError +validate p = +  if not . null . catMaybes $ [ nameError, costError ] +    then Just createPaymentError +    else Nothing +  where +    nameError = Atomic.nonEmpty . _createPayment_name $ p +    costError = Atomic.nonNullNumber . _createPayment_cost $ p +    createPaymentError = CreatePaymentError +      { _createPaymentError_name      = nameError +      , _createPaymentError_cost      = costError +      , _createPaymentError_date      = Nothing +      , _createPaymentError_category  = Nothing +      , _createPaymentError_frequency = Nothing +      }  | 
