mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-19 06:10:31 +00:00
feat: Edit Stripe payment settings
This commit is contained in:
@@ -21,6 +21,7 @@ export class PaymentServicesController extends BaseController {
|
||||
asyncMiddleware(this.getPaymentServicesSpecificInvoice.bind(this))
|
||||
);
|
||||
router.get('/state', this.getPaymentMethodsState.bind(this));
|
||||
router.get('/:paymentServiceId', this.getPaymentService.bind(this));
|
||||
router.post(
|
||||
'/:paymentMethodId',
|
||||
[
|
||||
@@ -65,6 +66,33 @@ export class PaymentServicesController extends BaseController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a specific payment service.
|
||||
* @param {Request} req - Request.
|
||||
* @param {Response} res - Response.
|
||||
* @param {NextFunction} next - Next function.
|
||||
* @return {Promise<Response | void>}
|
||||
*/
|
||||
private async getPaymentService(
|
||||
req: Request<{ paymentServiceId: number }>,
|
||||
res: Response,
|
||||
next: NextFunction
|
||||
) {
|
||||
const { tenantId } = req;
|
||||
const { paymentServiceId } = req.params;
|
||||
|
||||
try {
|
||||
const paymentService = await this.paymentServicesApp.getPaymentService(
|
||||
tenantId,
|
||||
paymentServiceId
|
||||
);
|
||||
|
||||
return res.status(200).send({ data: paymentService });
|
||||
} catch (error) {
|
||||
next(error);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Edits the given payment method settings.
|
||||
* @param {Request} req - Request.
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
import { Inject, Service } from 'typedi';
|
||||
import HasTenancyService from '../Tenancy/TenancyService';
|
||||
import { GetPaymentMethodsPOJO } from './types';
|
||||
|
||||
@Service()
|
||||
export class GetPaymentMethodService {
|
||||
@Inject()
|
||||
private tenancy: HasTenancyService;
|
||||
|
||||
/**
|
||||
* Retrieves the payment state provising state.
|
||||
* @param {number} tenantId
|
||||
* @returns {Promise<GetPaymentMethodsPOJO>}
|
||||
*/
|
||||
public async getPaymentMethod(
|
||||
tenantId: number,
|
||||
paymentServiceId: number
|
||||
): Promise<GetPaymentMethodsPOJO> {
|
||||
const { PaymentIntegration } = this.tenancy.models(tenantId);
|
||||
|
||||
const stripePayment = await PaymentIntegration.query()
|
||||
.findById(paymentServiceId)
|
||||
.throwIfNotFound();
|
||||
|
||||
return stripePayment;
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import { DeletePaymentMethodService } from './DeletePaymentMethodService';
|
||||
import { EditPaymentMethodService } from './EditPaymentMethodService';
|
||||
import { EditPaymentMethodDTO, GetPaymentMethodsPOJO } from './types';
|
||||
import { GetPaymentMethodsStateService } from './GetPaymentMethodsState';
|
||||
import { GetPaymentMethodService } from './GetPaymentService';
|
||||
|
||||
@Service()
|
||||
export class PaymentServicesApplication {
|
||||
@@ -19,6 +20,9 @@ export class PaymentServicesApplication {
|
||||
@Inject()
|
||||
private getPaymentMethodsStateService: GetPaymentMethodsStateService;
|
||||
|
||||
@Inject()
|
||||
private getPaymentMethodService: GetPaymentMethodService;
|
||||
|
||||
/**
|
||||
* Retrieves the payment services for a specific invoice.
|
||||
* @param {number} tenantId - The ID of the tenant.
|
||||
@@ -31,6 +35,18 @@ export class PaymentServicesApplication {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves specific payment service details.
|
||||
* @param {number} tenantId - Tennat id.
|
||||
* @param {number} paymentServiceId - Payment service id.
|
||||
*/
|
||||
public async getPaymentService(tenantId: number, paymentServiceId: number) {
|
||||
return this.getPaymentMethodService.getPaymentMethod(
|
||||
tenantId,
|
||||
paymentServiceId
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the given payment method.
|
||||
* @param {number} tenantId
|
||||
|
||||
Reference in New Issue
Block a user