mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-15 12:20:31 +00:00
152 lines
4.0 KiB
TypeScript
152 lines
4.0 KiB
TypeScript
import { Service, Inject } from 'typedi';
|
|
import { isUndefined } from 'lodash';
|
|
import HasTenancyService from '@/services/Tenancy/TenancyService';
|
|
import {
|
|
ITransactionMeta,
|
|
TransactionsLockingGroup,
|
|
TransactionsLockingType,
|
|
} from '@/interfaces';
|
|
import { parseDate } from 'utils';
|
|
|
|
@Service()
|
|
export default class TransactionsLockingRepository {
|
|
@Inject()
|
|
tenancy: HasTenancyService;
|
|
|
|
async saveTransactionsLocking(
|
|
tenantId: number,
|
|
lockingGroup: string = TransactionsLockingGroup.All,
|
|
transactionlocking
|
|
) {
|
|
const settings = this.tenancy.settings(tenantId);
|
|
const group = `transactions-locking`;
|
|
|
|
if (!isUndefined(transactionlocking.active)) {
|
|
settings.set({
|
|
group,
|
|
key: `${lockingGroup}.active`,
|
|
value: transactionlocking.active,
|
|
});
|
|
}
|
|
if (!isUndefined(transactionlocking.lockToDate)) {
|
|
settings.set({
|
|
group,
|
|
key: `${lockingGroup}.lock_to_date`,
|
|
value: parseDate(transactionlocking.lockToDate),
|
|
});
|
|
}
|
|
if (!isUndefined(transactionlocking.unlockFromDate)) {
|
|
settings.set({
|
|
group,
|
|
key: `${lockingGroup}.unlock_from_date`,
|
|
value: parseDate(transactionlocking.unlockFromDate),
|
|
});
|
|
}
|
|
if (!isUndefined(transactionlocking.unlockToDate)) {
|
|
settings.set({
|
|
group,
|
|
key: `${lockingGroup}.unlock_to_date`,
|
|
value: parseDate(transactionlocking.unlockToDate),
|
|
});
|
|
}
|
|
if (!isUndefined(transactionlocking.lockReason)) {
|
|
settings.set({
|
|
group,
|
|
key: `${lockingGroup}.lock_reason`,
|
|
value: transactionlocking.lockReason,
|
|
});
|
|
}
|
|
if (!isUndefined(transactionlocking.unlockReason)) {
|
|
settings.set({
|
|
group,
|
|
key: `${lockingGroup}.unlock_reason`,
|
|
value: transactionlocking.unlockReason,
|
|
});
|
|
}
|
|
if (!isUndefined(transactionlocking.partialUnlockReason)) {
|
|
settings.set({
|
|
group,
|
|
key: `${lockingGroup}.partial_unlock_reason`,
|
|
value: transactionlocking.partialUnlockReason,
|
|
});
|
|
}
|
|
|
|
await settings.save();
|
|
}
|
|
|
|
getTransactionsLocking(
|
|
tenantId: number,
|
|
lockingGroup: string = TransactionsLockingGroup.All
|
|
): ITransactionMeta {
|
|
const settings = this.tenancy.settings(tenantId);
|
|
const group = `transactions-locking`;
|
|
|
|
const isEnabled = settings.get({ group, key: `${lockingGroup}.active` });
|
|
|
|
const lockFromDate = settings.get({
|
|
group,
|
|
key: `${lockingGroup}.lock_from_date`,
|
|
});
|
|
const lockToDate = settings.get({
|
|
group,
|
|
key: `${lockingGroup}.lock_to_date`,
|
|
});
|
|
|
|
const unlockFromDate = settings.get({
|
|
group,
|
|
key: `${lockingGroup}.unlock_from_date`,
|
|
});
|
|
const unlockToDate = settings.get({
|
|
group,
|
|
key: `${lockingGroup}.unlock_to_date`,
|
|
});
|
|
|
|
const lockReason = settings.get({
|
|
group,
|
|
key: `${lockingGroup}.lock_reason`,
|
|
});
|
|
const unlockReason = settings.get({
|
|
group,
|
|
key: `${lockingGroup}.unlock_reason`,
|
|
});
|
|
const partialUnlockReason = settings.get({
|
|
group,
|
|
key: `${lockingGroup}.partial_unlock_reason`,
|
|
});
|
|
|
|
return {
|
|
isEnabled,
|
|
lockToDate: lockToDate || null,
|
|
unlockFromDate: unlockFromDate || null,
|
|
unlockToDate: unlockToDate || null,
|
|
isPartialUnlock: Boolean(unlockToDate && unlockFromDate),
|
|
lockReason: lockReason || '',
|
|
unlockReason: unlockReason || '',
|
|
partialUnlockReason: partialUnlockReason || '',
|
|
};
|
|
}
|
|
|
|
getTransactionsLockingType(tenantId: number) {
|
|
const settings = this.tenancy.settings(tenantId);
|
|
|
|
const lockingType = settings.get({
|
|
group: 'transactions-locking',
|
|
key: 'locking-type',
|
|
});
|
|
return lockingType || 'partial';
|
|
}
|
|
|
|
flagTransactionsLockingType(
|
|
tenantId: number,
|
|
transactionsType: TransactionsLockingType
|
|
) {
|
|
const settings = this.tenancy.settings(tenantId);
|
|
|
|
settings.set({
|
|
group: 'transactions-locking',
|
|
key: 'locking-type',
|
|
value: transactionsType,
|
|
});
|
|
}
|
|
}
|