From 10929c97e6ab667bdb854d894eddae8293fdacf8 Mon Sep 17 00:00:00 2001 From: Jake Potrebic <15055071+Machine-Maker@users.noreply.github.com> Date: Sun, 6 Sep 2020 15:28:13 -0700 Subject: [PATCH] finished HeaderData --- .../hangar/db/dao/NotificationsDao.java | 13 +++++++++++ .../papermc/hangar/service/UserService.java | 22 +++++++++++++------ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/papermc/hangar/db/dao/NotificationsDao.java b/src/main/java/io/papermc/hangar/db/dao/NotificationsDao.java index c6a907d55..840cd61b4 100644 --- a/src/main/java/io/papermc/hangar/db/dao/NotificationsDao.java +++ b/src/main/java/io/papermc/hangar/db/dao/NotificationsDao.java @@ -35,4 +35,17 @@ public interface NotificationsDao { "WHERE n.user_id = :userId AND " + "ORDER BY n.created_at") LinkedHashMap getUserNotifications(long userId, @Define("ifread") String read); + + // For HeaderData + @SqlQuery("SELECT exists(SELECT 1 FROM notifications n WHERE n.user_id = :userId AND n.read IS FALSE)") + boolean hasUnreadNotifications(long userId); + + @SqlQuery("SELECT exists(SELECT 1 FROM project_flags WHERE is_resolved IS FALSE)") + boolean hasUnresolvedFlags(); + + @SqlQuery("SELECT exists(SELECT 1 FROM projects p WHERE p.owner_id = :userId AND p.visibility = 3)") + boolean hasProjectApprovals(long userId); + + @SqlQuery("SELECT exists(SELECT 1 FROM project_versions pv WHERE pv.review_state = 0)") + boolean hasReviewQueue(); } diff --git a/src/main/java/io/papermc/hangar/service/UserService.java b/src/main/java/io/papermc/hangar/service/UserService.java index 754355071..ac7783a4d 100644 --- a/src/main/java/io/papermc/hangar/service/UserService.java +++ b/src/main/java/io/papermc/hangar/service/UserService.java @@ -3,6 +3,7 @@ package io.papermc.hangar.service; import io.papermc.hangar.config.CacheConfig; import io.papermc.hangar.config.hangar.HangarConfig; import io.papermc.hangar.db.dao.HangarDao; +import io.papermc.hangar.db.dao.NotificationsDao; import io.papermc.hangar.db.dao.OrganizationDao; import io.papermc.hangar.db.dao.ProjectDao; import io.papermc.hangar.db.dao.UserDao; @@ -49,18 +50,20 @@ public class UserService extends HangarService { private final HangarDao orgDao; private final HangarDao projectDao; private final HangarDao organizationDao; + private final HangarDao notificationsDao; private final RoleService roleService; private final PermissionService permissionService; private final OrgService orgService; private final HangarConfig config; @Autowired - public UserService(HangarDao userDao, HangarConfig config, HangarDao orgDao, HangarDao projectDao, HangarDao organizationDao, RoleService roleService, PermissionService permissionService, OrgService orgService) { + public UserService(HangarDao userDao, HangarConfig config, HangarDao orgDao, HangarDao projectDao, HangarDao organizationDao, HangarDao notificationsDao, RoleService roleService, PermissionService permissionService, OrgService orgService) { this.userDao = userDao; this.config = config; this.orgDao = orgDao; this.projectDao = projectDao; this.organizationDao = organizationDao; + this.notificationsDao = notificationsDao; this.roleService = roleService; this.permissionService = permissionService; this.orgService = orgService; @@ -82,15 +85,20 @@ public class UserService extends HangarService { return HeaderData.UNAUTHENTICATED; } UsersTable curUser = currentUser.get().get(); - // TODO fill headerData + Permission perms = permissionService.getGlobalPermissions(curUser.getId()); + + boolean hasUnreadNotifs = notificationsDao.get().hasUnreadNotifications(curUser.getId()); + boolean hasUnresolvedFlags = perms.has(Permission.ModNotesAndFlags) && notificationsDao.get().hasUnresolvedFlags(); + boolean hasProjectApprovals = perms.has(Permission.ModNotesAndFlags.add(Permission.SeeHidden)) && notificationsDao.get().hasProjectApprovals(curUser.getId()); + boolean hasReviewQueue = perms.has(Permission.Reviewer) && notificationsDao.get().hasReviewQueue(); return new HeaderData( curUser, permissionService.getGlobalPermissions(curUser.getId()), - false, - false, - false, - false, - false + hasUnreadNotifs || hasUnresolvedFlags || hasProjectApprovals || hasReviewQueue, + hasUnreadNotifs, + hasUnresolvedFlags, + hasProjectApprovals, + hasReviewQueue ); }