From 8c24464a4bd0a486cd0ddf846d3b5a323a7aaa9a Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 4 Oct 2015 20:48:32 +0200 Subject: Using incomes to compute a fair computation to designate the payer --- src/client/Update/LoggedIn/Account.elm | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'src/client/Update/LoggedIn') diff --git a/src/client/Update/LoggedIn/Account.elm b/src/client/Update/LoggedIn/Account.elm index 2d9cd87..cf4c834 100644 --- a/src/client/Update/LoggedIn/Account.elm +++ b/src/client/Update/LoggedIn/Account.elm @@ -4,33 +4,35 @@ module Update.LoggedIn.Account ) where import Maybe +import Time exposing (Time) +import Dict import Model.User exposing (UserId) -import Model.Payers exposing (..) +import Model.Payer exposing (..) import Model.View.LoggedIn.Account exposing (..) import Utils.Maybe exposing (isJust) type AccountAction = ToggleDetail - | UpdatePayer UserId Int + | UpdatePayer UserId Time Int | ToggleIncomeEdition | UpdateIncomeEdition String | UpdateEditionError String - | UpdateIncome Int + | UpdateIncome Time Int updateAccount : AccountAction -> Account -> Account updateAccount action account = case action of ToggleDetail -> { account | visibleDetail <- not account.visibleDetail } - UpdatePayer userId cost -> - { account | payers <- updatePayers account.payers userId cost } + UpdatePayer userId creation amountDiff -> + { account | payers <- updatePayers account.payers userId creation amountDiff } ToggleIncomeEdition -> { account | incomeEdition <- if isJust account.incomeEdition then Nothing - else Just (initIncomeEdition (Maybe.withDefault 0 account.income)) + else Just (initIncomeEdition (Maybe.withDefault 0 (getCurrentIncome account))) } UpdateIncomeEdition income -> case account.incomeEdition of @@ -44,8 +46,19 @@ updateAccount action account = { account | incomeEdition <- Just { incomeEdition | error <- Just error } } Nothing -> account - UpdateIncome amount -> + UpdateIncome currentTime amount -> { account - | income <- Just amount + | payers <- + account.payers + |> Dict.update account.me (\mbPayer -> + case mbPayer of + Just payer -> + Just + { payer + | incomes <- payer.incomes ++ [{ creation = currentTime, amount = amount }] + } + Nothing -> + Nothing + ) , incomeEdition <- Nothing } -- cgit v1.2.3