mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-21 00:47:26 +00:00
Update subscription form to use new card validations for Stripe payment method
This commit is contained in:
committed by
Maikel Linke
parent
a03dd1e10c
commit
c71a5ec0df
@@ -1,38 +1,42 @@
|
||||
angular.module("admin.subscriptions").controller "DetailsController", ($scope, $http, CreditCardResource, StatusMessage) ->
|
||||
angular.module("admin.subscriptions").controller "DetailsController", ($scope, $http, CustomerResource, StatusMessage) ->
|
||||
$scope.cardRequired = false
|
||||
|
||||
$scope.registerNextCallback 'details', ->
|
||||
$scope.subscription_form.$submitted = true
|
||||
if $scope.subscription_details_form.$valid
|
||||
$scope.subscription_form.$setPristine()
|
||||
StatusMessage.clear()
|
||||
$scope.setView('address')
|
||||
else
|
||||
StatusMessage.display 'failure', t('admin.subscriptions.details.invalid_error')
|
||||
return unless $scope.validate()
|
||||
$scope.subscription_form.$setPristine()
|
||||
StatusMessage.clear()
|
||||
$scope.setView('address')
|
||||
|
||||
$scope.$watch "subscription.customer_id", (newValue, oldValue) ->
|
||||
return if !newValue?
|
||||
$scope.loadAddresses(newValue) unless $scope.subscription.id?
|
||||
$scope.loadCreditCards(newValue)
|
||||
$scope.loadCustomer(newValue) unless $scope.subscription.id?
|
||||
|
||||
$scope.$watch "subscription.payment_method_id", (newValue, oldValue) ->
|
||||
return if !newValue?
|
||||
paymentMethod = ($scope.paymentMethods.filter (pm) -> pm.id == newValue)[0]
|
||||
return unless paymentMethod?
|
||||
if paymentMethod.type == "Spree::Gateway::StripeConnect"
|
||||
$scope.cardRequired = true
|
||||
else
|
||||
$scope.cardRequired = false
|
||||
$scope.subscription.credit_card_id = null
|
||||
$scope.cardRequired = (paymentMethod.type == "Spree::Gateway::StripeConnect")
|
||||
$scope.loadCustomer() if $scope.cardRequired && !$scope.customer
|
||||
|
||||
$scope.loadAddresses = (customer_id) ->
|
||||
$http.get("/admin/customers/#{customer_id}/addresses")
|
||||
.success (response) =>
|
||||
delete response.bill_address.id
|
||||
delete response.ship_address.id
|
||||
angular.extend($scope.subscription.bill_address, response.bill_address)
|
||||
angular.extend($scope.subscription.ship_address, response.ship_address)
|
||||
$scope.shipAddressFromBilling() unless response.ship_address.address1?
|
||||
$scope.loadCustomer = ->
|
||||
params = { id: $scope.subscription.customer_id }
|
||||
$scope.customer = CustomerResource.get params, (response) ->
|
||||
for address in ['bill_address','ship_address']
|
||||
return unless response[address]
|
||||
delete response[address].id
|
||||
return if $scope.subscription[address].address1?
|
||||
angular.extend($scope.subscription[address], response[address])
|
||||
$scope.shipAddressFromBilling() unless response.ship_address?.address1?
|
||||
|
||||
$scope.loadCreditCards = (customer_id) ->
|
||||
$scope.creditCards = CreditCardResource.index(customer_id: customer_id)
|
||||
$scope.validate = ->
|
||||
return true if $scope.subscription_details_form.$valid && $scope.creditCardOk()
|
||||
StatusMessage.display 'failure', t('admin.subscriptions.details.invalid_error')
|
||||
false
|
||||
|
||||
$scope.creditCardOk = ->
|
||||
return true unless $scope.cardRequired
|
||||
return false unless $scope.customer
|
||||
return false unless $scope.customer.allow_charges
|
||||
return false unless $scope.customer.default_card_present
|
||||
true
|
||||
|
||||
Reference in New Issue
Block a user