aboutsummaryrefslogtreecommitdiff
path: root/src/client/Update/Payment.elm
blob: b9b60dd1076b01c93cb820667b2a89926f8e442a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
module Update.Payment
  ( PaymentAction(..)
  , updatePayment
  ) where

import Date
import Dict

import Model exposing (Model)
import Model.Payment exposing (..)
import Model.Payers exposing (..)
import Model.View.PaymentView exposing (..)
import Model.View.Payment.Add exposing (..)

import Update.Payment.Add exposing (..)

type PaymentAction =
  UpdateAdd AddPaymentAction
  | UpdatePayments Payments
  | AddPayment String Int Payments
  | ToggleEdit PaymentId
  | Remove String Int Payments
  | UpdatePage Int Payments

updatePayment : Model -> PaymentAction -> PaymentView -> PaymentView
updatePayment model action paymentView =
  case action of
    UpdateAdd addPaymentAction ->
      { paymentView | add <- updateAddPayment addPaymentAction paymentView.add }
    UpdatePayments payments ->
      { paymentView | payments <- payments }
    AddPayment userName cost payments ->
      { paymentView
      | payments <- payments
      , currentPage <- 1
      , add <- initAddPayment
      , payers <- updatePayers paymentView.payers userName cost
      , paymentsCount <- paymentView.paymentsCount + 1
      }
    ToggleEdit id ->
      { paymentView | edition <- if paymentView.edition == Just id then Nothing else Just id }
    Remove userName cost payments ->
      { paymentView
      | payments <- payments
      , payers <- updatePayers paymentView.payers userName -cost
      , paymentsCount <- paymentView.paymentsCount - 1
      }
    UpdatePage page payments ->
      { paymentView
      | currentPage <- page
      , payments <- payments
      }