Add endpoint that allows to move an event to a different calendar
All checks were successful
Jenkins Production Deployment
All checks were successful
Jenkins Production Deployment
This commit is contained in:
parent
cb85e81d67
commit
a38fb20e5a
|
@ -246,6 +246,63 @@ eventsRouter.put('/:eventId', async (req: Request, res: Response) => {
|
|||
}
|
||||
});
|
||||
|
||||
eventsRouter.put('/move/:eventId', async (req: Request, res: Response) => {
|
||||
try {
|
||||
// Get params
|
||||
let sessionId: string = req.query.sessionId as string ?? '';
|
||||
let sessionKey: string = req.query.sessionKey as string ?? '';
|
||||
let ip: string = req.socket.remoteAddress ?? '';
|
||||
|
||||
let user = await UserService.checkSession(sessionId, sessionKey, ip);
|
||||
|
||||
if (!user.isActive) {
|
||||
res.status(403).send({'message': 'You do not have access to the specified calendar.'});
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
req.params.eventId === undefined ||
|
||||
req.body.calendarId === undefined
|
||||
) {
|
||||
res.status(400).send({'message': 'Required parameters missing'});
|
||||
return;
|
||||
}
|
||||
|
||||
let event: Event = {
|
||||
eventId: parseInt(req.params.eventId, 10),
|
||||
calendarId: req.body.calendarId,
|
||||
uuid: '',
|
||||
name: req.body.name,
|
||||
description: req.body.description ?? '',
|
||||
startDateTime: new Date(req.body.startDateTime),
|
||||
endDateTime: new Date(req.body.endDateTime),
|
||||
createdDate: new Date(),
|
||||
location: req.body.location ?? '',
|
||||
createdBy: req.body.createdBy ?? '',
|
||||
createdById: user.userId ?? -1,
|
||||
url: req.body.url ?? '',
|
||||
wholeDay: req.body.wholeDay ?? false,
|
||||
status: req.body.status ?? 'PUBLIC'
|
||||
};
|
||||
|
||||
let success = await EventService.moveEvent(event);
|
||||
|
||||
if (success) {
|
||||
res.status(200).send({'message': 'Event was successfully moved'});
|
||||
} else {
|
||||
res.status(500).send({'message': 'An error occurred during the moving process. Please try again.'});
|
||||
}
|
||||
} catch (e: any) {
|
||||
let errorGuid = Guid.create().toString();
|
||||
logger.error('Error handling a request: ' + e.message, {reference: errorGuid});
|
||||
res.status(500).send({
|
||||
'status': 'PROCESSING_ERROR',
|
||||
'message': 'Internal Server Error. Try again later.',
|
||||
'reference': errorGuid
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
eventsRouter.delete('/:eventId', async (req: Request, res: Response) => {
|
||||
try {
|
||||
// Get params
|
||||
|
|
|
@ -188,3 +188,26 @@ export const deleteEvent = async (event: Event): Promise<boolean> => {
|
|||
await conn.end();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Moves an event to the specified calendar
|
||||
* @param event The event to move. Has to have the target calendar set already.
|
||||
*/
|
||||
export const moveEvent = async (event: Event): Promise<boolean> => {
|
||||
let conn = await NachklangCalendarDB.getConnection();
|
||||
try {
|
||||
const eventQuery = 'UPDATE events SET calendar_id = ? WHERE event_id = ?';
|
||||
const eventRes = await conn.execute(eventQuery, [event.calendarId, event.eventId]);
|
||||
|
||||
await conn.commit();
|
||||
|
||||
return eventRes.affectedRows === 1;
|
||||
} catch (err) {
|
||||
await conn.rollback();
|
||||
throw err;
|
||||
} finally {
|
||||
// Return connection
|
||||
await conn.commit();
|
||||
await conn.end();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user