Skip to content

Commit bebebec

Browse files
committed
Added update method for applications, and some small cleanup
1 parent d8fc16d commit bebebec

File tree

5 files changed

+39
-42
lines changed

5 files changed

+39
-42
lines changed

src/app/applications/application-detail/application-detail.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ export class ApplicationDetailComponent implements OnInit, OnDestroy, AfterViewI
8888
};
8989

9090
this.translate.get("APPLICATION.CHANGE-ORGANIZATION.TITLE").subscribe(translation => {
91+
if (!this.meService.hasGlobalAdmin()) return;
92+
9193
const changeOrganizationButton = {
9294
id: this.id,
9395
label: translation,

src/app/applications/application-detail/change-organization-dialog/change-organization-dialog.component.html

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ <h1 mat-dialog-title>{{ "APPLICATION.CHANGE-ORGANIZATION.TITLE" | translate }}</
1111
[compareWith]="compare"
1212
(selectionChange)="onOrganizationChange()"
1313
>
14-
<mat-option *ngFor="let organization of filteredOrganizationsMulti | async" [value]="organization.id">
14+
<mat-option *ngFor="let organization of filteredOrganizations | async" [value]="organization.id">
1515
{{ organization.name }}
1616
</mat-option>
1717
</mat-select>
@@ -27,15 +27,14 @@ <h1 mat-dialog-title>{{ "APPLICATION.CHANGE-ORGANIZATION.TITLE" | translate }}</
2727
[(value)]="application.permissionIds"
2828
[compareWith]="compare"
2929
>
30-
<app-mat-select-search [formControl]="permissionMultiFilterCtrl"></app-mat-select-search>
3130
<mat-option *ngFor="let permission of filteredPermissionsMulti | async" [value]="permission.id">
3231
{{ permission.name }}
3332
</mat-option>
3433
</mat-select>
3534
<mat-hint>{{ "APPLICATION.CHANGE-ORGANIZATION.USER-GROUP-AUTO-SELECT" | translate }}</mat-hint>
3635
</div>
3736
<div mat-dialog-actions class="d-flex flex-row">
38-
<button mat-dialog-close [mat-dialog-close]="true" class="btn btn-primary">
37+
<button (click)="onSubmit()" class="btn btn-primary">
3938
{{ "GEN.SAVE" | translate }}
4039
</button>
4140
<button mat-dialog-close [mat-dialog-close]="false" class="btn btn-secondary ml-2">
Lines changed: 28 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import { Component, Inject, OnInit } from "@angular/core";
22
import { UntypedFormControl } from "@angular/forms";
3-
import { MAT_DIALOG_DATA } from "@angular/material/dialog";
3+
import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material/dialog";
44
import { Organisation } from "@app/admin/organisation/organisation.model";
55
import { OrganisationService } from "@app/admin/organisation/organisation.service";
66
import { PermissionResponse } from "@app/admin/permission/permission.model";
77
import { PermissionService } from "@app/admin/permission/permission.service";
88
import { Application, UpdateApplicationOrganization } from "@applications/application.model";
9+
import { ApplicationService } from "@applications/application.service";
910
import { TranslateService } from "@ngx-translate/core";
1011
import { ApplicationDialogModel } from "@shared/models/dialog.model";
11-
import { MeService } from "@shared/services/me.service";
12-
import { RestService } from "@shared/services/rest.service";
1312
import { SharedVariableService } from "@shared/shared-variable/shared-variable.service";
1413
import { ReplaySubject, Subscription } from "rxjs";
1514

@@ -23,24 +22,22 @@ export class ChangeOrganizationDialogComponent implements OnInit {
2322
public permissionsSubscription: Subscription;
2423
public organizationsSubscription: Subscription;
2524
public permissionMultiCtrl: UntypedFormControl = new UntypedFormControl();
26-
public permissionMultiFilterCtrl: UntypedFormControl = new UntypedFormControl();
2725
public application: UpdateApplicationOrganization;
2826
public permissions: PermissionResponse[];
2927
public organizations: Organisation[];
3028
public filteredPermissionsMulti: ReplaySubject<PermissionResponse[]> = new ReplaySubject<PermissionResponse[]>(1);
31-
public filteredOrganizationsMulti: ReplaySubject<Organisation[]> = new ReplaySubject<Organisation[]>(1);
29+
public filteredOrganizations: ReplaySubject<Organisation[]> = new ReplaySubject<Organisation[]>(1);
3230

3331
constructor(
34-
private restService: RestService,
32+
private applicationService: ApplicationService,
3533
public translate: TranslateService,
3634
private permissionService: PermissionService,
3735
private organizationService: OrganisationService,
3836
private sharedVariableService: SharedVariableService,
39-
private meService: MeService,
37+
private dialog: MatDialogRef<ChangeOrganizationDialogComponent>,
4038
@Inject(MAT_DIALOG_DATA) public dialogModel: ApplicationDialogModel
4139
) {
4240
this.application = {
43-
applicationId: this.dialogModel.id,
4441
organizationId: this.dialogModel.organizationId ?? this.sharedVariableService.getSelectedOrganisationId(),
4542
permissionIds: [],
4643
};
@@ -56,45 +53,31 @@ export class ChangeOrganizationDialogComponent implements OnInit {
5653
this.getPermissions();
5754
}
5855

59-
public compare(o1: any, o2: any): boolean {
60-
return o1 === o2;
61-
}
62-
6356
getApplication(id: number): void {
64-
this.applicationsSubscription = this.restService
65-
.get("application", {}, id)
66-
.subscribe((application: Application) => {
67-
this.application.permissionIds = application.permissionIds;
68-
this.permissionMultiCtrl.setValue(this.application.permissionIds);
69-
});
57+
this.applicationsSubscription = this.applicationService.getApplication(id).subscribe((application: Application) => {
58+
this.application.permissionIds = application.permissionIds;
59+
this.permissionMultiCtrl.setValue(this.application.permissionIds);
60+
});
7061
}
7162

7263
getOrganizations() {
7364
this.organizationsSubscription = this.organizationService.getMinimal().subscribe(res => {
7465
this.organizations = res.data;
75-
this.filteredOrganizationsMulti.next(this.organizations.slice());
66+
this.filteredOrganizations.next(this.organizations.slice());
7667
});
7768
}
7869

7970
getPermissions() {
80-
this.permissionsSubscription = this.permissionService
81-
.getPermissions(
82-
1000,
83-
0,
84-
undefined,
85-
undefined,
86-
this.meService.hasGlobalAdmin() ? undefined : this.sharedVariableService.getUserInfo().user.id
87-
)
88-
.subscribe(res => {
89-
this.permissions = res.data.sort((a, b) => a.name.localeCompare(b.name, "da-DK", { numeric: true }));
90-
this.filteredPermissionsMulti.next(
91-
this.permissions.filter(p => p?.organization?.id === this?.application?.organizationId)
92-
);
93-
if (!this.dialogModel.id) {
94-
this.application.permissionIds = [this.permissions[0].id];
95-
this.permissionMultiCtrl.setValue(this.application.permissionIds);
96-
}
97-
});
71+
this.permissionsSubscription = this.permissionService.getPermissions(1000, 0).subscribe(res => {
72+
this.permissions = res.data.sort((a, b) => a.name.localeCompare(b.name, "da-DK", { numeric: true }));
73+
this.filteredPermissionsMulti.next(
74+
this.permissions.filter(p => p?.organization?.id === this?.application?.organizationId)
75+
);
76+
});
77+
}
78+
79+
public compare(o1: any, o2: any): boolean {
80+
return o1 === o2;
9881
}
9982

10083
onOrganizationChange() {
@@ -107,4 +90,12 @@ export class ChangeOrganizationDialogComponent implements OnInit {
10790
);
10891
});
10992
}
93+
94+
onSubmit() {
95+
this.applicationsSubscription = this.applicationService
96+
.updateApplicationOrganization(this.application, this.dialogModel.id)
97+
.subscribe(() => {
98+
this.dialog.close();
99+
});
100+
}
110101
}

src/app/applications/application.model.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ export interface ApplicationData {
6363
}
6464

6565
export class UpdateApplicationOrganization {
66-
public applicationId: number;
6766
public organizationId: number;
6867
public permissionIds: number[];
6968
}

src/app/applications/application.service.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Injectable } from "@angular/core";
2-
import { Application, ApplicationData } from "@applications/application.model";
2+
import { Application, ApplicationData, UpdateApplicationOrganization } from "@applications/application.model";
33
import { RestService } from "../shared/services/rest.service";
44
import { Observable } from "rxjs";
55
import { map } from "rxjs/operators";
@@ -76,4 +76,10 @@ export class ApplicationService {
7676
deleteApplication(id: number) {
7777
return this.restService.delete("application", id);
7878
}
79+
80+
updateApplicationOrganization(body: UpdateApplicationOrganization, id: number): Observable<Application> {
81+
return this.restService.put("application/updateApplicationOrganization", body, id, {
82+
observe: "response",
83+
});
84+
}
7985
}

0 commit comments

Comments
 (0)