|
|
|
|
const { Supplier, FriendRequest } = require('../models/supplier');
|
|
|
|
|
const { User } = require('../models/User')
|
|
|
|
|
const boom = require("boom");
|
|
|
|
|
const fastify = require("fastify")({
|
|
|
|
|
logger: true,
|
|
|
|
|
});
|
|
|
|
|
const moment = require('moment');
|
|
|
|
|
|
|
|
|
|
const schedule = require('node-schedule');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Handle friend request creation
|
|
|
|
|
// exports.friendRequest = async (request, reply) => {
|
|
|
|
|
// try {
|
|
|
|
|
// // const { senderId, receiverId } = request.body;
|
|
|
|
|
|
|
|
|
|
// const customerId = request.body.customerId;
|
|
|
|
|
// const supplierId = request.body.supplierId;
|
|
|
|
|
|
|
|
|
|
// // Check if the sender and receiver exist in the database
|
|
|
|
|
// // const sender = await User.findById(senderId);
|
|
|
|
|
// // const receiver = await Supplier.findById(receiverId);
|
|
|
|
|
// // console.log("sender" , sender)
|
|
|
|
|
// // console.log("receiver" , receiver)
|
|
|
|
|
|
|
|
|
|
// const sender = await User.findOne({ customerId : customerId});
|
|
|
|
|
// const receiver = await Supplier.findOne({ supplierId : supplierId});
|
|
|
|
|
// console.log("sender" , sender.customerId)
|
|
|
|
|
// console.log("receiver" , receiver.supplierId)
|
|
|
|
|
|
|
|
|
|
// if (!sender || !receiver) {
|
|
|
|
|
// throw new Error('Sender or receiver not found');
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// // Check if a friend request already exists between the two users
|
|
|
|
|
// // const existingRequest = await FriendRequest.findOne({ sender: senderId, receiver: receiverId });
|
|
|
|
|
// const existingRequest = await FriendRequest.findOne({ customerId: sender.customerId, supplierId: receiver.supplierId});
|
|
|
|
|
|
|
|
|
|
// console.log(existingRequest, " .. exist")
|
|
|
|
|
|
|
|
|
|
// if (existingRequest) {
|
|
|
|
|
// throw new Error('Friend request already sent');
|
|
|
|
|
// }
|
|
|
|
|
// const friendRequest = new FriendRequest({ customerId: sender.customerId, supplierId: receiver.supplierId});
|
|
|
|
|
// // // Create a new friend request
|
|
|
|
|
// // const friendRequest = new FriendRequest({
|
|
|
|
|
// // sender: senderId,
|
|
|
|
|
// // receiver: receiverId
|
|
|
|
|
// // });
|
|
|
|
|
|
|
|
|
|
// await friendRequest.save();
|
|
|
|
|
// console.log("friendRequest", friendRequest)
|
|
|
|
|
|
|
|
|
|
// reply.send({ timestamp: friendRequest.timestamp, message: 'Friend request sent' });
|
|
|
|
|
// } catch (err) {
|
|
|
|
|
// reply.status(400).send({ error: err.message });
|
|
|
|
|
// }
|
|
|
|
|
// };
|
|
|
|
|
|
|
|
|
|
// exports.friendRequest = async (request, reply) => {
|
|
|
|
|
// try {
|
|
|
|
|
// const customerId = request.body.customerId;
|
|
|
|
|
// const supplierId = request.body.supplierId;
|
|
|
|
|
|
|
|
|
|
// const sender = await User.findOne({ customerId: customerId });
|
|
|
|
|
// const receiver = await Supplier.findOne({ supplierId: supplierId });
|
|
|
|
|
|
|
|
|
|
// if (!sender || !receiver) {
|
|
|
|
|
// throw new Error('Sender or receiver not found');
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// const existingRequest = await FriendRequest.findOne({ customerId: sender.customerId, supplierId: receiver.supplierId});
|
|
|
|
|
|
|
|
|
|
// if (existingRequest) {
|
|
|
|
|
// throw new Error('Friend request already sent');
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// const timestamp = moment().format('MM/DD/YYYY, hh:mm:ss A');
|
|
|
|
|
|
|
|
|
|
// const friendRequest = new FriendRequest({
|
|
|
|
|
// customerId: sender.customerId,
|
|
|
|
|
// supplierId: receiver.supplierId,
|
|
|
|
|
// timestamp: timestamp
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
// await friendRequest.save();
|
|
|
|
|
|
|
|
|
|
// // Schedule the request to be sent again in 5 hours
|
|
|
|
|
// const rule = new schedule.RecurrenceRule();
|
|
|
|
|
// rule.hour = new schedule.Range(0, 23, 5); // Run every 5 hours
|
|
|
|
|
// schedule.scheduleJob(rule, async function() {
|
|
|
|
|
// const newTimestamp = moment().format('MM/DD/YYYY, hh:mm:ss A');
|
|
|
|
|
// const newFriendRequest = new FriendRequest({
|
|
|
|
|
// customerId: sender.customerId,
|
|
|
|
|
// supplierId: receiver.supplierId,
|
|
|
|
|
// timestamp: newTimestamp
|
|
|
|
|
// });
|
|
|
|
|
// await newFriendRequest.save();
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
// reply.send({ timestamp: friendRequest.timestamp, message: 'Friend request sent' });
|
|
|
|
|
// } catch (err) {
|
|
|
|
|
// reply.status(400).send({ error: err.message });
|
|
|
|
|
// }
|
|
|
|
|
// };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exports.friendRequest = async (request, reply) => {
|
|
|
|
|
try {
|
|
|
|
|
const customerId = request.body.customerId;
|
|
|
|
|
const supplierId = request.body.supplierId;
|
|
|
|
|
|
|
|
|
|
const sender = await User.findOne({ customerId: customerId });
|
|
|
|
|
const receiver = await Supplier.findOne({ supplierId: supplierId });
|
|
|
|
|
|
|
|
|
|
if (!sender || !receiver) {
|
|
|
|
|
throw new Error('Sender or receiver not found');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const existingRequest = await FriendRequest.findOne({ customerId: sender.customerId, supplierId: receiver.supplierId});
|
|
|
|
|
|
|
|
|
|
if (existingRequest) {
|
|
|
|
|
existingRequest.timestamp = moment().format("DD-MM-YYYY hh:mm:ss")
|
|
|
|
|
await existingRequest.save();
|
|
|
|
|
reply.send({ timestamp: existingRequest.timestamp, message: 'Friend request sent again' });
|
|
|
|
|
} else {
|
|
|
|
|
const timestamp = moment().format("DD-MM-YYYY hh:mm:ss")
|
|
|
|
|
|
|
|
|
|
const friendRequest = new FriendRequest({
|
|
|
|
|
customerId: sender.customerId,
|
|
|
|
|
supplierId: receiver.supplierId,
|
|
|
|
|
timestamp: timestamp
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await friendRequest.save();
|
|
|
|
|
|
|
|
|
|
// Schedule the request to be sent again in 5 hours
|
|
|
|
|
const rule = new schedule.RecurrenceRule();
|
|
|
|
|
rule.hour = new schedule.Range(0, 23, 5); // Run every 5 hours
|
|
|
|
|
schedule.scheduleJob(rule, async function() {
|
|
|
|
|
const newTimestamp = moment().format("DD-MM-YYYY hh:mm:ss")
|
|
|
|
|
const newFriendRequest = new FriendRequest({
|
|
|
|
|
customerId: sender.customerId,
|
|
|
|
|
supplierId: receiver.supplierId,
|
|
|
|
|
timestamp: newTimestamp
|
|
|
|
|
});
|
|
|
|
|
await newFriendRequest.save();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
reply.send({ timestamp: friendRequest.timestamp, message: 'Friend request sent' });
|
|
|
|
|
}
|
|
|
|
|
} catch (err) {
|
|
|
|
|
reply.status(400).send({ error: err.message });
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Handle friend request acceptance
|
|
|
|
|
exports.friendRequestAccept = async (request, reply) => {
|
|
|
|
|
try {
|
|
|
|
|
//const {friendRequestId} = request.body;
|
|
|
|
|
const {supplierId,customerId} = request.body;
|
|
|
|
|
// Update the friend request status to 'accepted'
|
|
|
|
|
// const friendRequest = await FriendRequest.findByIdAndUpdate(friendRequestId, { status: 'accepted' });
|
|
|
|
|
const friendRequest = await FriendRequest.findOneAndUpdate({supplierId,customerId }, { status: 'accepted' });
|
|
|
|
|
console.log("friendRequest....---", friendRequest)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!friendRequest) {
|
|
|
|
|
throw new Error('Friend request not found');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
reply.send({ message: 'Friend request accepted' });
|
|
|
|
|
} catch (err) {
|
|
|
|
|
reply.status(400).send({ error: err.message });
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Handle friend request rejection
|
|
|
|
|
exports.friendRequestReject = async (request, reply) => {
|
|
|
|
|
try {
|
|
|
|
|
//const {friendRequestId} = request.body;
|
|
|
|
|
const {supplierId, customerId} = request.body;
|
|
|
|
|
// Update the friend request status to 'rejected'
|
|
|
|
|
// const friendRequest = await FriendRequest.findByIdAndUpdate(friendRequestId, { status: 'rejected' });
|
|
|
|
|
const friendRequest = await FriendRequest.findOneAndUpdate({supplierId, customerId}, { status: 'rejected' });
|
|
|
|
|
console.log("friendRequest....---", friendRequest)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!friendRequest) {
|
|
|
|
|
throw new Error('Friend request not found');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
reply.send({ message: 'Friend request rejected' });
|
|
|
|
|
} catch (err) {
|
|
|
|
|
reply.status(400).send({ error: err.message });
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|