module Validation exposing ( date , category ) import Date exposing (Date) import Date.Extra.Core exposing (intToMonth) import Date.Extra.Create exposing (dateFromFields) import Dict import String exposing (toInt, split) import Form.Validate as Validate exposing (..) import Model.Category exposing (Categories, CategoryId) date : Validation String Date date = customValidation string (\str -> case split "/" str of [day, month, year] -> case (toInt day, toInt month, toInt year) of (Ok dayNum, Ok monthNum, Ok yearNum) -> Ok (dateFromFields yearNum (intToMonth monthNum) dayNum 0 0 0 0) _ -> Err (customError "InvalidDate") _ -> Err (customError "InvalidDate") ) category : Categories -> Validation String CategoryId category categories = customValidation string (\str -> case toInt str of Ok category -> if List.member category (Dict.keys categories) then Ok category else Err (customError "InvalidCategory") Err _ -> Err (customError "InvalidCategory") )