{-# LANGUAGE OverloadedStrings #-}

module Web.Stripe.Discount
    ( Discount(..)
    ) where

import Web.Stripe.Utils

import Web.Stripe.Coupon

data Discount = Discount {
    disCustomerId :: CustomerId
  , disCoupon :: Coupon
  , disSubscriptionId :: Maybe SubscriptionId
  , disStart :: Maybe UTCTime
  , disEnd   :: Maybe UTCTime
  } deriving (Show)

instance FromJSON Discount where
    parseJSON = withObject "Discount" $ \o -> Discount
      <$> (     CustomerId <$> o .: "customer")
      <*> o .: "coupon"
      <*> (fmap SubscriptionId <$> o .:? "subscription")
      <*> (fmap fromSeconds <$> o .:? "start")
      <*> (fmap fromSeconds <$> o .:? "end")