UNPKG

tuain-ecosystem-lib

Version:

Servicio de gestión mensajería instantanea de la plataforma Tuain

62 lines (55 loc) 1.67 kB
const { ObjectId } = require('mongodb'); const { findByName, findById, updateObj, findByAttributes } = require('./common'); const PRODPRICE_COLLECTION = 'ProductPriceTypes'; function findGroupProdPrice(productPriceTypeId, productId, subproductId, groupId) { const query = { productPriceTypeId: ObjectId(productPriceTypeId), productId: ObjectId(productId), groupId: ObjectId(groupId), }; if (subproductId) { query.subproductId = ObjectId(subproductId); } return query; } function findGroupProdPrices(productId, subproductId, groupId) { return [{ $match: { productId: ObjectId(productId), subproductId: ObjectId(subproductId), groupId: ObjectId(groupId), }, }, { $lookup: { from: PRODPRICE_COLLECTION, localField: 'productPriceTypeId', foreignField: '_id', as: 'prodPriceTypeName', }, }, { $addFields: { prodPriceTypeName: { $arrayElemAt: ['$prodPriceTypeName', 0] }, }, }, { $addFields: { prodPriceTypeName: '$prodPriceTypeName.name', }, }]; } function findGroupPrices(groupId, productId, subproductId) { const query = { groupId: ObjectId(groupId) }; if (productId) { query.productId = ObjectId(productId); } if (subproductId) { query.subproductId = ObjectId(subproductId); } return query; } function findAuditGroupProdPrice(productPriceTypeId, productId, subproductId, groupId) { return { productPriceTypeId, productId, subproductId, groupId, priceEndDate: null }; } module.exports = { findByName, findById, updateObj, findByAttributes, findGroupProdPrice, findGroupProdPrices, findGroupPrices, findAuditGroupProdPrice, };