load org count into headerdata

Signed-off-by: MiniDigger <admin@minidigger.me>
This commit is contained in:
MiniDigger 2021-04-09 18:05:50 +02:00
parent f6c910f8f7
commit ebba1fb597
6 changed files with 24 additions and 6 deletions

View File

@ -127,8 +127,7 @@ export default class Header extends HangarComponent {
icon: 'mdi-book',
title: this.$t('nav.new.project'),
});
// TODO get user orgs count
if (0 - 1 < this.validations.maxOrgCount) {
if (this.currentUser!.headerData.organizationCount - 1 < this.validations.maxOrgCount) {
controls.push({
link: '/organizations/new',
icon: 'mdi-account-group',

View File

@ -33,6 +33,7 @@ declare module 'hangar-internal' {
unresolvedFlags: number;
projectApprovals: number;
reviewQueueCount: number;
organizationCount: number;
}
interface HangarUser extends User, Table {

View File

@ -39,4 +39,7 @@ public interface OrganizationDAO {
@SqlQuery("SELECT * FROM organizations WHERE owner_id = :ownerId")
List<OrganizationTable> getOrganizationsOwnedBy(long ownerId);
@SqlQuery("SELECT count(id) FROM organizations WHERE owner_id = :userId")
long getOrganizationCount(long userId);
}

View File

@ -61,14 +61,16 @@ public class HangarUser extends User implements Identified {
private final long unresolvedFlags;
private final long projectApprovals;
private final long reviewQueueCount;
private final long organizationCount;
public HeaderData(Permission globalPermission, long unreadNotifications, long unansweredInvites, long unresolvedFlags, long projectApprovals, long reviewQueueCount) {
public HeaderData(Permission globalPermission, long unreadNotifications, long unansweredInvites, long unresolvedFlags, long projectApprovals, long reviewQueueCount, long organizationCount) {
this.globalPermission = globalPermission;
this.unreadNotifications = unreadNotifications;
this.unansweredInvites = unansweredInvites;
this.unresolvedFlags = unresolvedFlags;
this.projectApprovals = projectApprovals;
this.reviewQueueCount = reviewQueueCount;
this.organizationCount = organizationCount;
}
public Permission getGlobalPermission() {
@ -95,6 +97,10 @@ public class HangarUser extends User implements Identified {
return reviewQueueCount;
}
public long getOrganizationCount() {
return organizationCount;
}
@Override
public String toString() {
return "HeaderData{" +
@ -104,6 +110,7 @@ public class HangarUser extends User implements Identified {
", unresolvedFlags=" + unresolvedFlags +
", projectApprovals=" + projectApprovals +
", reviewQueueCount=" + reviewQueueCount +
", organizationCount=" + organizationCount +
'}';
}
}

View File

@ -17,6 +17,7 @@ import io.papermc.hangar.model.common.Permission;
import io.papermc.hangar.model.internal.user.HangarUser;
import io.papermc.hangar.model.internal.user.HangarUser.HeaderData;
import io.papermc.hangar.service.PermissionService;
import io.papermc.hangar.service.internal.organizations.OrganizationService;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
@ -35,13 +36,15 @@ public class UsersApiService extends HangarComponent {
private final UsersApiDAO usersApiDAO;
private final NotificationsDAO notificationsDAO;
private final PermissionService permissionService;
private final OrganizationService organizationService;
@Autowired
public UsersApiService(HangarDao<UsersDAO> usersDAO, HangarDao<UsersApiDAO> usersApiDAO, HangarDao<NotificationsDAO> notificationsDAO, PermissionService permissionService) {
public UsersApiService(HangarDao<UsersDAO> usersDAO, HangarDao<UsersApiDAO> usersApiDAO, HangarDao<NotificationsDAO> notificationsDAO, PermissionService permissionService, OrganizationService organizationService) {
this.usersDAO = usersDAO.get();
this.usersApiDAO = usersApiDAO.get();
this.notificationsDAO = notificationsDAO.get();
this.permissionService = permissionService;
this.organizationService = organizationService;
}
public <T extends User> T getUser(String name, Class<T> type) {
@ -109,14 +112,15 @@ public class UsersApiService extends HangarComponent {
long unresolvedFlags = globalPermission.has(Permission.ModNotesAndFlags) ? notificationsDAO.getUnresolvedFlagsCount() : 0;
long projectApprovals = globalPermission.has(Permission.ModNotesAndFlags.add(Permission.SeeHidden)) ? notificationsDAO.getProjectApprovalsCount() : 0;
long reviewQueueCount = globalPermission.has(Permission.Reviewer) ? notificationsDAO.getReviewQueueCount() : 0;
long organizationCount = organizationService.getUserOrganizationCount(hangarUser.getId());
hangarUser.setHeaderData(new HeaderData(
globalPermission,
unreadNotifs,
unansweredInvites,
unresolvedFlags,
projectApprovals,
reviewQueueCount
));
reviewQueueCount,
organizationCount));
return hangarUser;
}
}

View File

@ -74,6 +74,10 @@ public class OrganizationService extends HangarComponent {
return organizationRolesDAO.getUserOrganizationRoles(user, getHangarUserId());
}
public long getUserOrganizationCount(long userId) {
return organizationDAO.getOrganizationCount(userId);
}
public void editMembers(String name, EditMembersForm<OrganizationRole> editMembersForm) {
OrganizationTable organizationTable = getOrganizationTable(name);
List<HangarApiException> errors = new ArrayList<>();