UNPKG

@lomray/microservice-payment-stripe

Version:

Stripe payment microservice based on NodeJS & inverted json.

63 lines (59 loc) 2.45 kB
'use strict'; var tslib = require('tslib'); var microserviceNodejsLib = require('@lomray/microservice-nodejs-lib'); var customer = require('../../entities/customer.js'); var messages = require('../../helpers/validators/messages.js'); var card = require('../../repositories/card.js'); /** * Customer webhook handlers */ class Customer { /** * @constructor */ constructor(manager) { this.manager = manager; } /** * Handles customer update */ handleCustomerUpdated(event, manager) { return tslib.__awaiter(this, void 0, void 0, function* () { yield manager.transaction((entityManager) => tslib.__awaiter(this, void 0, void 0, function* () { const customerRepository = entityManager.getRepository(customer); const cardRepository = entityManager.getCustomRepository(card); const { id, invoice_settings: invoiceSettings } = event.data.object; /** * @TODO: Investigate why relations return empty array */ const customer$1 = yield customerRepository.findOne({ customerId: id }); if (!customer$1) { throw new microserviceNodejsLib.BaseException({ status: 500, message: messages.getNotFoundMessage('Customer'), }); } const cards = yield cardRepository.find({ userId: customer$1.userId, }); /** * Update cards default statuses on change default card for charge */ yield Promise.all(cards.map((card$1) => { card$1.isDefault = card.extractPaymentMethodId(card$1) === invoiceSettings.default_payment_method; return cardRepository.save(card$1); })); /** * If customer has default payment method, and it's exist in stripe */ if (customer$1.params.hasDefaultPaymentMethod && invoiceSettings.default_payment_method) { return; } customer$1.params.hasDefaultPaymentMethod = Boolean(invoiceSettings.default_payment_method); yield customerRepository.save(customer$1); })); }); } } module.exports = Customer;