consolidate all repos to one for archive
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
var PhotoModel = require('../models/photoModel.js');
|
||||
|
||||
/**
|
||||
* photoController.js
|
||||
*
|
||||
* @description :: Server-side logic for managing photos.
|
||||
*/
|
||||
module.exports = {
|
||||
|
||||
/**
|
||||
* photoController.list()
|
||||
*/
|
||||
list: function (req, res) {
|
||||
PhotoModel.find()
|
||||
.populate('postedBy')
|
||||
.sort({createdAt: -1})
|
||||
.exec(function (err, photos) {
|
||||
if (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when getting photo.',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
var data = [];
|
||||
data.photos = photos;
|
||||
//return res.render('photo/list', data);
|
||||
return res.json(photos);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* photoController.show()
|
||||
*/
|
||||
show: function (req, res) {
|
||||
var id = req.params.id;
|
||||
|
||||
PhotoModel.findOne({_id: id}).populate('postedBy').exec(function (err, photo) {
|
||||
if (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when getting photo.',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
|
||||
if (!photo) {
|
||||
return res.status(404).json({
|
||||
message: 'No such photo'
|
||||
});
|
||||
}
|
||||
|
||||
return res.json(photo);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* photoController.create()
|
||||
*/
|
||||
create: function (req, res) {
|
||||
var photo = new PhotoModel({
|
||||
name : req.body.name,
|
||||
path : "/images/"+req.file.filename,
|
||||
postedBy : req.session.userId,
|
||||
reports : 0,
|
||||
likes : 0,
|
||||
comments : []
|
||||
});
|
||||
|
||||
photo.save(function (err, photo) {
|
||||
if (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when creating photo',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
|
||||
return res.status(201).json(photo);
|
||||
//return res.redirect('/photos');
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* photoController.update()
|
||||
*/
|
||||
update: function (req, res) {
|
||||
var id = req.params.id;
|
||||
|
||||
PhotoModel.findOne({_id: id}, function (err, photo) {
|
||||
if (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when getting photo',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
|
||||
if (!photo) {
|
||||
return res.status(404).json({
|
||||
message: 'No such photo'
|
||||
});
|
||||
}
|
||||
|
||||
photo.name = req.body.name ? req.body.name : photo.name;
|
||||
photo.path = req.body.path ? req.body.path : photo.path;
|
||||
photo.postedBy = req.body.postedBy ? req.body.postedBy : photo.postedBy;
|
||||
photo.views = req.body.views ? req.body.views : photo.views;
|
||||
photo.likes = req.body.likes ? req.body.likes : photo.likes;
|
||||
|
||||
photo.save(function (err, photo) {
|
||||
if (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when updating photo.',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
|
||||
return res.json(photo);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* photoController.remove()
|
||||
*/
|
||||
remove: function (req, res) {
|
||||
var id = req.params.id;
|
||||
|
||||
PhotoModel.findByIdAndRemove(id, function (err, photo) {
|
||||
if (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when deleting the photo.',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
|
||||
return res.status(204).json();
|
||||
});
|
||||
},
|
||||
|
||||
publish: function(req, res){
|
||||
return res.render('photo/publish');
|
||||
},
|
||||
|
||||
increaseValue: async function (req, res) {
|
||||
const id = req.params.id;
|
||||
const type = req.params.type;
|
||||
|
||||
try {
|
||||
if(type == "like"){
|
||||
const photo = await PhotoModel.findByIdAndUpdate(
|
||||
{ _id: id },
|
||||
{ $inc: { likes: 1 } },
|
||||
{ new: true }
|
||||
);
|
||||
}else if(type == "report"){
|
||||
const photo = await PhotoModel.findByIdAndUpdate(
|
||||
{ _id: id },
|
||||
{ $inc: { reports: 1 } },
|
||||
{ new: true }
|
||||
);
|
||||
if(photo.reports >= 5){
|
||||
await PhotoModel.findByIdAndRemove(id);
|
||||
}
|
||||
|
||||
}else{
|
||||
return res.status(500).json({
|
||||
message: 'Error when updating photo increment.',
|
||||
});
|
||||
}
|
||||
|
||||
if (!photo) {
|
||||
return res.status(404).json({
|
||||
message: 'No such photo'
|
||||
});
|
||||
}
|
||||
|
||||
return res.status(200).json(photo);
|
||||
} catch (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when updating photo.',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
addComment: async function (req, res) {
|
||||
const id = req.params.id;
|
||||
const comment = req.body.comment;
|
||||
|
||||
try {
|
||||
const photo = await PhotoModel.findByIdAndUpdate(
|
||||
{ _id: id },
|
||||
{ $push: { comments: comment } },
|
||||
{ new: true }
|
||||
);
|
||||
|
||||
if (!photo) {
|
||||
return res.status(404).json({
|
||||
message: 'No such photo'
|
||||
});
|
||||
}
|
||||
|
||||
return res.json(photo);
|
||||
} catch (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when updating photo.',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
@@ -0,0 +1,211 @@
|
||||
var UserModel = require('../models/userModel.js');
|
||||
var PhotoModel = require('../models/photoModel.js');
|
||||
const { use } = require('../routes/userRoutes.js');
|
||||
var mongoose = require('mongoose');
|
||||
/**
|
||||
* userController.js
|
||||
*
|
||||
* @description :: Server-side logic for managing users.
|
||||
*/
|
||||
module.exports = {
|
||||
|
||||
/**
|
||||
* userController.list()
|
||||
*/
|
||||
list: function (req, res) {
|
||||
UserModel.find(function (err, users) {
|
||||
if (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when getting user.',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
|
||||
return res.json(users);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* userController.show()
|
||||
*/
|
||||
show: function (req, res) {
|
||||
var id = req.params.id;
|
||||
|
||||
UserModel.findOne({_id: id}, function (err, user) {
|
||||
if (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when getting user.',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
|
||||
if (!user) {
|
||||
return res.status(404).json({
|
||||
message: 'No such user'
|
||||
});
|
||||
}
|
||||
|
||||
return res.json(user);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* userController.create()
|
||||
*/
|
||||
create: function (req, res) {
|
||||
var user = new UserModel({
|
||||
username : req.body.username,
|
||||
password : req.body.password,
|
||||
email : req.body.email,
|
||||
posts : 0,
|
||||
totalLikes : 0
|
||||
});
|
||||
|
||||
user.save(function (err, user) {
|
||||
if (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when creating user',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
|
||||
return res.status(201).json(user);
|
||||
//return res.redirect('/users/login');
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* userController.update()
|
||||
*/
|
||||
update: function (req, res) {
|
||||
var id = req.params.id;
|
||||
|
||||
UserModel.findOne({_id: id}, function (err, user) {
|
||||
if (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when getting user',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
|
||||
if (!user) {
|
||||
return res.status(404).json({
|
||||
message: 'No such user'
|
||||
});
|
||||
}
|
||||
|
||||
user.username = req.body.username ? req.body.username : user.username;
|
||||
user.password = req.body.password ? req.body.password : user.password;
|
||||
user.email = req.body.email ? req.body.email : user.email;
|
||||
|
||||
user.save(function (err, user) {
|
||||
if (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when updating user.',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
|
||||
return res.json(user);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* userController.remove()
|
||||
*/
|
||||
remove: function (req, res) {
|
||||
var id = req.params.id;
|
||||
|
||||
UserModel.findByIdAndRemove(id, function (err, user) {
|
||||
if (err) {
|
||||
return res.status(500).json({
|
||||
message: 'Error when deleting the user.',
|
||||
error: err
|
||||
});
|
||||
}
|
||||
|
||||
return res.status(204).json();
|
||||
});
|
||||
},
|
||||
|
||||
showRegister: function(req, res){
|
||||
res.render('user/register');
|
||||
},
|
||||
|
||||
showLogin: function(req, res){
|
||||
res.render('user/login');
|
||||
},
|
||||
|
||||
login: function(req, res, next){
|
||||
|
||||
UserModel.authenticate(req.body.username, req.body.password, function(err, user){
|
||||
if(err || !user){
|
||||
var err = new Error('Wrong username or paassword');
|
||||
err.status = 402;
|
||||
return next(err);
|
||||
}
|
||||
req.session.userId = user._id;
|
||||
//res.redirect('/users/profile');
|
||||
return res.json(user);
|
||||
});
|
||||
},
|
||||
|
||||
profile: async function(req, res,next){
|
||||
const userId = req.session.userId;
|
||||
|
||||
UserModel.findById(req.session.userId)
|
||||
.exec(function(error, user){
|
||||
if(error){
|
||||
return next(error);
|
||||
} else{
|
||||
if(user===null){
|
||||
var err = new Error('Not authorized, go back!');
|
||||
err.status = 400;
|
||||
return next(err);
|
||||
} else{
|
||||
// Counting the number of posts based on the user id
|
||||
PhotoModel.countDocuments({ postedBy: userId })
|
||||
.then((count) => {
|
||||
// Update the user's post count
|
||||
user.posts = count;
|
||||
return user.save();
|
||||
}).catch((error) => {
|
||||
console.error('Error counting likes:', error);
|
||||
return next(error);
|
||||
});
|
||||
|
||||
// const objectId = Types.objectId(userId);
|
||||
var objectId = mongoose.Types.ObjectId(userId);
|
||||
|
||||
PhotoModel.aggregate([
|
||||
{ $match: { postedBy: objectId } },
|
||||
{ $group: { _id: null, totalLikes: { $sum: "$likes" } } }
|
||||
]).then((result) => {
|
||||
// Update the user's total likes
|
||||
user.totalLikes = result[0].totalLikes;
|
||||
return user.save();
|
||||
}).catch((error) => {
|
||||
console.error('Error counting likes:', error);
|
||||
return next(error);
|
||||
});
|
||||
|
||||
return res.json(user);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
logout: function(req, res, next){
|
||||
if(req.session){
|
||||
req.session.destroy(function(err){
|
||||
if(err){
|
||||
return next(err);
|
||||
} else{
|
||||
//return res.redirect('/');
|
||||
return res.status(201).json({});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user