| Current Path : /home/deltalab/PMS/partner-manager-backend/rest/queries/ |
| Current File : //home/deltalab/PMS/partner-manager-backend/rest/queries/channel.js |
const { channelModel } = require('../../models/mongoose/channel');
const { partnerModel } = require('../../models/mongoose/partner');
const { warehouseModel } = require('../../models/mongoose/warehouse');
/**
* Return a list of channels given a partner ID
* @param {string} channelId
* @returns channels
*/
async function readMany(partnerId = undefined) {
const channels = await channelModel.find();
const partner = await partnerModel.findById(partnerId);
const availableChannels = [];
for (let i = 0; i < partner.channels.length; i++) {
for (let j = 0; j < channels.length; j++) {
if ((partner.channels[i]._id.equals(channels[j]._id))) {
availableChannels.push(channels[j]);
}
}
}
return availableChannels;
}
/**
* Return a list of partners given a channel ID
* @param {string} channelId
* @returns partners
*/
async function readChannelPartners(channelId = undefined) {
const channel = await channelModel.findById(channelId);
const requestBody = {
channels: { $in: channel._id },
};
// if (product.refrigerated) {
// requestBody.refrigerated = true;
// }
const partners = await partnerModel.find(requestBody);
return partners;
}
async function readOwned(partnerId = undefined) {
const channels = await channelModel.find();
const partner = await partnerModel.findById(partnerId);
const availableChannels = [];
for (let j = 0; j < channels.length; j++) {
const { managerId } = channels[j];
if (managerId && managerId.equals(partner._id)) {
availableChannels.push(channels[j]);
}
}
return availableChannels;
}
/**
* Return a list of channels given a partner ID
* @param {string} channelId
* @returns channels
*/
async function readManyWarehouse(warehouseId = undefined) {
const channels = await channelModel.find();
const warehouse = await warehouseModel.findById(warehouseId);
const availableChannels = [];
for (let i = 0; i < warehouse.channelAssignments.length; i++) {
for (let j = 0; j < channels.length; j++) {
if (warehouse.channelAssignments[i].channelId.equals(channels[j]._id)) {
availableChannels.push(channels[j]);
}
}
}
return availableChannels;
}
/**
* Return a channel given its ID
* @param {string} channelId
* @returns channel
*/
async function readOne(channelId) {
const channel = await channelModel.findById({ _id: channelId });
return channel;
}
async function createOne(channel) {
const addedChannel = await channelModel.create(channel);
return addedChannel;
}
async function updateOne(channelId, channel) {
const updatedChannel = await channelModel.findByIdAndUpdate(channelId, channel, { returnDocument: 'after' });
return updatedChannel;
}
async function deleteOne(channelId) {
await channelModel.deleteOne({ _id: channelId });
}
module.exports = {
readMany,
readOwned,
readManyWarehouse,
readChannelPartners,
readOne,
createOne,
updateOne,
deleteOne,
};