module Uber.Types.Product where
import Data.Aeson
import Data.Text (Text)
import GHC.Generics (Generic)
import Uber.Auth
import WebApi
data LatLng = LatLng
{ latitude :: Double
, longitude :: Double
} deriving (Show, Generic)
newtype Products = Products { products :: [Product] }
deriving (Show, Generic)
data Product = Product
{ product_id :: Text
, short_description :: Maybe Text
, description :: Text
, display_name :: Text
, capacity :: Int
, image :: Text
, price_details :: PriceDetails
} deriving (Show, Generic)
data PriceDetails = PriceDetails
{ base :: Double
, minimum :: Double
, cost_per_minute :: Double
, cost_per_distance :: Double
, distance_unit :: Text
, cancellation_fee :: Double
, currency_code :: Text
, service_fees :: [AdditionalFee]
} deriving (Show, Generic)
data AdditionalFee = AdditionalFee
{ name :: Text
, fee :: Double
} deriving (Show, Generic)
newtype ProdId = ProdId
{ pid :: Field "product_id" Text
} deriving (Generic)
data ProductId = ProductId Text
instance ToParam LatLng 'QueryParam
instance ToParam ProdId 'PathParam
instance FromJSON Products
instance FromJSON Product
instance FromJSON PriceDetails
instance FromJSON AdditionalFee