Untitled

 avatar
unknown
plain_text
10 months ago
3.7 kB
2
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