From ebaf828882b44e22cbd4b3afa9d1556ef088b5e2 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 21 Jan 2024 12:51:57 +0100 Subject: [PATCH] unlink google calendar --- src/controllers/calendarController.ts | 43 +++++++++++++++++++++++++++ src/routes/calendarRoutes.ts | 27 +++++++++-------- src/utils/constants.ts | 4 +-- 3 files changed, 58 insertions(+), 16 deletions(-) diff --git a/src/controllers/calendarController.ts b/src/controllers/calendarController.ts index 3923673..d03d9b9 100644 --- a/src/controllers/calendarController.ts +++ b/src/controllers/calendarController.ts @@ -4,6 +4,7 @@ import Store from "../models/store"; import { getUserSession } from "../utils/utils"; import User from "../models/user"; import UserGoogleTokens from "../models/userGoogleTokens"; +import axios from "axios"; // this request is needed to get the store id after the user has connected his calendar to redirect him back to the calendar page export async function GetStoreId(req: Request, res: Response) { @@ -236,3 +237,45 @@ export async function UpdateStoreCalendarSettings(req: Request, res: Response) { res.status(500).send({ err: "invalid request" }); } } + +export async function UnlinkGoogleCalendar(req: Request, res: Response) { + try { + const userSession = await getUserSession(req); + + if (!userSession) { + return res.status(401).send({ err: "unauthorized" }); + } + + // check if the user has the google calendar connected + + const userGoogleToken = await UserGoogleTokens.findOne({ + where: { + user_id: userSession.user_id, + }, + }); + + if (!userGoogleToken) { + return res.status(401).send({ err: "unauthorized" }); + } + + axios + .post(`${process.env.TERMIN_PLANNER_URL}/removeGoogleAccount` as string, { + userId: userSession.user_id, + deleteCalendars: false, + pass: process.env.TERMIN_PLANNER_AUTHORIZATION_PASSWORD as string, + }) + .then((response) => { + logger.info("response %s", response.data); + + res.status(200).send({ msg: "success" }); + }) + .catch((err) => { + logger.info("err %s", err); + + res.status(500).send({ err: "invalid request" }); + }); + } catch (error) { + logger.error(error); + res.status(500).send({ err: "invalid request" }); + } +} diff --git a/src/routes/calendarRoutes.ts b/src/routes/calendarRoutes.ts index 28b064b..146e695 100644 --- a/src/routes/calendarRoutes.ts +++ b/src/routes/calendarRoutes.ts @@ -58,13 +58,16 @@ router.get( logger.info("userSession %s", userSession.user_id); axios - .post(process.env.TERMIN_PLANNER_URL as string, { - userId: userSession.user_id, - accessToken: accessToken, - refreshToken: refreshToken, - sub: sub, - pass: process.env.TERMIN_PLANNER_AUTHORIZATION_PASSWORD as string, - }) + .post( + `${process.env.TERMIN_PLANNER_URL}/addGoogleAccount` as string, + { + userId: userSession.user_id, + accessToken: accessToken, + refreshToken: refreshToken, + sub: sub, + pass: process.env.TERMIN_PLANNER_AUTHORIZATION_PASSWORD as string, + } + ) .then((response) => { logger.info("response %s", response.data); }) @@ -80,12 +83,6 @@ router.get( }); // /api/v1/addGoogleAccount - - /* - user_id - refresh_token - pass - */ } ); @@ -96,5 +93,9 @@ router.post( calendarController.UpdatePersonalCalendarSettings ); router.post("/settings/store", calendarController.UpdateStoreCalendarSettings); +router.post( + "/settings/personal/unlink", + calendarController.UnlinkGoogleCalendar +); export default router; diff --git a/src/utils/constants.ts b/src/utils/constants.ts index fdd50c7..d4abcd0 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -27,11 +27,9 @@ export const STORE_SERVICE_ACTIVITY_DESCRIPTION_MAX_LENGTH = 1024; export const STORE_SERVICE_ACTIVITY_PRICE_MIN = 0; export const STORE_SERVICE_ACTIVITY_PRICE_MAX = 10000000; -export const STORE_SERVICE_ACTIVITY_DURATION_HOURS_MAX = 23; -export const STORE_SERVICE_ACTIVITY_DURATION_MINUTES_MAX = 60; +export const STORE_SERVICE_ACTIVITY_DURATION_MINUTES_MAX = 24 * 60; // 1440 minutes = 24 hours export const STORE_SERVICE_ACTIVITY_DURATION_MIN = 0; export const STORE_SERVICE_ACTIVITY_DURATION_MAX = - STORE_SERVICE_ACTIVITY_DURATION_HOURS_MAX * 60 + STORE_SERVICE_ACTIVITY_DURATION_MINUTES_MAX; export const CALENDAR_MAX_FUTURE_BOOKING_DAYS = 14;