aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/LoggedIn/Update.elm
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/elm/LoggedIn/Update.elm')
-rw-r--r--src/client/elm/LoggedIn/Update.elm80
1 files changed, 54 insertions, 26 deletions
diff --git a/src/client/elm/LoggedIn/Update.elm b/src/client/elm/LoggedIn/Update.elm
index 06cd623..9e6d6ee 100644
--- a/src/client/elm/LoggedIn/Update.elm
+++ b/src/client/elm/LoggedIn/Update.elm
@@ -15,6 +15,8 @@ import Form
import Model exposing (Model)
import Model.Payment as Payment exposing (Payment, Frequency(..))
import Model.Income as Income exposing (Income)
+import Model.Category exposing (Category)
+import Model.PaymentCategory as PaymentCategory
import Server
import LoggedData
@@ -22,16 +24,16 @@ import LoggedData
import LoggedIn.Msg as LoggedInMsg
import LoggedIn.Model as LoggedInModel
-import LoggedIn.Home.Msg as HomeMsg
-import LoggedIn.Home.Update as HomeUpdate
-import LoggedIn.Home.Model as HomeModel
+import LoggedIn.Home.Msg as Home
+import LoggedIn.Home.Update as Home
+import LoggedIn.Home.Model as Home
-import LoggedIn.Income.Msg as IncomeMsg
-import LoggedIn.Income.Update as IncomeUpdate
+import LoggedIn.Income.Update as Income
+import LoggedIn.Income.Model as Income
-import LoggedIn.Income.Model as IncomeModel
+import LoggedIn.Category.Update as Categories
+import LoggedIn.Category.Model as Categories
-import Utils.Tuple as Tuple
import Utils.Cmd exposing ((:>))
update : Model -> LoggedInMsg.Msg -> LoggedInModel.Model -> (LoggedInModel.Model, Cmd LoggedInMsg.Msg)
@@ -45,32 +47,51 @@ update model msg loggedIn =
)
LoggedInMsg.HomeMsg homeMsg ->
- case HomeUpdate.update loggedData homeMsg loggedIn.home of
+ case Home.update loggedData homeMsg loggedIn.home of
(home, effects) ->
( { loggedIn | home = home }
, Cmd.map LoggedInMsg.HomeMsg effects
)
LoggedInMsg.IncomeMsg incomeMsg ->
- case IncomeUpdate.update loggedData incomeMsg loggedIn.income of
+ case Income.update loggedData incomeMsg loggedIn.income of
(income, cmd) ->
( { loggedIn | income = income }
, Cmd.map LoggedInMsg.IncomeMsg cmd
)
- LoggedInMsg.ValidateCreatePayment paymentId name cost date frequency ->
- update model (LoggedInMsg.HomeMsg <| HomeMsg.SearchMsg (Form.Reset (HomeModel.searchInitial frequency))) loggedIn
- :> update model (LoggedInMsg.HomeMsg <| HomeMsg.UpdatePage 1)
+ LoggedInMsg.CategoriesMsg categoriesMsg ->
+ case Categories.update loggedData categoriesMsg loggedIn.category of
+ (category, cmd) ->
+ ( { loggedIn | category = category }
+ , Cmd.map LoggedInMsg.CategoriesMsg cmd
+ )
+
+ LoggedInMsg.ValidateCreatePayment paymentId name cost date category frequency ->
+ update model (LoggedInMsg.HomeMsg <| Home.SearchMsg (Form.Reset (Home.searchInitial frequency))) loggedIn
+ :> update model (LoggedInMsg.HomeMsg <| Home.UpdatePage 1)
:> (\loggedIn ->
let newPayment = Payment paymentId name cost date loggedIn.me frequency
- in ( { loggedIn | payments = newPayment :: loggedIn.payments }
+ in ( { loggedIn
+ | payments = newPayment :: loggedIn.payments
+ , paymentCategories = PaymentCategory.set name category loggedIn.paymentCategories
+ }
, Cmd.none
)
)
- LoggedInMsg.ValidateEditPayment paymentId name cost date frequency ->
+ LoggedInMsg.ValidateEditPayment paymentId name cost date category frequency ->
let updatedPayment = Payment paymentId name cost date loggedIn.me frequency
- in ( { loggedIn | payments = Payment.edit updatedPayment loggedIn.payments }
+ mbOldPayment = Payment.find paymentId loggedIn.payments
+ in ( { loggedIn
+ | payments = Payment.edit updatedPayment loggedIn.payments
+ , paymentCategories =
+ case mbOldPayment of
+ Just oldPayment ->
+ PaymentCategory.update oldPayment.name name category loggedIn.paymentCategories
+ Nothing ->
+ loggedData.paymentCategories
+ }
, Cmd.none
)
@@ -86,7 +107,7 @@ update model msg loggedIn =
)
in if switchToPunctual
then
- update model (LoggedInMsg.HomeMsg <| HomeMsg.SearchMsg (Form.Reset (HomeModel.searchInitial Punctual))) loggedIn
+ update model (LoggedInMsg.HomeMsg <| Home.SearchMsg (Form.Reset (Home.searchInitial Punctual))) loggedIn
:> (\loggedIn ->
( { loggedIn | payments = payments }
, Cmd.none
@@ -99,20 +120,12 @@ update model msg loggedIn =
LoggedInMsg.ValidateCreateIncome incomeId amount date ->
let newIncome = { userId = loggedIn.me, amount = amount, time = Date.toTime date }
- loggedInIncome = loggedIn.income
- in ( { loggedIn
- | incomes = Dict.insert incomeId newIncome loggedIn.incomes
- , income = { loggedInIncome | addIncome = IncomeModel.initForm }
- }
+ in ( { loggedIn | incomes = Dict.insert incomeId newIncome loggedIn.incomes }
, Cmd.none
)
LoggedInMsg.ValidateEditIncome incomeId amount date ->
- let updatedIncome = Income loggedIn.me (Date.toTime date) amount
- updateIncome mbIncome =
- case mbIncome of
- Just _ -> Just updatedIncome
- Nothing -> Just updatedIncome
+ let updateIncome _ = Just <| Income loggedIn.me (Date.toTime date) amount
in ( { loggedIn | incomes = Dict.update incomeId updateIncome loggedIn.incomes }
, Cmd.none
)
@@ -121,3 +134,18 @@ update model msg loggedIn =
( { loggedIn | incomes = Dict.remove incomeId loggedIn.incomes }
, Cmd.none
)
+
+ LoggedInMsg.ValidateCreateCategory categoryId name color ->
+ let newCategory = { name = name, color = color }
+ in ( { loggedIn | categories = Dict.insert categoryId newCategory loggedIn.categories }
+ , Cmd.none
+ )
+
+ LoggedInMsg.ValidateEditCategory categoryId name color ->
+ let updateCategory _ = Just <| Category name color
+ in ( { loggedIn | categories = Dict.update categoryId updateCategory loggedIn.categories } , Cmd.none)
+
+ LoggedInMsg.ValidateDeleteCategory categoryId ->
+ ( { loggedIn | categories = Dict.remove categoryId loggedIn.categories }
+ , Cmd.none
+ )