Skip to content

Commit 261fb0b

Browse files
committed
Add user comment functionality with model, controller, and routes
1 parent 2019134 commit 261fb0b

File tree

6 files changed

+97
-4
lines changed

6 files changed

+97
-4
lines changed

index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ import supporterYearRouter from './src/routes/supporterYear.route.js'
7575
import userRouter from './src/routes/user.route.js'
7676
import userCriminalRecordRouter from './src/routes/userCriminalRecord.route.js'
7777
import userMotivationRouter from './src/routes/userMotivation.route.js'
78+
import userCommentRouter from './src/routes/userComment.route.js'
7879
import userDocumentRouter from './src/routes/userDocument.route.js'
7980
import userPermissionRouter from './src/routes/userPermission.route.js'
8081
import userYearRouter from './src/routes/userYear.route.js'
@@ -95,6 +96,7 @@ import responsibilityModel from './src/models/responsibility.model.js';
9596

9697
import supporterYearModel from './src/models/supporterYear.model.js';
9798
import supporterDayModel from './src/models/supporterDay.model.js';
99+
import userCommentModel from './src/models/userComment.model.js';
98100
import userDocumentModel from './src/models/userDocument.model.js';
99101
import userPermissionModel from './src/models/userPermission.model.js';
100102
import userMotivationModel from './src/models/userMotivation.model.js';
@@ -117,6 +119,7 @@ app.use('/user', userRouter);
117119
app.use('/supporterYear', supporterYearRouter);
118120
app.use('/userCriminalRecord', userCriminalRecordRouter);
119121
app.use('/userMotivation', userMotivationRouter);
122+
app.use('/userComment', userCommentRouter);
120123
app.use('/userDocument', userDocumentRouter);
121124
app.use('/userPermission', userPermissionRouter);
122125
app.use('/userYear', userYearRouter);
@@ -150,6 +153,9 @@ responsibilityModel.hasOne(userModel, {foreignKey: 'uuid'})
150153
supporterYearModel.hasMany(supporterDayModel, {foreignKey: 'uuid'})
151154
supporterDayModel.hasOne(supporterYearModel, {foreignKey: 'uuid'})
152155

156+
userModel.hasOne(userCommentModel, {foreignKey: 'uuid'})
157+
userCommentModel.hasOne(userModel, {foreignKey: 'uuid'})
158+
153159
userModel.hasOne(userDocumentModel, {foreignKey: 'uuid'})
154160
userDocumentModel.hasOne(userModel, {foreignKey: 'uuid'})
155161

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import userCommentModel from '../models/userComment.model.js'
2+
3+
export async function findAll(req, res) {
4+
const isLT = req.kauth.grant.access_token.content.groups?.includes('Leitungsteam')
5+
if (!isLT) {
6+
res.status(403).send()
7+
return;
8+
}
9+
try {
10+
const userComment = await userCommentModel.findAll({where: req.query})
11+
res.status(200).send(userComment)
12+
} catch(e) {
13+
res.status(400).send()
14+
}
15+
}
16+
17+
export async function findOne(req, res) {
18+
if (!req.params || !req.params.uuid ) {
19+
res.status(400).send('bad request')
20+
return;
21+
}
22+
const isLT = req.kauth.grant.access_token.content.groups?.includes('Leitungsteam')
23+
if (!isLT) {
24+
res.status(403).send()
25+
return;
26+
}
27+
const userComment = await userCommentModel.findOne({where: {uuid: req.params.uuid}})
28+
if (userComment) {
29+
res.status(200).send(userComment)
30+
} else {
31+
res.status(404).send('not found')
32+
}
33+
}
34+
35+
export async function createOrUpdate(req, res) {
36+
const isLT = req.kauth.grant.access_token.content.groups?.includes('Leitungsteam')
37+
if (!isLT) {
38+
res.status(403).send()
39+
return;
40+
}
41+
if (!req.params?.uuid) {
42+
res.status(400).send('bad request')
43+
return;
44+
}
45+
const userComment = await userCommentModel.findOne({where: {uuid: req.params.uuid}})
46+
if (userComment) {
47+
userCommentModel.update(req.body, {where: {uuid: req.params.uuid}});
48+
res.status(200).send(userComment)
49+
} else {
50+
var data = req.body
51+
data.uuid = req.params.uuid
52+
userCommentModel.create(data)
53+
res.status(200).send(userComment)
54+
}
55+
}

src/controllers/userYear.controller.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ export async function findAll(req, res) {
4949
})
5050
}
5151
}
52-
delete req.query.userBundle
53-
delete req.query.assigneeBundle
54-
delete req.query.documentBundle
5552
data['where'] = req.query
53+
delete data.where.userBundle
54+
delete data.where.assigneeBundle
55+
delete data.where.documentBundle
5656
try {
5757
console.log(data);
5858
const userYear = await userYearModel.findAll(data)
@@ -91,10 +91,12 @@ export async function createOrUpdate(req, res) {
9191
return;
9292
}
9393
const userYear = await userYearModel.findOne({where: {uuid: req.params.uuid, year: year}})
94+
req.body.registeredAt = userYear.registeredAt;
9495
var data = req.body
9596
if (userYear) {
9697
if (userYear.status === 2) {
9798
data['status'] = 3;
99+
data['registeredAt'] = new Date();
98100
}
99101
// activate user
100102
if (userYear.status !== 4 && req.body.status === 4) {

src/models/userComment.model.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { DataTypes } from 'sequelize';
2+
import sequelize from './db.model.js';
3+
4+
export default sequelize.define('UserComment', {
5+
uuid: {
6+
type: DataTypes.UUID,
7+
primaryKey: true,
8+
references: {
9+
model: 'Users',
10+
key: 'uuid'
11+
}
12+
},
13+
comment: {
14+
type: DataTypes.TEXT
15+
},
16+
});

src/models/userYear.model.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,5 +204,8 @@ export default sequelize.define('UserYear', {
204204
model: 'Users',
205205
key: 'uuid'
206206
}
207-
}
207+
},
208+
registeredAt: {
209+
type: DataTypes.DATE
210+
},
208211
});

src/routes/userComment.route.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { Router } from 'express';
2+
import keycloak from '../config/keycloak.js';
3+
import { findAll, findOne, createOrUpdate } from '../controllers/userComment.controller.js'
4+
5+
var router = new Router();
6+
7+
router.get('/', keycloak.protect(), findAll);
8+
router.get('/:uuid', keycloak.protect(), findOne);
9+
router.post('/:uuid', keycloak.protect(), createOrUpdate);
10+
11+
export default router

0 commit comments

Comments
 (0)