diff options
Diffstat (limited to 'src/client/elm/Model')
-rw-r--r-- | src/client/elm/Model/Init.elm | 1 | ||||
-rw-r--r-- | src/client/elm/Model/Payment.elm | 32 |
2 files changed, 28 insertions, 5 deletions
diff --git a/src/client/elm/Model/Init.elm b/src/client/elm/Model/Init.elm index 7028427..7fccf00 100644 --- a/src/client/elm/Model/Init.elm +++ b/src/client/elm/Model/Init.elm @@ -10,6 +10,5 @@ type alias Init = { users : Users , me : UserId , payments : Payments - , monthlyPayments : Payments , incomes : Incomes } diff --git a/src/client/elm/Model/Payment.elm b/src/client/elm/Model/Payment.elm index 80579e2..e792c6c 100644 --- a/src/client/elm/Model/Payment.elm +++ b/src/client/elm/Model/Payment.elm @@ -3,11 +3,13 @@ module Model.Payment , Payments , Payment , PaymentId + , Frequency(..) , paymentsDecoder , paymentIdDecoder , deletePayment - , PaymentFrequency(..) , totalPayments + , punctualPayments + , monthlyPayments ) where import Date exposing (..) @@ -27,33 +29,55 @@ type alias Payment = , name : String , cost : Int , userId : UserId + , frequency : Frequency } type alias PaymentId = Int -type PaymentFrequency = Punctual | Monthly +type Frequency = Punctual | Monthly paymentsDecoder : Json.Decoder Payments paymentsDecoder = Json.list paymentDecoder paymentDecoder : Json.Decoder Payment paymentDecoder = - Json.object5 Payment + Json.object6 Payment ("id" := paymentIdDecoder) ("creation" := dateDecoder) ("name" := Json.string) ("cost" := Json.int) ("userId" := userIdDecoder) + ("frequency" := frequencyDecoder) paymentIdDecoder : Json.Decoder PaymentId paymentIdDecoder = Json.int +frequencyDecoder : Json.Decoder Frequency +frequencyDecoder = + Json.customDecoder + Json.string + (\input -> case input of + "Punctual" -> Ok Punctual + "Monthly" -> Ok Monthly + _ -> Err ("Could not deduce Punctual nor Monthly from " ++ input) + ) + deletePayment : PaymentId -> Payments -> Payments deletePayment paymentId = List.filter (((/=) paymentId) << .id) totalPayments : (Payment -> Bool) -> UserId -> Payments -> Int totalPayments paymentFilter userId payments = payments - |> List.filter (\payment -> paymentFilter payment && payment.userId == userId) + |> List.filter (\payment -> + paymentFilter payment + && payment.userId == userId + && payment.frequency == Punctual + ) |> List.map .cost |> List.sum + +punctualPayments : Payments -> Payments +punctualPayments = List.filter ((==) Punctual << .frequency) + +monthlyPayments : Payments -> Payments +monthlyPayments = List.filter ((==) Monthly << .frequency) |