Current section
Files
Jump to
Current section
Files
lib/shopify/resources/customer.ex
defmodule Shopify.Customer do
@derive [Poison.Encoder]
@singular "customer"
@plural "customers"
use Shopify.Resource,
import: [
:find,
:all,
:count,
:create,
:update,
:delete,
:search
]
alias Shopify.{
Customer,
Address,
CustomerInvite
}
defstruct [
:accepts_marketing,
:addresses,
:created_at,
:currency,
:default_address,
:email,
:phone,
:first_name,
:id,
:multipass_identifier,
:last_name,
:last_order_id,
:last_order_name,
:note,
:orders_count,
:state,
:tags,
:tax_exempt,
:total_spent,
:updated_at,
:verified_email,
:send_email_invite,
:send_email_welcome
]
@doc false
def empty_resource do
%Customer{
addresses: [%Address{}],
default_address: %Address{}
}
end
@doc false
def find_url(id), do: @plural <> "/#{id}.json"
@doc false
def all_url, do: @plural <> ".json"
@doc false
def count_url, do: @plural <> "/count.json"
@doc false
def search_url, do: @plural <> "/search.json"
@doc false
def invite_url(id), do: @plural <> "/#{id}/send_invite.json"
@doc false
def orders(session, id, params \\ %{}) do
session
|> Customer.Order.all(id, params)
end
@doc false
def account_activation_url(session, id) do
session
|> Request.new(@plural <> "/#{id}/account_activation_url.json", %{})
|> Client.post()
end
@doc false
def send_invite(session, id) do
session
|> Request.new(invite_url(id), %{}, CustomerInvite.singular_resource())
|> Client.post()
end
@doc false
def send_invite(session, id, %CustomerInvite{} = customer_invite) do
session
|> Request.new(
invite_url(id),
%{},
CustomerInvite.singular_resource(),
CustomerInvite.to_json(customer_invite)
)
|> Client.post()
end
end