feat: Link transations with payment methods

This commit is contained in:
Ahmed Bouhuolia
2024-09-15 19:42:43 +02:00
parent 542e61dbfc
commit 430cf19533
21 changed files with 581 additions and 8 deletions

View File

@@ -0,0 +1,43 @@
import { Inject, Service } from 'typedi';
import { StripePaymentService } from './StripePaymentService';
import HasTenancyService from '../Tenancy/TenancyService';
import { snakeCase } from 'lodash';
interface CreateStripeAccountDTO {
name: string;
}
@Service()
export class CreateStripeAccountService {
@Inject()
private stripePaymentService: StripePaymentService;
@Inject()
private tenancy: HasTenancyService;
/**
* Creates a new Stripe account for Bigcapital.
* @param {number} tenantId
* @param {number} createStripeAccountDTO
*/
async createAccount(
tenantId: number,
createStripeAccountDTO: CreateStripeAccountDTO
) {
const { PaymentIntegration } = this.tenancy.models(tenantId);
// Creates a new Stripe account.
const account = await this.stripePaymentService.createAccount();
const slug = snakeCase(createStripeAccountDTO.name);
// Store the Stripe account on tenant store.
await PaymentIntegration.query().insert({
service: 'stripe',
name: createStripeAccountDTO.name,
slug,
enable: true,
accountId: account.id,
});
}
}