From c4b63e47f8f38e48363c7e62f19c8494432e1bc7 Mon Sep 17 00:00:00 2001
From: Mads Apollo Lauridsen <mal@iterator-it.dk>
Date: Fri, 20 Sep 2024 11:18:32 +0200
Subject: [PATCH 1/3] Added sorting of organizations, padding for dialog, and
 call to get permissions where applicationadmin

---
 src/app/admin/permission/permission.model.ts  | 10 +++++++
 .../admin/permission/permission.service.ts    | 29 +++++++++++++++++++
 ...-change-organization-dialog.component.html |  2 +-
 ...-change-organization-dialog.component.scss |  5 ++++
 ...on-change-organization-dialog.component.ts | 26 ++++++++++-------
 .../applications-table.component.ts           |  6 ----
 6 files changed, 60 insertions(+), 18 deletions(-)

diff --git a/src/app/admin/permission/permission.model.ts b/src/app/admin/permission/permission.model.ts
index 4d85096d..98d30b75 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 PermissionGetManyWhereApplicationAdminResponse {
+  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 83bc2040..4dbb274b 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,
+  PermissionGetManyWhereApplicationAdminResponse,
 } 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<PermissionResponse> {
@@ -72,6 +74,33 @@ export class PermissionService {
     }
   }
 
+  getPermissionsWhereApplicationAdmin(
+    limit: number = 1000,
+    offset: number = 0,
+    orderByColumn?: string,
+    orderByDirection?: string,
+    userId?: number,
+    organisationId?: number
+  ): Observable<PermissionGetManyWhereApplicationAdminResponse> {
+    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,
+      });
+    }
+  }
+
   deletePermission(id: number) {
     return this.restService.delete(this.endpoint, id);
   }
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 @@ <h1 mat-dialog-title>{{ "APPLICATION.CHANGE-ORGANIZATION.TITLE" | translate }}</
       <mat-hint>{{ "APPLICATION.CHANGE-ORGANIZATION.USER-GROUP-AUTO-SELECT" | translate }}</mat-hint>
     </div>
   </div>
-  <div mat-dialog-actions class="d-flex flex-row">
+  <div mat-dialog-actions class="d-flex flex-row mat-dialog-actions">
     <button (click)="onSubmit()" class="btn btn-primary">
       {{ "GEN.SAVE" | translate }}
     </button>
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..ab6765bb 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<PermissionResponse[]> = new ReplaySubject<PermissionResponse[]>(1);
+  public filteredPermissionsMulti: ReplaySubject<PermissionsSlimDto[]> = new ReplaySubject<PermissionsSlimDto[]>(1);
   public filteredOrganizations: ReplaySubject<Organisation[]> = new ReplaySubject<Organisation[]>(1);
 
   constructor(
@@ -61,18 +61,21 @@ 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 => {
+        console.log(res.data, "dat");
+        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 +102,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..64972c98 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
@@ -278,12 +278,6 @@ export class ApplicationsTableComponent implements AfterViewInit, OnInit {
         applicationId: id,
       } as ApplicationDialogModel,
     });
-
-    dialog.afterClosed().subscribe(res => {
-      if (!res) return;
-
-      location.reload();
-    });
   }
 
   protected readonly columnDefinitions = columnDefinitions;

From 743587b12838bd912e57b9fbbb8d91e9162b65bb Mon Sep 17 00:00:00 2001
From: Mads Apollo Lauridsen <mal@iterator-it.dk>
Date: Fri, 20 Sep 2024 11:32:26 +0200
Subject: [PATCH 2/3] removed log, and unused variable.

---
 .../application-change-organization-dialog.component.ts         | 1 -
 .../applications-table/applications-table.component.ts          | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)

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 ab6765bb..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
@@ -70,7 +70,6 @@ export class ApplicationChangeOrganizationDialogComponent implements OnInit {
     this.permissionsSubscription = this.permissionService
       .getPermissionsWhereApplicationAdmin(1000, 0)
       .subscribe(res => {
-        console.log(res.data, "dat");
         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)
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 64972c98..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,7 +273,7 @@ export class ApplicationsTableComponent implements AfterViewInit, OnInit {
   }
 
   onOpenChangeOrganizationDialog(id: number) {
-    const dialog = this.changeOrganizationDialog.open(ApplicationChangeOrganizationDialogComponent, {
+    this.changeOrganizationDialog.open(ApplicationChangeOrganizationDialogComponent, {
       data: {
         applicationId: id,
       } as ApplicationDialogModel,

From b34c8d9375f924f739b16524b294cd73eb069915 Mon Sep 17 00:00:00 2001
From: Frederik Christ Vestergaard <fcv@iterator-it.dk>
Date: Thu, 26 Sep 2024 13:49:12 +0200
Subject: [PATCH 3/3] Renamed long interface name

---
 src/app/admin/permission/permission.model.ts   | 2 +-
 src/app/admin/permission/permission.service.ts | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/app/admin/permission/permission.model.ts b/src/app/admin/permission/permission.model.ts
index 98d30b75..52e457a0 100644
--- a/src/app/admin/permission/permission.model.ts
+++ b/src/app/admin/permission/permission.model.ts
@@ -44,7 +44,7 @@ export type PermissionsSlimDto = Pick<
   "id" | "name" | "automaticallyAddNewApplications" | "organization"
 >;
 
-export interface PermissionGetManyWhereApplicationAdminResponse {
+export interface PermissionGetManySlimResponse {
   data: PermissionsSlimDto[];
   count: number;
 }
diff --git a/src/app/admin/permission/permission.service.ts b/src/app/admin/permission/permission.service.ts
index b4366d7d..4f46bffd 100644
--- a/src/app/admin/permission/permission.service.ts
+++ b/src/app/admin/permission/permission.service.ts
@@ -6,7 +6,7 @@ import {
   PermissionResponse,
   PermissionRequest,
   PermissionRequestAcceptUser,
-  PermissionGetManyWhereApplicationAdminResponse,
+  PermissionGetManySlimResponse,
 } from "./permission.model";
 import { map } from "rxjs/operators";
 import { UserMinimalService } from "../users/user-minimal.service";
@@ -72,6 +72,7 @@ export class PermissionService {
         offset: offset,
         orderOn: orderByColumn,
         sort: orderByDirection,
+        ignoreGlobalAdmin: ignoreGlobalAdmin,
       });
     }
   }
@@ -83,7 +84,7 @@ export class PermissionService {
     orderByDirection?: string,
     userId?: number,
     organisationId?: number
-  ): Observable<PermissionGetManyWhereApplicationAdminResponse> {
+  ): Observable<PermissionGetManySlimResponse> {
     if (userId || organisationId) {
       return this.restService.get(this.endpoint + this.applicationAdmin, {
         limit: limit,
@@ -99,7 +100,6 @@ export class PermissionService {
         offset: offset,
         orderOn: orderByColumn,
         sort: orderByDirection,
-        ignoreGlobalAdmin: ignoreGlobalAdmin,
       });
     }
   }