feat: erweitere GroupUpdateFormComponent um Dialogintegration und Formularkontrollen

- Abhängigkeiten für Angular Material-Komponenten, Formularsteuerung und RxJS-Utilities hinzugefügt.
- MatDialogRef und MAT_DIALOG_DATA für die Dialoginteraktion innerhalb der Komponente injiziert.
- FormControl-Instanzen zur Verwaltung der Felder 'name' und 'comment' des Group-Modells integriert.
- Update-Funktionalität implementiert, die Änderungen über GroupService übermittelt und bei Erfolg ein Refresh auslöst.
- Löschfunktion mit Bestätigungsaufforderung über SweetAlert2 hinzugefügt, mit Verarbeitung erfolgreicher Löschungen und Fehlerfällen.
- Verbesserte Fehlerbehandlung mit aussagekräftigen Meldungen für eine bessere Benutzererfahrung.
This commit is contained in:
Developer 02 2024-10-31 12:38:29 +01:00
parent 1b5fa1f52c
commit b997ea4cce
2 changed files with 96 additions and 5 deletions

View File

@ -1,12 +1,103 @@
import { Component } from '@angular/core';
import { Component, inject, signal } from '@angular/core';
import { Group } from '../../../models/user-management.api.models';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { merge } from 'rxjs';
import { MatIconModule } from '@angular/material/icon';
import { MatButtonModule } from '@angular/material/button';
import { CommonModule } from '@angular/common';
import { MatTabsModule } from '@angular/material/tabs';
import { GroupService } from '../../../services/api/group.service';
import { RefreshService } from '../../../services/button/refresh.service';
import Swal from 'sweetalert2';
import { MatSelectModule } from '@angular/material/select';
import { env } from '../../../../environments/environment'
import { MatDividerModule } from '@angular/material/divider';
@Component({
selector: 'app-group-update-form',
standalone: true,
imports: [],
imports: [MatFormFieldModule, MatInputModule, FormsModule, ReactiveFormsModule, MatIconModule, MatButtonModule, CommonModule, MatTabsModule, MatSelectModule, MatDividerModule],
templateUrl: './group-update-form.component.html',
styleUrl: './group-update-form.component.scss'
})
export class GroupUpdateFormComponent {
}
readonly dialogRef: MatDialogRef<GroupUpdateFormComponent> = inject(MatDialogRef<GroupUpdateFormComponent>);
readonly group: Group = inject(MAT_DIALOG_DATA);
get allowedDateFormats(): Array<{ value: string, name: string }> {
return env.constants.date_formats;
}
get allowedLanguages(): Array<{ value: string, name: string }> {
return env.constants.languages;
}
readonly name = new FormControl(this.group.name);
readonly comment = new FormControl(this.group.comment);
mailErrorMessage = signal('');
errorMessage = signal('');
constructor(private uService: GroupService, private rService: RefreshService) {
}
update() {
this.group.name = this.name.value!;
this.group.comment = this.comment.value!;
this.uService.update(this.group).subscribe({
next: () => {
this.rService.executeAll();
},
error: err => {
console.error(err)
Swal.fire({
title: "Interner Dienstfehler",
text: "Bitte wenden Sie sich an das IT-Team, um den Fehler zu beheben.",
icon: "error"
});
}
})
}
delete() {
Swal.fire({
text: "Sind Sie sicher, dass Sie diesen Datensatz löschen wollen?",
icon: "question",
showDenyButton: true,
confirmButtonText: "Ja",
denyButtonText: `Nein`
}).then((result) => {
if (result.isConfirmed) {
if (this.group.id) {
this.uService.delete(this.group.id).subscribe({
next: () => {
this.rService.executeAll();
this.dialogRef.close();
},
error: err => {
Swal.fire({
title: "Interner Dienstfehler",
text: "Bitte wenden Sie sich an das IT-Team, um den Fehler zu beheben.",
icon: "error"
});
},
})
}
else
Swal.fire({
title: "Ein unerwarteter Fehler",
text: "Die Benutzer-ID existiert nicht (Nullwert).",
icon: "error"
});
}
});
}
}

View File

@ -10,7 +10,7 @@ import { MatIconModule } from '@angular/material/icon';
import { MatButtonModule } from '@angular/material/button';
import { CommonModule } from '@angular/common';
import { MatTabsModule } from '@angular/material/tabs';
import { UserGroupDirImportComponent } from "../../user-group-dir-import/user-group-dir-import.component";
import { UserService } from '../../../services/api/user.service';
import { RefreshService } from '../../../services/button/refresh.service';
import Swal from 'sweetalert2';
@ -21,7 +21,7 @@ import {MatDividerModule} from '@angular/material/divider';
@Component({
selector: 'app-user-update-form',
standalone: true,
imports: [MatFormFieldModule, MatInputModule, FormsModule, ReactiveFormsModule, MatIconModule, MatButtonModule, CommonModule, MatTabsModule, UserGroupDirImportComponent, MatSelectModule, MatDividerModule],
imports: [MatFormFieldModule, MatInputModule, FormsModule, ReactiveFormsModule, MatIconModule, MatButtonModule, CommonModule, MatTabsModule, MatSelectModule, MatDividerModule],
templateUrl: './user-update-form.component.html',
styleUrl: './user-update-form.component.scss'
})