module LoggedIn.Home.Account.Model ( Model , IncomeEdition , init , initIncomeEdition , getCurrentIncome , validateIncome ) where import Result as Result exposing (Result(..)) import Dict import String import Utils.Dict exposing (mapValues) import Model.Translations exposing (..) import Model.Income exposing (..) import Model.User exposing (UserId) type alias Model = { visibleDetail : Bool , incomeEdition : Maybe IncomeEdition } init : Model init = { visibleDetail = False , incomeEdition = Nothing } getCurrentIncome : Incomes -> UserId -> Model -> Maybe Int getCurrentIncome incomes me account = incomes |> Dict.filter (\_ income -> income.userId == me) |> Dict.values |> List.sortBy .creation |> List.reverse |> List.head |> Maybe.map .amount type alias IncomeEdition = { income : String , error : Maybe String } initIncomeEdition : Int -> IncomeEdition initIncomeEdition income = { income = toString income , error = Nothing } validateIncome : String -> Translations -> Result String Int validateIncome amount translations = case String.toInt amount of Ok number -> if number > 0 then Ok number else Err <| getMessage "IncomeMustBePositiveNumber" translations Err _ -> Err <| getMessage "IncomeRequired" translations