add server to monorepo.

This commit is contained in:
a.bouhuolia
2023-02-03 11:57:50 +02:00
parent 28e309981b
commit 80b97b5fdc
1303 changed files with 137049 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
import { Inject } from 'typedi';
import {
ICreateWarehouseTransferDTO,
IEditWarehouseTransferDTO,
IItem,
} from '@/interfaces';
import { ServiceError } from '@/exceptions';
import { ERRORS } from './constants';
import HasTenancyService from '@/services/Tenancy/TenancyService';
import ItemsEntriesService from '@/services/Items/ItemsEntriesService';
import { CRUDWarehouseTransfer } from './CRUDWarehouseTransfer';
export class CommandWarehouseTransfer extends CRUDWarehouseTransfer {
@Inject()
tenancy: HasTenancyService;
@Inject()
itemsEntries: ItemsEntriesService;
/**
* Validate the from/to warehouses should not be the same.
* @param {ICreateWarehouseTransferDTO|IEditWarehouseTransferDTO} warehouseTransferDTO
*/
protected validateWarehouseFromToNotSame = (
warehouseTransferDTO:
| ICreateWarehouseTransferDTO
| IEditWarehouseTransferDTO
) => {
if (
warehouseTransferDTO.fromWarehouseId ===
warehouseTransferDTO.toWarehouseId
) {
throw new ServiceError(ERRORS.WAREHOUSES_TRANSFER_SHOULD_NOT_BE_SAME);
}
};
/**
* Validates entries items should be inventory.
* @param {IItem[]} items
* @returns {void}
*/
protected validateItemsShouldBeInventory = (items: IItem[]): void => {
const nonInventoryItems = items.filter((item) => item.type !== 'inventory');
if (nonInventoryItems.length > 0) {
throw new ServiceError(
ERRORS.WAREHOUSE_TRANSFER_ITEMS_SHOULD_BE_INVENTORY
);
}
};
protected getToWarehouseOrThrow = async (
tenantId: number,
fromWarehouseId: number
) => {
const { Warehouse } = this.tenancy.models(tenantId);
const warehouse = await Warehouse.query().findById(fromWarehouseId);
if (!warehouse) {
throw new ServiceError(ERRORS.TO_WAREHOUSE_NOT_FOUND);
}
return warehouse;
};
protected getFromWarehouseOrThrow = async (
tenantId: number,
fromWarehouseId: number
) => {
const { Warehouse } = this.tenancy.models(tenantId);
const warehouse = await Warehouse.query().findById(fromWarehouseId);
if (!warehouse) {
throw new ServiceError(ERRORS.FROM_WAREHOUSE_NOT_FOUND);
}
return warehouse;
};
}