UNPKG

@tomei/product

Version:

NestJS package for product module

144 lines 6.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProductProductCollection = void 0; const product_collection_product_repository_1 = require("./product-collection-product.repository"); const config_1 = require("@tomei/config"); const cuid = require("cuid"); const activity_history_1 = require("@tomei/activity-history"); const settings_collection_entity_1 = require("../../entities/settings-collection.entity"); const general_1 = require("@tomei/general"); class ProductProductCollection extends general_1.ObjectBase { constructor() { super(...arguments); this.ObjectType = 'ProductProductCollection'; } static async CheckProductAssignToCollection(code, dbTransaction) { try { const options = { where: { Code: code, }, }; const productGroup = await this._Repo.findOne(Object.assign(Object.assign({}, options), { transaction: dbTransaction })); if (productGroup) { return true; } else { return false; } } catch (error) { throw error; } } static async listCollectionAssignedToProduct(ProductId, loginUser, dbTransaction) { try { const systemCode = config_1.ApplicationConfig.getComponentConfigValue('system-code'); const isPrivileged = await loginUser.checkPrivileges(systemCode, 'Product - List Collection'); if (!isPrivileged) { throw new Error('You do not have permission to list product collection.'); } const options = { where: { ProductId: ProductId, }, include: [ { model: settings_collection_entity_1.SettingsCollectionModel, }, ], }; const productCollection = await this._Repo .findAndCountAll(options) .then((collections) => { const productCollections = []; collections.rows.forEach((pg) => { productCollections.push(pg.ProductCollection); }); return { count: collections.count, rows: productCollections, }; }); return productCollection; } catch (error) { throw error; } } static async assignProductToCollection(Product, ProductCollection, loginUser, dbTransaction) { try { const systemCode = config_1.ApplicationConfig.getComponentConfigValue('system-code'); const isPrivileged = await loginUser.checkPrivileges(systemCode, 'Product - Assign Collection'); if (!isPrivileged) { throw new Error('You do not have permission to assign product Collection.'); } const ProductCollectionId = cuid(); ProductProductCollection._Repo.create({ ProductCollectionId: ProductCollectionId, Code: ProductCollection.Code, ProductId: Product.ProductId, }); const entityValueAfter = { ProductCollectionId: ProductCollectionId, Code: ProductCollection.Code, ProductId: Product.ProductId, }; const activity = new activity_history_1.Activity(); activity.ActivityId = cuid(); activity.Action = activity_history_1.ActionEnum.CREATE; activity.Description = 'Assign Product to Product Collection'; activity.EntityType = 'ProductProductCollection'; activity.EntityId = ProductCollectionId; activity.EntityValueBefore = JSON.stringify({}); activity.EntityValueAfter = JSON.stringify(entityValueAfter); await activity.create(loginUser.ObjectId, dbTransaction); return { MessageCode: 'ProductCollectionAssigned', Message: 'Product added to Product Collection.', }; } catch (error) { throw error; } } static async unassignedProductFromCollection(Product, ProductCollection, loginUser, dbTransaction) { try { const systemCode = config_1.ApplicationConfig.getComponentConfigValue('system-code'); const isPrivileged = await loginUser.checkPrivileges(systemCode, 'Product - Unassigned Collection'); if (!isPrivileged) { throw new Error('You do not have permission to unassigned product Collection.'); } const productCollection = await ProductProductCollection._Repo.findOne({ where: { ProductId: Product.ProductId, Code: ProductCollection.Code }, transaction: dbTransaction, }); const ProductCollectionId = productCollection.ProductCollectionId; ProductProductCollection._Repo.delete(ProductCollectionId, dbTransaction); const EntityValueBefore = { ProductGroupId: productCollection.ProductCollectionId, Code: productCollection.Code, ProductId: productCollection.ProductId, }; const activity = new activity_history_1.Activity(); activity.ActivityId = cuid(); activity.Action = activity_history_1.ActionEnum.DELETE; activity.Description = 'Unassigned Product from Product Collection'; activity.EntityType = 'ProductProductCollection'; activity.EntityId = ProductCollectionId; activity.EntityValueBefore = JSON.stringify(EntityValueBefore); activity.EntityValueAfter = JSON.stringify({}); await activity.create(loginUser.ObjectId, dbTransaction); return { MessageCode: 'ProductCollectionUnassigned', Message: 'Product removed to Product Collection.', }; } catch (error) { throw error; } } } exports.ProductProductCollection = ProductProductCollection; ProductProductCollection._Repo = new product_collection_product_repository_1.ProductProductCollectionRepository(); //# sourceMappingURL=product-collection-product.js.map