mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-18 22:00:31 +00:00
add server to monorepo.
This commit is contained in:
@@ -0,0 +1,286 @@
|
||||
import { Inject } from 'typedi';
|
||||
import events from '@/subscribers/events';
|
||||
import {
|
||||
IBillCreatingPayload,
|
||||
IBillEditingPayload,
|
||||
IBillEventDeletingPayload,
|
||||
IBillPaymentCreatingPayload,
|
||||
IBillPaymentDeletingPayload,
|
||||
IBillPaymentEditingPayload,
|
||||
IRefundVendorCreditCreatingPayload,
|
||||
IRefundVendorCreditDeletingPayload,
|
||||
IVendorCreditCreatingPayload,
|
||||
IVendorCreditDeletingPayload,
|
||||
IVendorCreditEditingPayload,
|
||||
} from '@/interfaces';
|
||||
import PurchasesTransactionsLocking from './PurchasesTransactionLockingGuard';
|
||||
|
||||
export default class PurchasesTransactionLockingGuardSubscriber {
|
||||
@Inject()
|
||||
purchasesTransactionsLocking: PurchasesTransactionsLocking;
|
||||
|
||||
/**
|
||||
* Attaches events with handlers.
|
||||
* @param bus
|
||||
*/
|
||||
public attach = (bus) => {
|
||||
// Bills
|
||||
bus.subscribe(
|
||||
events.bill.onCreating,
|
||||
this.transactionLockingGuardOnBillCreating
|
||||
);
|
||||
bus.subscribe(
|
||||
events.bill.onEditing,
|
||||
this.transactionLockingGuardOnBillEditing
|
||||
);
|
||||
bus.subscribe(
|
||||
events.bill.onDeleting,
|
||||
this.transactionLockingGuardOnBillDeleting
|
||||
);
|
||||
// Payment mades.
|
||||
bus.subscribe(
|
||||
events.billPayment.onCreating,
|
||||
this.transactionLockingGuardOnPaymentCreating
|
||||
);
|
||||
bus.subscribe(
|
||||
events.billPayment.onEditing,
|
||||
this.transactionLockingGuardOnPaymentEditing
|
||||
);
|
||||
bus.subscribe(
|
||||
events.billPayment.onDeleting,
|
||||
this.transactionLockingGuardOnPaymentDeleting
|
||||
);
|
||||
// Vendor credits.
|
||||
bus.subscribe(
|
||||
events.vendorCredit.onCreating,
|
||||
this.transactionLockingGuardOnVendorCreditCreating
|
||||
);
|
||||
bus.subscribe(
|
||||
events.vendorCredit.onDeleting,
|
||||
this.transactionLockingGuardOnVendorCreditDeleting
|
||||
);
|
||||
bus.subscribe(
|
||||
events.vendorCredit.onEditing,
|
||||
this.transactionLockingGuardOnVendorCreditEditing
|
||||
);
|
||||
bus.subscribe(
|
||||
events.vendorCredit.onRefundCreating,
|
||||
this.transactionLockingGuardOnRefundVendorCredit
|
||||
);
|
||||
bus.subscribe(
|
||||
events.vendorCredit.onRefundDeleting,
|
||||
this.transactionLockingGuardOnRefundCreditDeleting
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* ---------------------------------------------
|
||||
* PAYMENT MADES.
|
||||
* ---------------------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
* Transaction locking guard on payment editing.
|
||||
* @param {IBillPaymentEditingPayload}
|
||||
*/
|
||||
private transactionLockingGuardOnPaymentEditing = async ({
|
||||
tenantId,
|
||||
oldBillPayment,
|
||||
billPaymentDTO,
|
||||
}: IBillPaymentEditingPayload) => {
|
||||
// Validate old payment date.
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
oldBillPayment.paymentDate
|
||||
);
|
||||
// Validate the new payment date.
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
billPaymentDTO.paymentDate
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Transaction locking guard on payment creating.
|
||||
* @param {IBillPaymentCreatingPayload}
|
||||
*/
|
||||
private transactionLockingGuardOnPaymentCreating = async ({
|
||||
tenantId,
|
||||
billPaymentDTO,
|
||||
}: IBillPaymentCreatingPayload) => {
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
billPaymentDTO.paymentDate
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Transaction locking guard on payment deleting.
|
||||
* @param {IBillPaymentDeletingPayload} payload -
|
||||
*/
|
||||
private transactionLockingGuardOnPaymentDeleting = async ({
|
||||
tenantId,
|
||||
oldBillPayment,
|
||||
}: IBillPaymentDeletingPayload) => {
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
oldBillPayment.paymentDate
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* ---------------------------------------------
|
||||
* BILLS.
|
||||
* ---------------------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
* Transaction locking guard on bill creating.
|
||||
* @param {IBillCreatingPayload} payload
|
||||
*/
|
||||
private transactionLockingGuardOnBillCreating = async ({
|
||||
tenantId,
|
||||
billDTO,
|
||||
}: IBillCreatingPayload) => {
|
||||
// Can't continue if the new bill is not published.
|
||||
if (!billDTO.open) return;
|
||||
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
billDTO.billDate
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Transaction locking guard on bill editing.
|
||||
* @param {IBillEditingPayload} payload
|
||||
*/
|
||||
private transactionLockingGuardOnBillEditing = async ({
|
||||
oldBill,
|
||||
tenantId,
|
||||
billDTO,
|
||||
}: IBillEditingPayload) => {
|
||||
// Can't continue if the old and new bill are not published.
|
||||
if (!oldBill.isOpen && !billDTO.open) return;
|
||||
|
||||
// Validate the old bill date.
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
oldBill.billDate
|
||||
);
|
||||
// Validate the new bill date.
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
billDTO.billDate
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Transaction locking guard on bill deleting.
|
||||
* @param {IBillEventDeletingPayload} payload
|
||||
*/
|
||||
private transactionLockingGuardOnBillDeleting = async ({
|
||||
tenantId,
|
||||
oldBill,
|
||||
}: IBillEventDeletingPayload) => {
|
||||
// Can't continue if the old bill is not published.
|
||||
if (!oldBill.isOpen) return;
|
||||
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
oldBill.billDate
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* ---------------------------------------------
|
||||
* VENDOR CREDITS.
|
||||
* ---------------------------------------------
|
||||
*/
|
||||
|
||||
/**
|
||||
* Transaction locking guard on vendor credit creating.
|
||||
* @param {IVendorCreditCreatingPayload} payload
|
||||
*/
|
||||
private transactionLockingGuardOnVendorCreditCreating = async ({
|
||||
tenantId,
|
||||
vendorCreditCreateDTO,
|
||||
}: IVendorCreditCreatingPayload) => {
|
||||
// Can't continue if the new vendor credit is not published.
|
||||
if (!vendorCreditCreateDTO.open) return;
|
||||
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
vendorCreditCreateDTO.vendorCreditDate
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Transaction locking guard on vendor credit deleting.
|
||||
* @param {IVendorCreditDeletingPayload} payload
|
||||
*/
|
||||
private transactionLockingGuardOnVendorCreditDeleting = async ({
|
||||
tenantId,
|
||||
oldVendorCredit,
|
||||
}: IVendorCreditDeletingPayload) => {
|
||||
// Can't continue if the old vendor credit is not open.
|
||||
if (!oldVendorCredit.isOpen) return;
|
||||
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
oldVendorCredit.vendorCreditDate
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Transaction locking guard on vendor credit editing.
|
||||
* @param {IVendorCreditEditingPayload} payload
|
||||
*/
|
||||
private transactionLockingGuardOnVendorCreditEditing = async ({
|
||||
tenantId,
|
||||
oldVendorCredit,
|
||||
vendorCreditDTO,
|
||||
}: IVendorCreditEditingPayload) => {
|
||||
// Can't continue if the old and new vendor credit are not published.
|
||||
if (!oldVendorCredit.isPublished && !vendorCreditDTO.open) return;
|
||||
|
||||
// Validate the old credit date.
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
oldVendorCredit.vendorCreditDate
|
||||
);
|
||||
// Validate the new credit date.
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
vendorCreditDTO.vendorCreditDate
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Transaction locking guard on refund vendor credit creating.
|
||||
* @param {IRefundVendorCreditCreatingPayload} payload -
|
||||
*/
|
||||
private transactionLockingGuardOnRefundVendorCredit = async ({
|
||||
tenantId,
|
||||
refundVendorCreditDTO,
|
||||
}: IRefundVendorCreditCreatingPayload) => {
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
refundVendorCreditDTO.date
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Transaction locking guard on refund vendor credit deleting.
|
||||
* @param {IRefundVendorCreditDeletingPayload} payload
|
||||
*/
|
||||
private transactionLockingGuardOnRefundCreditDeleting = async ({
|
||||
tenantId,
|
||||
oldRefundCredit,
|
||||
}: IRefundVendorCreditDeletingPayload) => {
|
||||
await this.purchasesTransactionsLocking.transactionLockingGuard(
|
||||
tenantId,
|
||||
oldRefundCredit.date
|
||||
);
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user