Untitled
unknown
plain_text
2 years ago
3.7 kB
6
Indexable
exports.getSalesManChat = catchAsync(async(req,res,next) => {
const {id} = req.body
const retailer = await Retailer.findById(toObjectId(id,next))
if(!retailer){
return next(new AppError('retailer not found', 400));
}
const results = await Chat.aggregate([
{ $match : {retailer: retailer._id}},
{
$lookup: {
from: 'salesmen',
localField: 'sales_man',
foreignField: '_id',
pipeline: [
{
$lookup: {
from: 'users',
localField: '_id',
foreignField: 'profile',
pipeline: [
{ $project :{name:1,photo:1}}
],
as: 'user'
}
}
],
as: 'salesMan'
}
},
{
$lookup: {
from: 'messages',
localField: 'messages',
foreignField: '_id',
pipeline: [
{ $match :{vu : false,receiver : retailer._id}},
{ $count : "messages_not_vu"}
],
as: 'messages'
}
}
])
const data = results.reduce((result, order) => {
let obj = {};
obj.salesMan_id = order.sales_man;
obj.user_id = order.salesMan[0].user[0]?._id;
obj.name = order.salesMan[0].user[0]?.name;
obj.photo = order.salesMan[0].user[0]?.photo;
obj.messages_not_vu = order.messages[0]?.messages_not_vu
result.push(obj);
return result;
}, []);
res.status(200).json({
message: 'successfully',
data : data
});
})
exports.getRetailersChat = catchAsync(async(req,res,next) => {
const {id} = req.body
const salesman = await SalesMan.findById(toObjectId(id,next))
if(!salesman){
return next(new AppError('salesman not found', 400));
}
console.log(salesman)
const results = await Chat.aggregate([
{ $match : {sales_man: salesman._id}},
{
$lookup: {
from: 'retailers',
localField: 'retailer',
foreignField: '_id',
pipeline: [
{
$lookup: {
from: 'users',
localField: '_id',
foreignField: 'profile',
pipeline: [
{ $project :{name:1,photo:1}}
],
as: 'user'
}
}
],
as: 'Retailer'
}
},
{
$lookup: {
from: 'messages',
localField: 'messages',
foreignField: '_id',
pipeline: [
{ $match :{vu : false,receiver : salesman._id}},
{ $count : "messages_not_vu"}
],
as: 'messages'
}
}
])
const data = results.reduce((result, order) => {
let obj = {};
obj.retailer_id = order.retailer;
obj.user_id = order.Retailer[0].user[0]?._id;
obj.name = order.Retailer[0].user[0]?.name;
obj.photo = order.Retailer[0].user[0]?.photo;
obj.messages_not_vu = order.messages[0]?.messages_not_vu
result.push(obj);
return result;
}, []);
res.status(200).json({
message: 'successfully',
data : data
});
})
Editor is loading...
Leave a Comment