You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
250 lines
6.3 KiB
250 lines
6.3 KiB
const postModel = require("../models/post.model");
|
|
const PostModel = require("../models/post.model");
|
|
const UserModel = require("../models/user.model");
|
|
const { uploadErrors } = require("../utils/errors.utils");
|
|
//verifier que le param passé existe dans notre bdd
|
|
const ObjectID = require("mongoose").Types.ObjectId;
|
|
const fs = require("fs");
|
|
const { promisify } = require("util");
|
|
|
|
const addNotification = require('./notifFonction');
|
|
|
|
|
|
|
|
module.exports.readPost = (req, res) => {
|
|
PostModel.find((err, docs) => {
|
|
if (!err) res.send(docs);
|
|
else console.log("Error to get data : " + err);
|
|
}).sort({ createdAt: -1 });
|
|
};
|
|
|
|
module.exports.createPost = async (req, res) => {
|
|
const newPost = new postModel({
|
|
postedId: req.body.postedId,
|
|
message: req.body.message,
|
|
lien: req.body.lien,
|
|
likers: [],
|
|
tags: req.body.tags,
|
|
image: req.body.image,
|
|
publique: req.body.publique,
|
|
privee: req.body.privee,
|
|
comments: [],
|
|
});
|
|
|
|
try {
|
|
const post = await newPost.save();
|
|
return res.status(201).json(post);
|
|
} catch (err) {
|
|
return res.status(400).send(err);
|
|
}
|
|
};
|
|
|
|
module.exports.updatePost = (req, res) => {
|
|
if (!ObjectID.isValid(req.params.id))
|
|
return res.status(400).send("ID unknown : " + req.params.id);
|
|
|
|
const updatedRecord = {
|
|
message: req.body.message,
|
|
};
|
|
|
|
PostModel.findByIdAndUpdate(
|
|
req.params.id,
|
|
{ $set: updatedRecord },
|
|
{ new: true },
|
|
(err, docs) => {
|
|
if (!err) res.send(docs);
|
|
else console.log("Update error : " + err);
|
|
}
|
|
);
|
|
};
|
|
|
|
module.exports.deletePost = (req, res) => {
|
|
if (!ObjectID.isValid(req.params.id))
|
|
return res.status(400).send("ID unknown : " + req.params.id);
|
|
|
|
PostModel.findByIdAndRemove(req.params.id, (err, docs) => {
|
|
if (!err) res.send(docs);
|
|
else console.log("Delete error : " + err);
|
|
});
|
|
};
|
|
|
|
|
|
module.exports.likePost = async (req, res) => {
|
|
//notif
|
|
const idUser = await PostModel.findOne({ _id: ObjectID( req.params.id) });
|
|
console.log("like",idUser);
|
|
addNotification.addNotification(idUser.postedId, {
|
|
typeNotif: "like",
|
|
id_user: req.body.id,
|
|
id_post1: req.params.id,
|
|
id_post2: "null"
|
|
});
|
|
|
|
|
|
|
|
if (!ObjectID.isValid(req.params.id))
|
|
return res.status(400).send("ID unknown : " + req.params.id);
|
|
|
|
try {
|
|
await PostModel.findByIdAndUpdate(
|
|
req.params.id,
|
|
{
|
|
$addToSet: { likers: req.body.id },
|
|
},
|
|
{ new: true },
|
|
(err, docs) => {
|
|
if (err) return res.status(200).send(err);
|
|
}
|
|
);
|
|
await UserModel.findByIdAndUpdate(
|
|
req.body.id,
|
|
{
|
|
$addToSet: { likes: req.params.id },
|
|
},
|
|
{ new: true },
|
|
(err, docs) => {
|
|
if (!err) return res.send(docs);
|
|
else return res.status(200).send(err);
|
|
}
|
|
);
|
|
} catch (err) {
|
|
return res.status(200).send(err);
|
|
}
|
|
};
|
|
|
|
module.exports.unlikePost = async (req, res) => {
|
|
if (!ObjectID.isValid(req.params.id)) {
|
|
return res.status(400).send("ID unknown: " + req.params.id);
|
|
}
|
|
|
|
try {
|
|
await PostModel.findByIdAndUpdate(
|
|
req.params.id,
|
|
{
|
|
$pull: { likers: req.body.id },
|
|
},
|
|
{ new: true }
|
|
);
|
|
await UserModel.findByIdAndUpdate(
|
|
req.body.id,
|
|
{
|
|
$pull: { likes: req.params.id },
|
|
},
|
|
{ new: true }
|
|
);
|
|
res.send({ message: "Post unliked" });
|
|
} catch (err) {
|
|
return res.status(400).send(err);
|
|
}
|
|
};
|
|
|
|
// module.exports.unlikePost = async (req, res) => {
|
|
// if (!ObjectID.isValid(req.params.id))
|
|
// return res.status(400).send("ID unknown : " + req.params.id);
|
|
|
|
// try {
|
|
// await PostModel.findByIdAndUpdate(
|
|
// req.params.id,
|
|
// {
|
|
// $pull: { likers: req.body.id },
|
|
// },
|
|
// { new: true },
|
|
// (err, docs) => {
|
|
// if (err) return res.status(400).send(err);
|
|
// }
|
|
// );
|
|
// await UserModel.findByIdAndUpdate(
|
|
// req.body.id,
|
|
// {
|
|
// $pull: { likes: req.params.id },
|
|
// },
|
|
// { new: true },
|
|
// (err, docs) => {
|
|
// if (!err) return res.send(docs);
|
|
// else return res.status(400).send(err);
|
|
// }
|
|
// );
|
|
// } catch (err) {
|
|
// return res.status(400).send(err);
|
|
// }
|
|
// };
|
|
|
|
module.exports.commentPost = async (req, res) => {
|
|
const idUser = await PostModel.findOne({ _id: ObjectID( req.params.id) });
|
|
|
|
if (!ObjectID.isValid(req.params.id))
|
|
return res.status(400).send("ID unknown : " + req.params.id);
|
|
|
|
try {
|
|
return PostModel.findByIdAndUpdate(
|
|
req.params.id,
|
|
{
|
|
$push: {
|
|
comments: {
|
|
commentId: req.body.commenterId,
|
|
commentPseudo: req.body.commenterPseudo,
|
|
text: req.body.text,
|
|
timestamp: new Date().getTime(),
|
|
},
|
|
},
|
|
},
|
|
{ new: true })
|
|
.then((data) => {
|
|
addNotification.addNotification(idUser.postedId, {
|
|
typeNotif: "commente",
|
|
id_user: req.body.commenterId,
|
|
id_post1: req.params.id,
|
|
id_post2: data.comments.slice(-1)[0]._id
|
|
});
|
|
res.send(data);})
|
|
.catch((err) => res.status(500).send({ message: err }));
|
|
} catch (err) {
|
|
return res.status(400).send(err);
|
|
}
|
|
};
|
|
|
|
module.exports.editCommentPost = (req, res) => {
|
|
if (!ObjectID.isValid(req.params.id))
|
|
return res.status(400).send("ID unknown : " + req.params.id);
|
|
|
|
try {
|
|
return PostModel.findById(req.params.id, (err, docs) => {
|
|
const theComment = docs.comments.find((comment) =>
|
|
comment._id.equals(req.body.commentId)
|
|
);
|
|
|
|
if (!theComment) return res.status(404).send("Comment not found");
|
|
theComment.text = req.body.text;
|
|
|
|
return docs.save((err) => {
|
|
if (!err) return res.status(200).send(docs);
|
|
return res.status(500).send(err);
|
|
});
|
|
});
|
|
} catch (err) {
|
|
return res.status(400).send(err);
|
|
}
|
|
};
|
|
|
|
module.exports.deleteCommentPost = (req, res) => {
|
|
if (!ObjectID.isValid(req.params.id))
|
|
return res.status(400).send("ID unknown : " + req.params.id);
|
|
|
|
try {
|
|
return PostModel.findByIdAndUpdate(
|
|
req.params.id,
|
|
{
|
|
$pull: {
|
|
comments: {
|
|
_id: req.body.commentId,
|
|
},
|
|
},
|
|
},
|
|
{ new: true })
|
|
.then((data) => res.send(data))
|
|
.catch((err) => res.status(500).send({ message: err }));
|
|
} catch (err) {
|
|
return res.status(400).send(err);
|
|
}
|
|
};
|