Skip to content

Commit 171e171

Browse files
authored
Merge pull request #194 from SoftwareEngineeringDaily/forum-improvements
Forum improvements
2 parents debeeb6 + f0afe78 commit 171e171

File tree

5 files changed

+59
-8
lines changed

5 files changed

+59
-8
lines changed

server/controllers/comment.controller.js

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,28 @@ function remove(req, res, next) {
6969
return res.status(500).json({});
7070
}
7171

72+
function update(req, res, next) {
73+
const { comment, user } = req;
74+
const { content } = req.body;
75+
if (comment && user) {
76+
if (comment.author._id.toString() !== user._id.toString()) {
77+
return res.status(401).json({ Error: 'Please login' });
78+
}
79+
comment.content = content;
80+
comment.dateLastEdited = Date();
81+
return comment
82+
.save()
83+
.then((editedComment) => {
84+
// Sucess:
85+
res.json(editedComment);
86+
})
87+
.catch((e) => {
88+
next(e);
89+
});
90+
}
91+
return res.status(500).json({});
92+
}
93+
7294
/**
7395
* @swagger
7496
* tags:
@@ -192,5 +214,6 @@ export default {
192214
load,
193215
list,
194216
create,
195-
remove
217+
remove,
218+
update
196219
};

server/controllers/forum.controller.js

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,39 @@ function create(req, res, next) {
3737
.catch(err => next(err));
3838
}
3939

40-
function update() {
40+
function update(req, res, next) {
41+
const {
42+
forumThread, user
43+
} = req;
44+
const {
45+
content, title
46+
} = req.body;
47+
48+
if (forumThread && forumThread.author && forumThread.author._id && user) {
49+
if (forumThread.author._id.toString() !== user._id.toString()) {
50+
return res.status(401).json({ Error: 'Please login' });
51+
}
52+
forumThread.content = content;
53+
forumThread.title = title;
54+
forumThread.dateLastEdited = Date();
55+
return forumThread
56+
.save()
57+
.then((editedThread) => {
58+
// Sucess:
59+
res.json(editedThread);
60+
})
61+
.catch((e) => {
62+
next(e);
63+
});
64+
}
65+
return res.status(500).json({});
4166
}
4267

4368
function remove(req, res, next) {
4469
const { forumThread, user } = req;
45-
if (forumThread && user) {
46-
if (forumThread.author.toString() !== user._id.toString()) {
70+
// TODO: if admin should be able to delete too
71+
if (forumThread && forumThread.author && forumThread.author._id && user) {
72+
if (forumThread.author._id.toString() !== user._id.toString()) {
4773
return res.status(401).json({ Error: 'Please login' });
4874
}
4975
forumThread.deleted = true;

server/models/comment.model.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,7 @@ const CommentSchema = new Schema({
5959
dateDeleted: {
6060
type: Date
6161
},
62-
lastEdited: {
63-
type: Date
64-
},
62+
dateLastEdited: { type: Date },
6563
rootEntity: {
6664
type: Schema.Types.ObjectId // The entity that owns this comment
6765
// , ref: 'Post' | 'AMA'

server/models/forumThread.model.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const ForumThreadSchema = new mongoose.Schema({
2525
},
2626
commentsCount: { type: Number, default: 0 },
2727
dateLastAcitiy: { type: Date, default: Date.now },
28+
dateLastEdited: { type: Date },
2829
dateCreated: { type: Date, default: Date.now }
2930
});
3031

server/routes/forum.route.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ router
2626
expressJwt({ secret: config.jwtSecret, credentialsRequired: false }),
2727
forumCtrl.detail
2828
)
29-
.put(expressJwt({ secret: config.jwtSecret, credentialsRequired: true }), forumCtrl.update)
29+
.put(
30+
expressJwt({ secret: config.jwtSecret, credentialsRequired: true }),
31+
forumCtrl.update
32+
)
3033
.delete(
3134
expressJwt({ secret: config.jwtSecret, credentialsRequired: true }),
3235
forumCtrl.remove

0 commit comments

Comments
 (0)