Files
2018-02-22 16:13:29 +11:00

51 lines
1.5 KiB
CoffeeScript

angular.module("admin.resources").factory "Customers", ($q, $injector, InfoDialog, RequestMonitor, CustomerResource) ->
new class Customers
all: []
byID: {}
pristineByID: {}
constructor: ->
if $injector.has('customers')
@load($injector.get('customers'))
add: (params) ->
CustomerResource.create params, (customer) =>
if customer.id
@all.unshift customer
@byID[customer.id] = customer
@pristineByID[customer.id] = angular.copy(customer)
remove: (customer) ->
params = id: customer.id
CustomerResource.destroy params, =>
i = @all.indexOf customer
@all.splice i, 1 unless i < 0
, (response) =>
errors = response.data.errors
if errors?
InfoDialog.open 'error', errors[0]
else
InfoDialog.open 'error', t('js.resources.could_not_delete_customer') + ": #{customer.email}"
index: (params) ->
@clear()
request = CustomerResource.index(params, (data) => @load(data))
RequestMonitor.load(request.$promise)
request.$promise
load: (customers) ->
for customer in customers
@all.push customer
@byID[customer.id] = customer
@pristineByID[customer.id] = angular.copy(customer)
update: (address, customer, addressType) ->
params =
id: customer.id
customer:
"#{addressType}_attributes": address
CustomerResource.update params
clear: ->
@all.length = 0