module Model.Payment ( perPage , Payments , Payment , PaymentId , paymentsDecoder , paymentIdDecoder , deletePayment , PaymentFrequency(..) ) where import Date exposing (..) import Json.Decode as Json exposing ((:=)) import Model.User exposing (UserId, userIdDecoder) import Model.Date exposing (dateDecoder) perPage : Int perPage = 8 type alias Payments = List Payment type alias Payment = { id : PaymentId , creation : Date , name : String , cost : Int , userId : UserId } type alias PaymentId = Int type PaymentFrequency = Punctual | Monthly paymentsDecoder : Json.Decoder Payments paymentsDecoder = Json.list paymentDecoder paymentDecoder : Json.Decoder Payment paymentDecoder = Json.object5 Payment ("id" := paymentIdDecoder) ("creation" := dateDecoder) ("name" := Json.string) ("cost" := Json.int) ("userId" := userIdDecoder) paymentIdDecoder : Json.Decoder PaymentId paymentIdDecoder = Json.int deletePayment : PaymentId -> Payments -> Payments deletePayment paymentId = List.filter (((/=) paymentId) << .id)