diff options
Diffstat (limited to 'src/client/Update')
| -rw-r--r-- | src/client/Update/LoggedIn.elm | 12 | ||||
| -rw-r--r-- | src/client/Update/LoggedIn/Account.elm | 29 | 
2 files changed, 28 insertions, 13 deletions
| diff --git a/src/client/Update/LoggedIn.elm b/src/client/Update/LoggedIn.elm index 07f3426..e200b04 100644 --- a/src/client/Update/LoggedIn.elm +++ b/src/client/Update/LoggedIn.elm @@ -16,13 +16,15 @@ import Update.LoggedIn.Add exposing (..)  import Update.LoggedIn.Monthly as UM  import Update.LoggedIn.Account as UA +import Utils.List exposing (find) +  type LoggedAction =    UpdateAdd AddPaymentAction    | UpdatePayments Payments    | AddPayment UserId String Int Payments    | AddMonthlyPayment PaymentId String Int    | ToggleEdit PaymentId -  | DeletePayment UserId Int Payments +  | DeletePayment Payment Payments    | UpdatePage Int Payments    | UpdateMonthly UM.MonthlyAction    | UpdateAccount UA.AccountAction @@ -39,22 +41,22 @@ updateLoggedIn model action loggedInView =        | payments <- payments        , currentPage <- 1        , add <- initAddPayment Punctual -      , account <- UA.updateAccount (UA.UpdatePayer userId cost) loggedInView.account +      , account <- UA.updateAccount (UA.UpdatePayer userId model.currentTime cost) loggedInView.account        , paymentsCount <- loggedInView.paymentsCount + 1        }      AddMonthlyPayment id name cost ->        { loggedInView        | add <- initAddPayment Monthly        , monthly <- -          let payment = Payment id (Date.fromTime model.currentTime) name cost loggedInView.me +          let payment = Payment id (Date.fromTime model.currentTime) name cost loggedInView.account.me            in  UM.updateMonthly (UM.AddPayment payment) loggedInView.monthly        }      ToggleEdit id ->        { loggedInView | paymentEdition <- if loggedInView.paymentEdition == Just id then Nothing else Just id } -    DeletePayment userId cost payments -> +    DeletePayment payment payments ->        { loggedInView        | payments <- payments -      , account <- UA.updateAccount (UA.UpdatePayer userId -cost) loggedInView.account +      , account <- UA.updateAccount (UA.UpdatePayer payment.userId (Date.toTime payment.creation) -payment.cost) loggedInView.account        , paymentsCount <- loggedInView.paymentsCount - 1        }      UpdatePage page payments -> 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        } | 
