diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/forms/group-form/group-form.component.html b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/forms/group-form/group-form.component.html index 0b344ca..7fd4892 100644 --- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/forms/group-form/group-form.component.html +++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/forms/group-form/group-form.component.html @@ -1 +1,54 @@ -

group-form works!

+ + +
+
+
+ + Gruppenname + + @if (groupname.invalid) { + {{errorMessage()}} + } + +
+
+ + ECM FK ID + + @if (groupname.invalid) { + {{errorMessage()}} + } + +
+
+
+ +
+
+
+
+
+ Ad Sync +
+
+ Internal +
+
+ Active +
+
+ +
+
+
+
+ + + +
\ No newline at end of file diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/forms/group-form/group-form.component.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/forms/group-form/group-form.component.ts index f327820..49882b0 100644 --- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/forms/group-form/group-form.component.ts +++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/forms/group-form/group-form.component.ts @@ -1,12 +1,85 @@ -import { Component } from '@angular/core'; +import { Component, signal } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms'; +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 { MatCheckboxModule } from '@angular/material/checkbox'; +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/user.service'; +import { RefreshService } from '../../../services/refresh.service'; +import { GroupDirImportComponent } from "../../group-dir-import/group-dir-import.component"; +import { GroupService } from '../../../services/group.service'; +import Swal from 'sweetalert2'; @Component({ selector: 'app-group-form', standalone: true, - imports: [], + imports: [MatFormFieldModule, MatInputModule, FormsModule, ReactiveFormsModule, MatIconModule, MatButtonModule, MatCheckboxModule, CommonModule, MatTabsModule, UserGroupDirImportComponent, GroupDirImportComponent], templateUrl: './group-form.component.html', styleUrl: './group-form.component.scss' }) export class GroupFormComponent { + readonly groupname = new FormControl('', [Validators.required]); + readonly ecmFkId = new FormControl(1, [Validators.required]); + readonly adSync = new FormControl(false); + readonly internal = new FormControl(true); + readonly active = new FormControl(true); -} + errorMessage = signal(''); + + public readonly formFieldBSClass: string = "col d-flex justify-content-center mx-1 my-2" + public readonly buttonBSClass: string = "d-flex justify-content-center mx-1 my-2" + public readonly checkBoxBSClass: (colCount: number | undefined) => string = (colCount: number = 2) => `col-${colCount} d-flex justify-content-left mx-1 my-2` + + constructor(private uService: UserService, private rService: RefreshService, private gService: GroupService) { + merge( + this.groupname.statusChanges, this.groupname.valueChanges, + this.ecmFkId.statusChanges, this.ecmFkId.valueChanges) + .pipe(takeUntilDestroyed()) + .subscribe(() => this.updateErrorMessage()); + } + + + updateErrorMessage() { + if (this.groupname.hasError('required')) { + this.errorMessage.set('Wert eingeben'); + } else { + this.errorMessage.set(''); + } + } + + create() { + if (this.groupname.valid && this.ecmFkId.valid) { + this.gService.create({ + name: this.groupname.value!, + ecmFkId: (this.ecmFkId.value!), + adSync: this.adSync.value!, + internal: this.internal.value!, + active: this.active.value! + }).subscribe({ + next: () => { + this.delete() + this.rService.executeAll(); + Swal.fire({ + title: "Vorgang erfolgreich!", + text: "Gruppe erfolgreich erstellt!", + icon: "success" + }); + } + }) + } + } + + delete() { + this.groupname.setValue('') + this.ecmFkId.setValue(1) + this.adSync.setValue(false) + this.internal.setValue(true) + this.active.setValue(true) + } +} \ No newline at end of file diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/group/group.component.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/group/group.component.ts index 5e8c036..3d1df7f 100644 --- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/group/group.component.ts +++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/components/group/group.component.ts @@ -27,7 +27,6 @@ export class GroupComponent implements AfterViewInit { this.userTable.fetchDataByGroupId(this.sGroupId); }); this.creationService.component = GroupFormComponent - this.creationService.openDialog(); } @ViewChild("groupTable") groupTable!: GroupTableComponent; diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/models/user-management.api.models.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/models/user-management.api.models.ts index 6432d19..687d1f5 100644 --- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/models/user-management.api.models.ts +++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/models/user-management.api.models.ts @@ -17,6 +17,7 @@ export interface User { export interface Group { id?: number; + ecmFkId: number; name?: string; adSync?: boolean; internal?: boolean; diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/environments/environment.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/environments/environment.ts index ed31feb..90b0ef5 100644 --- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/environments/environment.ts +++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/environments/environment.ts @@ -41,7 +41,7 @@ export const env = { }, { header: "Kommentar", - field: "comment" + field: (group: any) => group.comment ?? "" }, { header: "AD Sync", diff --git a/DigitalData.UserManager.Application/DTOs/Group/GroupCreateDto.cs b/DigitalData.UserManager.Application/DTOs/Group/GroupCreateDto.cs index 028fc7e..07fd172 100644 --- a/DigitalData.UserManager.Application/DTOs/Group/GroupCreateDto.cs +++ b/DigitalData.UserManager.Application/DTOs/Group/GroupCreateDto.cs @@ -8,6 +8,7 @@ bool? Active, string? Comment, string? AddedWho, - string? ChangedWho + string? ChangedWho, + int EcmFkId ); } \ No newline at end of file diff --git a/DigitalData.UserManager.Application/Services/GroupService.cs b/DigitalData.UserManager.Application/Services/GroupService.cs index 7593b9e..3eb7c6a 100644 --- a/DigitalData.UserManager.Application/Services/GroupService.cs +++ b/DigitalData.UserManager.Application/Services/GroupService.cs @@ -17,6 +17,11 @@ namespace DigitalData.UserManager.Application.Services _localizer = localizer; } + public override Task> CreateAsync(GroupCreateDto createDto) + { + return base.CreateAsync(createDto); + } + public async Task> CreateAsync(DirectoryGroupDto adGroup) { var group = _mapper.MapOrThrow(adGroup); diff --git a/DigitalData.UserManager.Domain/Entities/Group.cs b/DigitalData.UserManager.Domain/Entities/Group.cs index 05538b1..bb09e28 100644 --- a/DigitalData.UserManager.Domain/Entities/Group.cs +++ b/DigitalData.UserManager.Domain/Entities/Group.cs @@ -43,7 +43,7 @@ namespace DigitalData.UserManager.Domain.Entities [Required] [Column("ECM_FK_ID")] [DefaultValue(0)] - public int? EcmFkId { get; set; } + public int EcmFkId { get; set; } #region IGNORED COLUMNS //[Column(TypeName = "datetime")]