tuain-ecosystem-lib
Version:
Servicio de gestión mensajería instantanea de la plataforma Tuain
62 lines (55 loc) • 1.67 kB
JavaScript
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,
};