defmodule Circlex.Struct.Payment do
import Circlex.Struct.Util
alias Circlex.Struct.{Amount, SourceDest}
defstruct [
:id,
:type,
:status,
:description,
:amount,
:fees,
:create_date,
:update_date,
:merchant_id,
:merchant_wallet_id,
:source,
:refunds
]
def deserialize(payment) do
%__MODULE__{
id: fetch(payment, :id),
type: fetch(payment, :type),
status: fetch(payment, :status),
description: fetch(payment, :description),
amount: Amount.deserialize(fetch(payment, :amount)),
fees: Amount.deserialize(fetch(payment, :fees)),
create_date: fetch(payment, :createDate),
update_date: fetch(payment, :updateDate),
merchant_id: fetch(payment, :merchantId),
merchant_wallet_id: fetch(payment, :merchantWalletId),
source: SourceDest.deserialize(fetch(payment, :source)),
refunds: fetch(payment, :refunds)
}
end
def serialize(payment = %__MODULE__{}) do
%{
id: payment.id,
type: payment.type,
status: payment.status,
description: payment.description,
amount: Amount.serialize(payment.amount),
fees: Amount.serialize(payment.fees),
createDate: payment.create_date,
updateDate: payment.update_date,
merchantId: payment.merchant_id,
merchantWalletId: payment.merchant_wallet_id,
source: SourceDest.serialize(payment.source),
refunds: payment.refunds
}
end
end