From 6c0e6a26633952fcd72d1608709e94ce8464b100 Mon Sep 17 00:00:00 2001 From: NovaFox161 Date: Sun, 7 Jan 2018 18:11:45 -0600 Subject: [PATCH] Calendar editing works in dashboard. --- .../discal/web/handler/DashboardHandler.java | 63 ++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cloudcraftgaming/discal/web/handler/DashboardHandler.java b/src/main/java/com/cloudcraftgaming/discal/web/handler/DashboardHandler.java index 44f8d838..4ecc67e4 100644 --- a/src/main/java/com/cloudcraftgaming/discal/web/handler/DashboardHandler.java +++ b/src/main/java/com/cloudcraftgaming/discal/web/handler/DashboardHandler.java @@ -1,12 +1,14 @@ package com.cloudcraftgaming.discal.web.handler; import com.cloudcraftgaming.discal.Main; +import com.cloudcraftgaming.discal.api.calendar.CalendarAuth; import com.cloudcraftgaming.discal.api.database.DatabaseManager; import com.cloudcraftgaming.discal.api.object.web.WebChannel; import com.cloudcraftgaming.discal.api.object.web.WebGuild; import com.cloudcraftgaming.discal.api.object.web.WebRole; import com.cloudcraftgaming.discal.api.utils.ExceptionHandler; import com.cloudcraftgaming.discal.api.utils.PermissionChecker; +import com.google.api.services.calendar.model.Calendar; import org.json.JSONException; import spark.Request; import spark.Response; @@ -181,8 +183,67 @@ public class DashboardHandler { for (IChannel c : guild.getChannels()) { g.getChannels().add(new WebChannel().fromChannel(c, g.getSettings())); } + } else if (request.queryParams().contains("cal-name")) { + //Update calendar name/summary... + Map m = DiscordAccountHandler.getHandler().getAccount(request.session().id()); + WebGuild g = (WebGuild) m.get("selected"); + + try { + if (g.getCalendar().isExternal()) { + Calendar cal = CalendarAuth.getCalendarService(g.getSettings()).calendars().get(g.getCalendar().getId()).execute(); + cal.setSummary(request.queryParams("cal-name")); + CalendarAuth.getCalendarService(g.getSettings()).calendars().update(g.getCalendar().getId(), cal).execute(); + } else { + Calendar cal = CalendarAuth.getCalendarService().calendars().get(g.getCalendar().getId()).execute(); + cal.setSummary(request.queryParams("cal-name")); + CalendarAuth.getCalendarService().calendars().update(g.getCalendar().getId(), cal).execute(); + } + + g.getCalendar().setName(request.queryParams("cal-name")); + } catch (Exception e) { + ExceptionHandler.sendException(null, "[WEB] Failed to update calendar name", e, DashboardHandler.class); + } + } else if (request.queryParams().contains("cal-desc")) { + //Update calendar name/summary... + Map m = DiscordAccountHandler.getHandler().getAccount(request.session().id()); + WebGuild g = (WebGuild) m.get("selected"); + + try { + if (g.getCalendar().isExternal()) { + Calendar cal = CalendarAuth.getCalendarService(g.getSettings()).calendars().get(g.getCalendar().getId()).execute(); + cal.setDescription(request.queryParams("cal-desc")); + CalendarAuth.getCalendarService(g.getSettings()).calendars().update(g.getCalendar().getId(), cal).execute(); + } else { + Calendar cal = CalendarAuth.getCalendarService().calendars().get(g.getCalendar().getId()).execute(); + cal.setDescription(request.queryParams("cal-desc")); + CalendarAuth.getCalendarService().calendars().update(g.getCalendar().getId(), cal).execute(); + } + + g.getCalendar().setDescription(request.queryParams("cal-desc")); + } catch (Exception e) { + ExceptionHandler.sendException(null, "[WEB] Failed to update calendar description", e, DashboardHandler.class); + } + } else if (request.queryParams().contains("cal-tz")) { + //Update calendar name/summary... + Map m = DiscordAccountHandler.getHandler().getAccount(request.session().id()); + WebGuild g = (WebGuild) m.get("selected"); + + try { + if (g.getCalendar().isExternal()) { + Calendar cal = CalendarAuth.getCalendarService(g.getSettings()).calendars().get(g.getCalendar().getId()).execute(); + cal.setTimeZone(request.queryParams("cal-tz").replace("___", "/")); + CalendarAuth.getCalendarService(g.getSettings()).calendars().update(g.getCalendar().getId(), cal).execute(); + } else { + Calendar cal = CalendarAuth.getCalendarService().calendars().get(g.getCalendar().getId()).execute(); + cal.setTimeZone(request.queryParams("cal-tz").replace("___", "/")); + CalendarAuth.getCalendarService().calendars().update(g.getCalendar().getId(), cal).execute(); + } + + g.getCalendar().setTimezone(request.queryParams("cal-tz")); + } catch (Exception e) { + ExceptionHandler.sendException(null, "[WEB] Failed to update calendar timezone", e, DashboardHandler.class); + } } - //TODO: Handle calendar name/description/timezone updating. //Finally redirect back to the dashboard response.redirect("/dashboard/guild", 301);