module Model.View.LoggedIn.AddPayment ( AddPayment , Frequency(..) , initAddPayment , validateName , validateCost ) where import Result as Result exposing (Result(..)) import Utils.Validation exposing (..) import Model.Translations exposing (..) type alias AddPayment = { name : String , nameError : Maybe String , cost : String , costError : Maybe String , frequency : Frequency } initAddPayment : Frequency -> AddPayment initAddPayment frequency = { name = "" , nameError = Nothing , cost = "" , costError = Nothing , frequency = frequency } validateName : String -> Translations -> Result String String validateName name translations = name |> validateNonEmpty (getMessage "CategoryRequired" translations) validateCost : String -> Translations -> Result String Int validateCost cost translations = cost |> validateNonEmpty (getMessage "CostRequired" translations) |> flip Result.andThen (validateNumber (getMessage "CostRequired" translations) ((/=) 0)) type Frequency = Punctual | Monthly