diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.spec.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.spec.ts index 2125d0b8e171796f264901d4b22e40c269d0cc7d..86c5f0caee0f27416b51343699e465ec2eb4ef47 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.spec.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.spec.ts @@ -415,41 +415,41 @@ describe('BescheidFormService', () => { }); describe('patchValues', () => { + const sendBy: BescheidSendBy = BescheidSendBy.NACHRICHT; let bescheidResource: BescheidResource; let patch: jest.Mock; beforeEach(() => { bescheidResource = createBescheidResource(); patch = service.patch = jest.fn(); + service._evaluateSendBy = jest.fn().mockReturnValue(sendBy); }); it('should patch', () => { + const sendBy: BescheidSendBy = BescheidSendBy.NACHRICHT; service.patchValues(bescheidResource); expect(patch).toHaveBeenCalledWith({ [BescheidFormService.FIELD_BESCHIEDEN_AM]: bescheidResource.beschiedenAm, [BescheidFormService.FIELD_BEWILLIGT]: String(bescheidResource.bewilligt), [BescheidFormService.FIELD_BESCHEID_DOCUMENT]: null, - [BescheidFormService.FIELD_SEND_BY]: String(bescheidResource.sendBy), + [BescheidFormService.FIELD_SEND_BY]: String(sendBy), [BescheidFormService.FIELD_NACHRICHT_SUBJECT]: bescheidResource.nachrichtSubject, [BescheidFormService.FIELD_NACHRICHT_TEXT]: bescheidResource.nachrichtText, }); }); - it('should patch sendBy to default', () => { - service.patchValues({ - ...bescheidResource, - sendBy: undefined, - }); + it('should set send by', () => { + const sendBy: BescheidSendBy = BescheidSendBy.NACHRICHT; + service.patchValues(bescheidResource); - expect(patch).toHaveBeenCalledWith({ - [BescheidFormService.FIELD_BESCHIEDEN_AM]: bescheidResource.beschiedenAm, - [BescheidFormService.FIELD_BEWILLIGT]: String(bescheidResource.bewilligt), - [BescheidFormService.FIELD_SEND_BY]: BescheidSendBy.NACHRICHT, - [BescheidFormService.FIELD_BESCHEID_DOCUMENT]: null, - [BescheidFormService.FIELD_NACHRICHT_SUBJECT]: bescheidResource.nachrichtSubject, - [BescheidFormService.FIELD_NACHRICHT_TEXT]: bescheidResource.nachrichtText, - }); + expect(bescheidService.setSendBy).toHaveBeenCalledWith(sendBy); + }); + + it('should evaluate send by', () => { + service.patchValues(bescheidResource); + + expect(service._evaluateSendBy).toHaveBeenCalledWith(bescheidResource); }); it('should patch bescheid document uri', () => { @@ -465,7 +465,7 @@ describe('BescheidFormService', () => { expect(patch).toHaveBeenCalledWith({ [BescheidFormService.FIELD_BESCHIEDEN_AM]: bescheidResource.beschiedenAm, [BescheidFormService.FIELD_BEWILLIGT]: String(bescheidResource.bewilligt), - [BescheidFormService.FIELD_SEND_BY]: BescheidSendBy.NACHRICHT, + [BescheidFormService.FIELD_SEND_BY]: sendBy, [BescheidFormService.FIELD_BESCHEID_DOCUMENT]: bescheidDocumentUri, [BescheidFormService.FIELD_NACHRICHT_SUBJECT]: bescheidResource.nachrichtSubject, [BescheidFormService.FIELD_NACHRICHT_TEXT]: bescheidResource.nachrichtText, @@ -479,6 +479,44 @@ describe('BescheidFormService', () => { }); }); + describe('_evaluateSendBy', () => { + it('should return MANUAL on MANUAL', () => { + const sendBy: BescheidSendBy = service._evaluateSendBy({ + ...createBescheidResource([BescheidLinkRel.BESCHEIDEN]), + sendBy: BescheidSendBy.MANUAL, + }); + + expect(sendBy).toEqual(BescheidSendBy.MANUAL); + }); + + it('should return MANUAL on NACHRICHT and missing link', () => { + const sendBy: BescheidSendBy = service._evaluateSendBy({ + ...createBescheidResource([BescheidLinkRel.BESCHEIDEN]), + sendBy: BescheidSendBy.NACHRICHT, + }); + + expect(sendBy).toEqual(BescheidSendBy.MANUAL); + }); + + it('should return NACHRICHT', () => { + const sendBy: BescheidSendBy = service._evaluateSendBy({ + ...createBescheidResource([BescheidLinkRel.BESCHEIDEN_UND_SENDEN]), + sendBy: BescheidSendBy.NACHRICHT, + }); + + expect(sendBy).toEqual(BescheidSendBy.NACHRICHT); + }); + + it('should return MANUAL', () => { + const sendBy: BescheidSendBy = service._evaluateSendBy({ + ...createBescheidResource([BescheidLinkRel.BESCHEIDEN_UND_SENDEN]), + sendBy: BescheidSendBy.MANUAL, + }); + + expect(sendBy).toEqual(BescheidSendBy.MANUAL); + }); + }); + describe('getBescheidFormValueChanges', () => { const bescheid: Bescheid = createBescheid(); diff --git a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts index 4e650ff9f6660e2e987ee53979858474096cafe2..eb96bb9d90af5f6729a3f251ea01bc2e91c58eb7 100644 --- a/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts +++ b/alfa-client/libs/bescheid/src/lib/bescheid-wizard-container/bescheid.formservice.ts @@ -21,21 +21,14 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { - Bescheid, - BescheidLinkRel, - BescheidResource, - BescheidSendBy, - BescheidWizardStep, - Wizard, -} from '@alfa-client/bescheid-shared'; +import { Bescheid, BescheidLinkRel, BescheidResource, BescheidSendBy, BescheidWizardStep, Wizard, } from '@alfa-client/bescheid-shared'; import { CommandResource, switchMapCommandSuccessfullyDone } from '@alfa-client/command-shared'; import { AbstractFormService, convertToBoolean, formatForDatabase, isNotNil, StateResource } from '@alfa-client/tech-shared'; import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared'; import { Injectable } from '@angular/core'; import { FormControl, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; import { getUrl, hasLink, ResourceUri } from '@ngxp/rest'; -import { isNil, isUndefined } from 'lodash-es'; +import { isNil } from 'lodash-es'; import { first, Observable, startWith, switchMap } from 'rxjs'; import { BescheidService2 } from '../../../../bescheid-shared/src/lib/bescheid2.service'; @@ -118,12 +111,13 @@ export class BescheidFormService extends AbstractFormService<CommandResource> { public patchValues(bescheidResource: BescheidResource): void { this.bescheidResource = bescheidResource; const bescheidDocumentUri: ResourceUri = this.getBescheidDocumentUri(bescheidResource); + const sendBy: BescheidSendBy = this._evaluateSendBy(bescheidResource); + this.bescheidService.setSendBy(sendBy); this.patch({ [BescheidFormService.FIELD_BESCHIEDEN_AM]: bescheidResource.beschiedenAm, [BescheidFormService.FIELD_BEWILLIGT]: String(bescheidResource.bewilligt), [BescheidFormService.FIELD_BESCHEID_DOCUMENT]: bescheidDocumentUri, - [BescheidFormService.FIELD_SEND_BY]: - isUndefined(bescheidResource.sendBy) ? BescheidSendBy.NACHRICHT : bescheidResource.sendBy, + [BescheidFormService.FIELD_SEND_BY]: sendBy, [BescheidFormService.FIELD_NACHRICHT_SUBJECT]: bescheidResource.nachrichtSubject, [BescheidFormService.FIELD_NACHRICHT_TEXT]: bescheidResource.nachrichtText, }); @@ -142,6 +136,16 @@ export class BescheidFormService extends AbstractFormService<CommandResource> { return null; } + _evaluateSendBy(bescheidResource: BescheidResource): BescheidSendBy { + if ( + bescheidResource.sendBy === BescheidSendBy.NACHRICHT && + hasLink(bescheidResource, BescheidLinkRel.BESCHEIDEN_UND_SENDEN) + ) { + return BescheidSendBy.NACHRICHT; + } + return BescheidSendBy.MANUAL; + } + public getBescheidFormValueChanges(): Observable<Bescheid> { return this.form.valueChanges.pipe(startWith(this.getBescheidFormValue())); }