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) => {
 | 
					eventsRouter.delete('/:eventId', async (req: Request, res: Response) => {
 | 
				
			||||||
	try {
 | 
						try {
 | 
				
			||||||
		// Get params
 | 
							// Get params
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -188,3 +188,26 @@ export const deleteEvent = async (event: Event): Promise<boolean> => {
 | 
				
			||||||
		await conn.end();
 | 
							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