diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html b/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html index 5ebfbc7da60ca54abbabb4135ce809216b274f88..94917d3b5187018d3596e7af879356cf30020cc8 100644 --- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html +++ b/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html @@ -44,7 +44,7 @@ <admin-primary-button (clickEmitter)="submit()" - [submitInProgress]="this.submitInProgress$ | async" + [submitInProgress]="submitInProgress$ | async" data-test-id="save-button" label="Speichern" ></admin-primary-button> diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts b/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts index c6d801bdd90f6f27101dd9d621c497083c57f6ac..772685d7ba660e3011d3eca4a98da5f836df1d88 100644 --- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts +++ b/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts @@ -13,7 +13,7 @@ import { Postfach, PostfachResource } from '../../postfach.model'; import { PostfachService } from '../../postfach.service'; @Injectable() -export class PostfachFormService extends AbstractFormService { +export class PostfachFormService extends AbstractFormService<PostfachResource> { public static readonly ASBSENDER_GROUP: string = 'absender'; public static readonly NAME_FIELD: string = 'name'; public static readonly ANSCHRIFT_FIELD: string = 'anschrift'; diff --git a/alfa-client/libs/admin-settings/src/lib/user/user.repository.service.ts b/alfa-client/libs/admin-settings/src/lib/user/user.repository.service.ts index 293806db24c520afa4b0907811092ee0bf023979..4ec7da80dfeaae3e0f1acf6f75f1b864c592ea79 100644 --- a/alfa-client/libs/admin-settings/src/lib/user/user.repository.service.ts +++ b/alfa-client/libs/admin-settings/src/lib/user/user.repository.service.ts @@ -33,7 +33,7 @@ export class UserRepository { } public findOrganisationseinheitItems(): Observable<Organisationseinheit[]> { - return from(this.kcAdminClient.groups.find({ briefRepresentation: false })).pipe( + return from(this.findGroups()).pipe( map((reps: GroupRepresentation[]) => reps.map((rep: GroupRepresentation) => this.mapGroupRepresentationToOrganisationseinheit(rep), @@ -42,6 +42,10 @@ export class UserRepository { ); } + private findGroups(): Promise<GroupRepresentation[]> { + return this.kcAdminClient.groups.find({ briefRepresentation: false }); + } + mapGroupRepresentationToOrganisationseinheit(group: GroupRepresentation): Organisationseinheit { return { id: group.id, @@ -51,27 +55,30 @@ export class UserRepository { } public saveOrganisationseinheit(organisationseinheit: Organisationseinheit): Observable<void> { - return from( - this.kcAdminClient.groups.update( - { id: organisationseinheit.id }, - { - name: organisationseinheit.name, - attributes: { organisationseinheitId: organisationseinheit.organisationseinheitIds }, - }, - ), - ).pipe(this.rethrowMappedGroupsError()); + return from(this.updateGroup(organisationseinheit)).pipe(this.rethrowMappedGroupsError()); + } + + private updateGroup(organisationseinheit: Organisationseinheit): Promise<void> { + return this.kcAdminClient.groups.update( + { id: organisationseinheit.id }, + this.mapToGroupRepresentation(organisationseinheit), + ); + } + + private mapToGroupRepresentation( + organisationseinheit: Organisationseinheit, + ): GroupRepresentation { + return { + name: organisationseinheit.name, + attributes: { organisationseinheitId: organisationseinheit.organisationseinheitIds }, + }; } public createOrganisationseinheit( name: string, organisationseinheitIds: string[], ): Observable<Organisationseinheit> { - return from( - this.kcAdminClient.groups.create({ - name, - attributes: { organisationseinheitId: organisationseinheitIds }, - }), - ).pipe( + return from(this.createGroup(name, organisationseinheitIds)).pipe( map( ({ id }): Organisationseinheit => ({ id, @@ -83,8 +90,17 @@ export class UserRepository { ); } + private createGroup(name: string, organisationseinheitIds: string[]) { + return this.kcAdminClient.groups.create({ + name, + attributes: { organisationseinheitId: organisationseinheitIds }, + }); + } + rethrowMappedGroupsError<T>(): OperatorFunction<T, T> { - return catchError((err) => throwError(() => this.mapCreateGroupsNetworkError(err))); + return catchError((err: NetworkError) => + throwError(() => this.mapCreateGroupsNetworkError(err)), + ); } mapCreateGroupsNetworkError(error: NetworkError): OrganisationseinheitError { diff --git a/alfa-client/libs/admin-settings/src/lib/user/user.service.ts b/alfa-client/libs/admin-settings/src/lib/user/user.service.ts index 9ec08995ed49a91e48c044690c9770f121fcf9a5..6c5df38c55a6e4cdfcb3c5579ccb3924f4f52307 100644 --- a/alfa-client/libs/admin-settings/src/lib/user/user.service.ts +++ b/alfa-client/libs/admin-settings/src/lib/user/user.service.ts @@ -53,14 +53,6 @@ export class UserService { ); } - private removeOrganisationseinheit(id: string): void { - this.setOrganisationseinheit( - this.organisationseinheitState$.value.organisationseinheitItems.filter( - (organisationseinheit: Organisationseinheit) => organisationseinheit.id !== id, - ), - ); - } - setLoadingUntilFirst<T>( action: Observable<T>, tapFunction: (value: T) => void, @@ -76,6 +68,14 @@ export class UserService { ); } + private removeOrganisationseinheit(id: string): void { + this.setOrganisationseinheit( + this.organisationseinheitState$.value.organisationseinheitItems.filter( + (organisationseinheit: Organisationseinheit) => organisationseinheit.id !== id, + ), + ); + } + private addOrganisationseinheit(organisationseinheit: Organisationseinheit): void { this.setOrganisationseinheit([ ...this.organisationseinheitState$.value.organisationseinheitItems, @@ -83,21 +83,14 @@ export class UserService { ]); } - setOrganisationseinheit(organisationseinheitItems: Organisationseinheit[]): void { - this.organisationseinheitState$.next({ - ...this.organisationseinheitState$.value, - organisationseinheitItems: this.sortedOrganisationseinheitItems(organisationseinheitItems), - }); - } - - private sortedOrganisationseinheitItems( - organisationseinheitItems: Organisationseinheit[], - ): Organisationseinheit[] { - return [...organisationseinheitItems].sort((a, b) => a.name.localeCompare(b.name)); + public getOrganisationseinheitItems(): Observable<Organisationseinheit[]> { + return this.getOrganisationseinheitState().pipe( + map((state: OrganisationseinheitState) => state.organisationseinheitItems), + ); } public getOrganisationseinheitState(): Observable<OrganisationseinheitState> { - return this.organisationseinheitState$.pipe(tap(() => this.updateIfRequired())); + return this.organisationseinheitState$.asObservable().pipe(tap(() => this.updateIfRequired())); } updateIfRequired(): void { @@ -121,6 +114,13 @@ export class UserService { ); } + setLoading(loading: boolean = true): void { + this.organisationseinheitState$.next({ + ...this.organisationseinheitState$.value, + loading, + }); + } + setUpdateRequired(updateRequired: boolean = true) { this.organisationseinheitState$.next({ ...this.organisationseinheitState$.value, @@ -128,16 +128,16 @@ export class UserService { }); } - setLoading(loading: boolean = true): void { + setOrganisationseinheit(organisationseinheitItems: Organisationseinheit[]): void { this.organisationseinheitState$.next({ ...this.organisationseinheitState$.value, - loading, + organisationseinheitItems: this.sortedOrganisationseinheitItems(organisationseinheitItems), }); } - public getOrganisationseinheitItems(): Observable<Organisationseinheit[]> { - return this.getOrganisationseinheitState().pipe( - map((state: OrganisationseinheitState) => state.organisationseinheitItems), - ); + private sortedOrganisationseinheitItems( + organisationseinheitItems: Organisationseinheit[], + ): Organisationseinheit[] { + return [...organisationseinheitItems].sort((a, b) => a.name.localeCompare(b.name)); } } diff --git a/alfa-client/libs/admin-settings/test/admin-settings.ts b/alfa-client/libs/admin-settings/test/admin-settings.ts index d81dbd8109f79ac5eff68526de2aced072605d05..34d310632e95136a912ecf6d674153c1012770a8 100644 --- a/alfa-client/libs/admin-settings/test/admin-settings.ts +++ b/alfa-client/libs/admin-settings/test/admin-settings.ts @@ -6,16 +6,12 @@ import { SettingItemResource, SettingListResource } from '../src/lib/admin-setti export function createSettingsListResource( settingsItems: SettingItemResource[], ): SettingListResource { - return toResource({}, [], { - settings: settingsItems, - }); + return toResource({}, [], { settings: settingsItems }); } export function createFilledSettingsListResource( resources: Resource[], linkRelations: string[] = [], ): SettingListResource { - return toResource({}, [...linkRelations], { - [SettingListLinkRel.LIST]: resources, - }); + return toResource({}, [...linkRelations], { [SettingListLinkRel.LIST]: resources }); } diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts b/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts index 550ff12cf4a72eb21edb4a57c8abd8295df8ab3d..fd6d94eb2ad3210ee4907e3b9caa6142d422cfdb 100644 --- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts +++ b/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts @@ -21,16 +21,16 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Injectable } from '@angular/core'; -import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; import { CommandResource } from '@alfa-client/command-shared'; import { ForwardingService } from '@alfa-client/forwarding-shared'; import { AbstractFormService, StateResource } from '@alfa-client/tech-shared'; import { VorgangResource } from '@alfa-client/vorgang-shared'; +import { Injectable } from '@angular/core'; +import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; import { Observable } from 'rxjs'; @Injectable() -export class VorgangForwardFormService extends AbstractFormService { +export class VorgangForwardFormService extends AbstractFormService<CommandResource> { static readonly FIELD_PATH_PREFIX = 'command.redirectRequest'; static readonly FIELD_EMAIL = 'email'; diff --git a/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar.formservice.ts b/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar.formservice.ts index c7c3d53062cf74f0100f7a99a10cc06ee5f8b4fd..da8f2d7ca02e938c9bbcf2b60d55f1fdc21fc9b0 100644 --- a/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar.formservice.ts +++ b/alfa-client/libs/kommentar/src/lib/kommentar-list-in-vorgang-container/kommentar-form/kommentar.formservice.ts @@ -21,6 +21,8 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { KommentarResource, KommentarService } from '@alfa-client/kommentar-shared'; +import { AbstractFormService, StateResource } from '@alfa-client/tech-shared'; import { Injectable } from '@angular/core'; import { UntypedFormArray, @@ -28,12 +30,10 @@ import { UntypedFormControl, UntypedFormGroup, } from '@angular/forms'; -import { KommentarService } from '@alfa-client/kommentar-shared'; -import { AbstractFormService, StateResource } from '@alfa-client/tech-shared'; import { Observable } from 'rxjs'; @Injectable() -export class KommentarFormService extends AbstractFormService { +export class KommentarFormService extends AbstractFormService<KommentarResource> { static readonly TEXT = 'text'; static readonly FIELD_PATH_PREFIX = 'kommentar'; diff --git a/alfa-client/libs/postfach/src/lib/postfach-mail-form/postfach-mail.formservice.ts b/alfa-client/libs/postfach/src/lib/postfach-mail-form/postfach-mail.formservice.ts index 3e7de900cdaa45e7ebfbbdc66994fb9b874ae594..fbf690c4091a022ba6cfaa57a5e2c6913f128f82 100644 --- a/alfa-client/libs/postfach/src/lib/postfach-mail-form/postfach-mail.formservice.ts +++ b/alfa-client/libs/postfach/src/lib/postfach-mail-form/postfach-mail.formservice.ts @@ -21,6 +21,9 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { CommandResource } from '@alfa-client/command-shared'; +import { PostfachService } from '@alfa-client/postfach-shared'; +import { AbstractFormService, StateResource } from '@alfa-client/tech-shared'; import { Injectable } from '@angular/core'; import { UntypedFormArray, @@ -28,14 +31,11 @@ import { UntypedFormControl, UntypedFormGroup, } from '@angular/forms'; -import { CommandResource } from '@alfa-client/command-shared'; -import { PostfachService } from '@alfa-client/postfach-shared'; -import { AbstractFormService, StateResource } from '@alfa-client/tech-shared'; import { ReplyOption } from 'libs/postfach-shared/src/lib/postfach.model'; import { Observable } from 'rxjs'; @Injectable() -export class PostfachMailFormservice extends AbstractFormService { +export class PostfachMailFormservice extends AbstractFormService<CommandResource> { static readonly FIELD_PATH_PREFIX = 'command.body'; static readonly FIELD_SUBJECT = 'subject'; diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts index deaa71132a606f656d62efd87deded4ba3e71f2b..1a08b94708151af6110471adb6da3728d84f5dc2 100644 --- a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts +++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.ts @@ -78,14 +78,14 @@ export function toResourceUri(resource: Resource, linkRel?: string): string { return encodeUrlForEmbedding(url); } -export function doOnValidStateResource( - stateResource: StateResource<Resource>, +export function doOnValidStateResource<T>( + stateResource: StateResource<T>, actionOnValid: () => void, ): void { - if (isValidStateResource(stateResource)) actionOnValid(); + if (isValidStateResource<T>(stateResource)) actionOnValid(); } -export function isValidStateResource(stateResource: StateResource<Resource>): boolean { +export function isValidStateResource<T>(stateResource: StateResource<T>): boolean { return stateResource.loaded && isNotNull(stateResource.resource); } @@ -107,13 +107,11 @@ export function notHasLink<T extends Resource>(resource: T, linkRel: string): bo return !hasLink(resource, linkRel); } -export function containsLoading(stateResources: StateResource<Resource>[]): boolean { +export function containsLoading<T>(stateResources: StateResource<T>[]): boolean { return stateResources.findIndex((stateResources) => stateResources.loading) > -1; } -export function getSuccessfullyLoaded<T extends Resource>( - stateResources: StateResource<T>[], -): StateResource<T>[] { +export function getSuccessfullyLoaded<T>(stateResources: StateResource<T>[]): StateResource<T>[] { return stateResources.filter( (stateResource) => isLoaded(stateResource) && !hasError(stateResource), ); diff --git a/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.ts b/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.ts index 753c7422643ab606489987684c13e1ee097ae31b..2cc706d3f77316963c0a261f6be6ed7a762809ce 100644 --- a/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.ts +++ b/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.ts @@ -23,7 +23,6 @@ */ import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; -import { Resource } from '@ngxp/rest'; import { isNil } from 'lodash-es'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; @@ -35,7 +34,7 @@ import { setIssueValidationError, } from '../validation/tech.validation.util'; -export abstract class AbstractFormService { +export abstract class AbstractFormService<T> { form: UntypedFormGroup; pathPrefix: string; source: any; @@ -48,13 +47,13 @@ export abstract class AbstractFormService { protected abstract initForm(): UntypedFormGroup; - public submit(): Observable<StateResource<Resource | HttpError>> { + public submit(): Observable<StateResource<T | HttpError>> { return this.doSubmit().pipe(map((result) => this.handleResponse(result))); } - protected abstract doSubmit(): Observable<StateResource<Resource | HttpError>>; + protected abstract doSubmit(): Observable<StateResource<T | HttpError>>; - handleResponse(result: StateResource<Resource | HttpError>): StateResource<Resource | HttpError> { + handleResponse(result: StateResource<T | HttpError>): StateResource<T | HttpError> { if (result.loading) return result; if (hasError(result)) { this.handleError(result.error); diff --git a/alfa-client/libs/user-profile/src/lib/user-profile-search-container/user-profile-search/user-profile.search.formservice.ts b/alfa-client/libs/user-profile/src/lib/user-profile-search-container/user-profile-search/user-profile.search.formservice.ts index 4ec86ff50492e343fb1fe25fe2936d8cab1e8e9a..b42472be592d067f5f5da2352e137479e08b62fd 100644 --- a/alfa-client/libs/user-profile/src/lib/user-profile-search-container/user-profile-search/user-profile.search.formservice.ts +++ b/alfa-client/libs/user-profile/src/lib/user-profile-search-container/user-profile-search/user-profile.search.formservice.ts @@ -21,15 +21,18 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Injectable, OnDestroy } from '@angular/core'; -import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; import { AbstractFormService, StateResource } from '@alfa-client/tech-shared'; import { UserProfileListResource, UserProfileService } from '@alfa-client/user-profile-shared'; +import { Injectable, OnDestroy } from '@angular/core'; +import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; import { isNil } from 'lodash-es'; import { Observable, Subscription } from 'rxjs'; @Injectable() -export class UserProfileSearchFormService extends AbstractFormService implements OnDestroy { +export class UserProfileSearchFormService + extends AbstractFormService<UserProfileListResource> + implements OnDestroy +{ public static readonly SEARCH_FIELD = 'searchBy'; private FIELD_PATH: string = 'only.fe'; diff --git a/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.formservice.ts b/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.formservice.ts index ac19f5e03887484506031e555feae843efd60efa..2f03fe9e247a89ffc606303f72611e69ce2052b0 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.formservice.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.formservice.ts @@ -1,13 +1,13 @@ +import { CommandResource } from '@alfa-client/command-shared'; +import { AbstractFormService, StateResource } from '@alfa-client/tech-shared'; +import { VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { Injectable } from '@angular/core'; import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; -import { VorgangService, VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { isEmpty } from 'lodash-es'; -import { AbstractFormService, StateResource } from '@alfa-client/tech-shared'; import { Observable } from 'rxjs'; -import { Resource } from '@ngxp/rest'; @Injectable() -export class AktenzeichenEditDialogFormservice extends AbstractFormService { +export class AktenzeichenEditDialogFormservice extends AbstractFormService<CommandResource> { static readonly AKTENZEICHEN_FIELD = 'aktenzeichen'; private vorgang: VorgangWithEingangResource; @@ -25,7 +25,7 @@ export class AktenzeichenEditDialogFormservice extends AbstractFormService { }); } - protected doSubmit(): Observable<StateResource<Resource>> { + protected doSubmit(): Observable<StateResource<CommandResource>> { return this.vorgangService.setAktenzeichen(this.vorgang, this.getValue()); } diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts index f7d6ea59813fa20881d5cb9d019aac71f81e6fef..faddd22d4ffcde0e97fc85ef8da5f52dadc52a60 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts @@ -7,7 +7,7 @@ import { DocumentResource, } from '@alfa-client/bescheid-shared'; import { BinaryFileResource } from '@alfa-client/binary-file-shared'; -import { tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared'; +import { CommandResource, tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared'; import { AbstractFormService, EMPTY_STRING, @@ -42,7 +42,10 @@ import { } from 'rxjs'; @Injectable() -export class BescheidenFormService extends AbstractFormService implements OnDestroy { +export class BescheidenFormService + extends AbstractFormService<CommandResource> + implements OnDestroy +{ static readonly FIELD_BESCHIEDEN_AM = 'beschiedenAm'; static readonly FIELD_BEWILLIGT = 'bewilligt'; static readonly FIELD_BESCHEID_DOCUMENT = 'bescheidDocument'; @@ -181,7 +184,7 @@ export class BescheidenFormService extends AbstractFormService implements OnDest return BescheidenFormService.FIELD_PATH_PREFIX; } - protected doSubmit(): Observable<StateResource<Resource | HttpError>> { + protected doSubmit(): Observable<StateResource<CommandResource | HttpError>> { if (this.isPatch() || this.bescheidService.existsBescheidDraft()) { return this.bescheidService.updateBescheid(this.getValue()); } else { diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice.ts index e408b02599759b92ad1a6e42c505b3e0110133ae..ca24c8f26cc4116f46c13f5e96b0ba324244207f 100644 --- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice.ts +++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice.ts @@ -21,6 +21,17 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { + AbstractFormService, + StateResource, + createFutureDate, + formatForDatabase, +} from '@alfa-client/tech-shared'; +import { + Wiedervorlage, + WiedervorlageResource, + WiedervorlageService, +} from '@alfa-client/wiedervorlage-shared'; import { Injectable } from '@angular/core'; import { UntypedFormArray, @@ -28,17 +39,10 @@ import { UntypedFormControl, UntypedFormGroup, } from '@angular/forms'; -import { - AbstractFormService, - createFutureDate, - formatForDatabase, - StateResource, -} from '@alfa-client/tech-shared'; -import { Wiedervorlage, WiedervorlageService } from '@alfa-client/wiedervorlage-shared'; import { Observable } from 'rxjs'; @Injectable() -export class WiedervorlageFormService extends AbstractFormService { +export class WiedervorlageFormService extends AbstractFormService<WiedervorlageResource> { static readonly FIELD_BETREFF = 'betreff'; static readonly FIELD_BESCHREIBUNG = 'beschreibung'; static readonly FIELD_FRIST = 'frist';