diff --git a/src/app/admin/permission/permission.model.ts b/src/app/admin/permission/permission.model.ts index 4d85096d..52e457a0 100644 --- a/src/app/admin/permission/permission.model.ts +++ b/src/app/admin/permission/permission.model.ts @@ -39,6 +39,16 @@ export interface PermissionGetManyResponse { count: number; } +export type PermissionsSlimDto = Pick< + PermissionResponse, + "id" | "name" | "automaticallyAddNewApplications" | "organization" +>; + +export interface PermissionGetManySlimResponse { + data: PermissionsSlimDto[]; + count: number; +} + export interface PermissionTypes { type: PermissionType; } diff --git a/src/app/admin/permission/permission.service.ts b/src/app/admin/permission/permission.service.ts index 04365bc2..4f46bffd 100644 --- a/src/app/admin/permission/permission.service.ts +++ b/src/app/admin/permission/permission.service.ts @@ -6,6 +6,7 @@ import { PermissionResponse, PermissionRequest, PermissionRequestAcceptUser, + PermissionGetManySlimResponse, } from "./permission.model"; import { map } from "rxjs/operators"; import { UserMinimalService } from "../users/user-minimal.service"; @@ -15,6 +16,7 @@ import { UserMinimalService } from "../users/user-minimal.service"; }) export class PermissionService { endpoint = "permission"; + applicationAdmin = "/applicationAdmin"; constructor(private restService: RestService, private userMinimalService: UserMinimalService) {} createPermission(body: PermissionRequest): Observable { @@ -75,6 +77,33 @@ export class PermissionService { } } + getPermissionsWhereApplicationAdmin( + limit: number = 1000, + offset: number = 0, + orderByColumn?: string, + orderByDirection?: string, + userId?: number, + organisationId?: number + ): Observable { + if (userId || organisationId) { + return this.restService.get(this.endpoint + this.applicationAdmin, { + limit: limit, + offset: offset, + orderOn: orderByColumn, + sort: orderByDirection, + userId: userId, + organisationId: organisationId, + }); + } else { + return this.restService.get(this.endpoint + this.applicationAdmin, { + limit: limit, + offset: offset, + orderOn: orderByColumn, + sort: orderByDirection, + }); + } + } + getPermissionsWithoutUsers(userId?: number): Observable { return this.restService.get(this.endpoint + "/getAllPermissionsWithoutUsers", { limit: 1000, diff --git a/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.html b/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.html index 8e25a205..100d0b3d 100644 --- a/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.html +++ b/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.html @@ -35,7 +35,7 @@

{{ "APPLICATION.CHANGE-ORGANIZATION.TITLE" | translate }}{{ "APPLICATION.CHANGE-ORGANIZATION.USER-GROUP-AUTO-SELECT" | translate }} -
+
diff --git a/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.scss b/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.scss index 5731c5e9..448b8185 100644 --- a/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.scss +++ b/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.scss @@ -1,3 +1,8 @@ .application-change-organization-dialog { width: 50vw; } + +.mat-dialog-actions { + margin-left: 13px; + margin-bottom: 13px; +} diff --git a/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.ts b/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.ts index 05eaebb6..a38f69d9 100644 --- a/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.ts +++ b/src/app/applications/application-change-organization-dialog/application-change-organization-dialog.component.ts @@ -4,7 +4,7 @@ import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material/dialog"; import { MatSnackBar } from "@angular/material/snack-bar"; import { Organisation } from "@app/admin/organisation/organisation.model"; import { OrganisationService } from "@app/admin/organisation/organisation.service"; -import { PermissionResponse } from "@app/admin/permission/permission.model"; +import { PermissionResponse, PermissionsSlimDto } from "@app/admin/permission/permission.model"; import { PermissionService } from "@app/admin/permission/permission.service"; import { Application, UpdateApplicationOrganization } from "@applications/application.model"; import { ApplicationService } from "@applications/application.service"; @@ -23,9 +23,9 @@ export class ApplicationChangeOrganizationDialogComponent implements OnInit { public permissionsSubscription: Subscription; public organizationsSubscription: Subscription; public application: UpdateApplicationOrganization; - public permissions: PermissionResponse[]; + public permissions: PermissionsSlimDto[]; public organizations: Organisation[]; - public filteredPermissionsMulti: ReplaySubject = new ReplaySubject(1); + public filteredPermissionsMulti: ReplaySubject = new ReplaySubject(1); public filteredOrganizations: ReplaySubject = new ReplaySubject(1); constructor( @@ -61,18 +61,20 @@ export class ApplicationChangeOrganizationDialogComponent implements OnInit { getOrganizations() { this.organizationsSubscription = this.organizationService.getMultipleWithApplicationAdmin().subscribe(res => { - this.organizations = res.data; + this.organizations = res.data.sort((a, b) => a.name.localeCompare(b.name, "da-DK", { numeric: true })); this.filteredOrganizations.next(this.organizations.slice()); }); } getPermissions() { - this.permissionsSubscription = this.permissionService.getPermissions(1000, 0).subscribe(res => { - this.permissions = res.data.sort((a, b) => a.name.localeCompare(b.name, "da-DK", { numeric: true })); - this.filteredPermissionsMulti.next( - this.permissions.filter(p => p?.organization?.id === this?.application?.organizationId) - ); - }); + this.permissionsSubscription = this.permissionService + .getPermissionsWhereApplicationAdmin(1000, 0) + .subscribe(res => { + this.permissions = res.data.sort((a, b) => a.name.localeCompare(b.name, "da-DK", { numeric: true })); + this.filteredPermissionsMulti.next( + this.permissions.filter(p => p?.organization?.id === this?.application?.organizationId) + ); + }); } public compare(o1: any, o2: any): boolean { @@ -99,12 +101,13 @@ export class ApplicationChangeOrganizationDialogComponent implements OnInit { applicationName: savedApplication.name, organizationName: savedApplication.belongsTo.name, }), - "", + this.translate.instant("DIALOG.OK"), { duration: 10000, } ); this.dialog.close(true); + this.snackBar._openedSnackBarRef.afterDismissed().subscribe(() => location.reload()); }); } } diff --git a/src/app/applications/applications-list/applications-table/applications-table.component.ts b/src/app/applications/applications-list/applications-table/applications-table.component.ts index 30d94840..3b469b6b 100644 --- a/src/app/applications/applications-list/applications-table/applications-table.component.ts +++ b/src/app/applications/applications-list/applications-table/applications-table.component.ts @@ -273,17 +273,11 @@ export class ApplicationsTableComponent implements AfterViewInit, OnInit { } onOpenChangeOrganizationDialog(id: number) { - const dialog = this.changeOrganizationDialog.open(ApplicationChangeOrganizationDialogComponent, { + this.changeOrganizationDialog.open(ApplicationChangeOrganizationDialogComponent, { data: { applicationId: id, } as ApplicationDialogModel, }); - - dialog.afterClosed().subscribe(res => { - if (!res) return; - - location.reload(); - }); } protected readonly columnDefinitions = columnDefinitions;