From d116a29b9de2cd4cd73ede52ed0c5671b769d3c7 Mon Sep 17 00:00:00 2001
From: Albert <Albert.Bruns@mgm-tp.com>
Date: Mon, 10 Mar 2025 10:35:50 +0100
Subject: [PATCH] OZG-725-7891 forwarding item eibinden

---
 .../forwarding-item.component.ts              |  4 +-
 ...forwarding-dialog-container.component.html |  2 +-
 .../forwarding-dialog-container.component.ts  | 22 ++++++--
 ...ding-dialog-forwarding-item.component.html |  3 +
 ...g-dialog-forwarding-item.component.spec.ts | 42 ++++++++++++++
 ...arding-dialog-forwarding-item.component.ts | 14 +++++
 ...tem-change-button-container.component.html |  7 +++
 ...-change-button-container.component.spec.ts | 53 ++++++++++++++++++
 ...-item-change-button-container.component.ts | 17 ++++++
 .../forwarding-dialog.component.html          | 19 +++++--
 .../forwarding-dialog.component.spec.ts       | 55 +++++++++++++++++++
 .../forwarding-dialog.component.ts            | 23 +++++---
 .../zustaendige-stelle-shared/src/index.ts    |  1 +
 .../src/lib/anschrift-to-string.pipe.spec.ts  | 29 ++++++++++
 .../src/lib/anschrift-to-string.pipe.ts       | 15 +++++
 15 files changed, 286 insertions(+), 20 deletions(-)
 create mode 100644 alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.html
 create mode 100644 alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.spec.ts
 create mode 100644 alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.ts
 create mode 100644 alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.html
 create mode 100644 alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.spec.ts
 create mode 100644 alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.ts
 create mode 100644 alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.spec.ts
 create mode 100644 alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.ts

diff --git a/alfa-client/libs/design-system/src/lib/forwarding-item/forwarding-item.component.ts b/alfa-client/libs/design-system/src/lib/forwarding-item/forwarding-item.component.ts
index f358004819..ae0f1ad3c0 100644
--- a/alfa-client/libs/design-system/src/lib/forwarding-item/forwarding-item.component.ts
+++ b/alfa-client/libs/design-system/src/lib/forwarding-item/forwarding-item.component.ts
@@ -35,7 +35,7 @@ export enum ForwardingDirection {
   standalone: true,
   imports: [CommonModule, ForwardVorgangIconComponent],
   template: `<div
-    class="flex flex-col items-start justify-between gap-2 rounded-lg border border-grayborder p-3 md:flex-row md:items-center md:gap-0"
+    class="flex flex-col items-start items-center justify-between gap-2 rounded-lg border border-grayborder p-3 md:flex-row md:items-center md:gap-0"
   >
     <div class="flex gap-3">
       <ods-forward-vorgang-icon class="fill-text" />
@@ -45,7 +45,7 @@ export enum ForwardingDirection {
         <p>{{ address }}</p>
       </div>
     </div>
-    <div class="self-end text-end empty:hidden">
+    <div class="text-end empty:hidden">
       <ng-content />
     </div>
   </div>`,
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.html
index bf2b9b1bb3..b3bfb15387 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.html
@@ -1 +1 @@
-<alfa-forwarding-dialog />
\ No newline at end of file
+<alfa-forwarding-dialog [selectedSearchResult]="selectedSearchResult$ | async"/>
\ No newline at end of file
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.ts
index f5ce07c1e2..460f6325dd 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog-container.component.ts
@@ -1,14 +1,20 @@
 import { ResourceRepository } from '@alfa-client/tech-shared';
 import { VorgangService } from '@alfa-client/vorgang-shared';
 import { createOrganisationEinheitService } from '@alfa-client/zustaendige-stelle';
-import { ZUSTAENDIGE_STELLE_SERVICE } from '@alfa-client/zustaendige-stelle-shared';
-import { Component } from '@angular/core';
+import {
+  OrganisationsEinheitResource,
+  OrganisationsEinheitService,
+  ZUSTAENDIGE_STELLE_SERVICE,
+} from '@alfa-client/zustaendige-stelle-shared';
+import { AsyncPipe } from '@angular/common';
+import { Component, inject } from '@angular/core';
+import { Observable } from 'rxjs';
 import { ForwardingDialogComponent } from './forwarding-dialog/forwarding-dialog.component';
 
 @Component({
   selector: 'alfa-forwarding-dialog-container',
   standalone: true,
-  imports: [ForwardingDialogComponent],
+  imports: [ForwardingDialogComponent, AsyncPipe],
   templateUrl: './forwarding-dialog-container.component.html',
   providers: [
     {
@@ -18,4 +24,12 @@ import { ForwardingDialogComponent } from './forwarding-dialog/forwarding-dialog
     },
   ],
 })
-export class ForwardingDialogContainerComponent {}
+export class ForwardingDialogContainerComponent {
+  private readonly organisationsEinheitService = inject(ZUSTAENDIGE_STELLE_SERVICE) as OrganisationsEinheitService;
+
+  public selectedSearchResult$: Observable<OrganisationsEinheitResource>;
+
+  ngOnInit(): void {
+    this.selectedSearchResult$ = this.organisationsEinheitService.getSelectedResult();
+  }
+}
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.html
new file mode 100644
index 0000000000..bd41e43d6a
--- /dev/null
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.html
@@ -0,0 +1,3 @@
+<ods-forwarding-item [label]="organisationsEinheitResource.name" [address]="organisationsEinheitResource.anschrift | anschriftToString" >
+  <alfa-forwarding-item-change-button-container />
+</ods-forwarding-item>
\ No newline at end of file
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.spec.ts
new file mode 100644
index 0000000000..fe71ee9a0c
--- /dev/null
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.spec.ts
@@ -0,0 +1,42 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { getMockComponent } from '@alfa-client/test-utils';
+import { Anschrift, OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
+import { ForwardingItemComponent } from '@ods/system';
+import { MockComponent } from 'ng-mocks';
+import { createOrganisationsEinheitResource } from '../../../../../../zustaendige-stelle-shared/test/organisations-einheit';
+import { ForwardingDialogForwardingItemComponent } from './forwarding-dialog-forwarding-item.component';
+import { ForwardingItemChangeButtonContainerComponent } from './forwarding-item-change-button-container/forwarding-item-change-button-container.component';
+
+describe('ForwardingDialogForwardingItemComponent', () => {
+  let component: ForwardingDialogForwardingItemComponent;
+  let fixture: ComponentFixture<ForwardingDialogForwardingItemComponent>;
+
+  const organisationsEinheitResource: OrganisationsEinheitResource = createOrganisationsEinheitResource();
+  const anschrift: Anschrift = organisationsEinheitResource.anschrift;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [ForwardingDialogForwardingItemComponent],
+      declarations: [MockComponent(ForwardingItemChangeButtonContainerComponent), MockComponent(ForwardingItemComponent)],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(ForwardingDialogForwardingItemComponent);
+    component = fixture.componentInstance;
+    component.organisationsEinheitResource = organisationsEinheitResource;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+
+  describe('forwarding item', () => {
+    it('should exist with input', () => {
+      const forwardingItem: ForwardingItemComponent = getMockComponent(fixture, ForwardingItemComponent);
+
+      expect(forwardingItem.label).toBe(organisationsEinheitResource.name);
+      expect(forwardingItem.address).toBe(`${anschrift.strasse} ${anschrift.hausnummer}, ${anschrift.plz} ${anschrift.ort}`);
+    });
+  });
+});
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.ts
new file mode 100644
index 0000000000..ab680e025e
--- /dev/null
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component.ts
@@ -0,0 +1,14 @@
+import { AnschriftToStringPipe, OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
+import { Component, Input } from '@angular/core';
+import { ForwardingItemComponent } from '@ods/system';
+import { ForwardingItemChangeButtonContainerComponent } from './forwarding-item-change-button-container/forwarding-item-change-button-container.component';
+
+@Component({
+  selector: 'alfa-forwarding-dialog-forwarding-item',
+  standalone: true,
+  imports: [ForwardingItemComponent, ForwardingItemChangeButtonContainerComponent, AnschriftToStringPipe],
+  templateUrl: './forwarding-dialog-forwarding-item.component.html',
+})
+export class ForwardingDialogForwardingItemComponent {
+  @Input() organisationsEinheitResource!: OrganisationsEinheitResource;
+}
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.html
new file mode 100644
index 0000000000..bd825b7ca4
--- /dev/null
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.html
@@ -0,0 +1,7 @@
+<ods-button
+  (clickEmitter)="onClick()"
+  text="Ändern"
+  variant="outline"
+  dataTestId="forwarding-item-change-button"
+  data-test-id="forwarding-item-change-button-container"
+/>
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.spec.ts
new file mode 100644
index 0000000000..49e50eaa84
--- /dev/null
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.spec.ts
@@ -0,0 +1,53 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { dispatchEventFromFixture, mock, Mock, MockEvent } from '@alfa-client/test-utils';
+import { OrganisationsEinheitService, ZUSTAENDIGE_STELLE_SERVICE } from '@alfa-client/zustaendige-stelle-shared';
+import { ButtonComponent } from '@ods/system';
+import { MockComponent } from 'ng-mocks';
+import { getDataTestIdOf } from '../../../../../../../tech-shared/test/data-test';
+import { ForwardingItemChangeButtonContainerComponent } from './forwarding-item-change-button-container.component';
+
+describe('ForwardingItemChangeButtonContainerComponent', () => {
+  let component: ForwardingItemChangeButtonContainerComponent;
+  let fixture: ComponentFixture<ForwardingItemChangeButtonContainerComponent>;
+
+  const buttonContainer: string = getDataTestIdOf('forwarding-item-change-button-container');
+
+  let service: Mock<OrganisationsEinheitService>;
+
+  beforeEach(() => {
+    service = mock(OrganisationsEinheitService);
+
+    TestBed.configureTestingModule({
+      imports: [ForwardingItemChangeButtonContainerComponent],
+      declarations: [MockComponent(ButtonComponent)],
+      providers: [{ provide: ZUSTAENDIGE_STELLE_SERVICE, useValue: service }],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(ForwardingItemChangeButtonContainerComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+
+  describe('button', () => {
+    it('should call onClick on button click', () => {
+      component.onClick = jest.fn();
+
+      dispatchEventFromFixture(fixture, buttonContainer, MockEvent.CLICK);
+
+      expect(component.onClick).toHaveBeenCalled();
+    });
+  });
+
+  describe('onClick', () => {
+    it('should clear selected result', () => {
+      component.onClick();
+
+      expect(service.clearSelectedResult).toHaveBeenCalled();
+    });
+  });
+});
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.ts
new file mode 100644
index 0000000000..5a0ca9ccbe
--- /dev/null
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog-forwarding-item/forwarding-item-change-button-container/forwarding-item-change-button-container.component.ts
@@ -0,0 +1,17 @@
+import { OrganisationsEinheitService, ZUSTAENDIGE_STELLE_SERVICE } from '@alfa-client/zustaendige-stelle-shared';
+import { Component, inject } from '@angular/core';
+import { ButtonComponent } from '@ods/system';
+
+@Component({
+  selector: 'alfa-forwarding-item-change-button-container',
+  standalone: true,
+  imports: [ButtonComponent],
+  templateUrl: './forwarding-item-change-button-container.component.html',
+})
+export class ForwardingItemChangeButtonContainerComponent {
+  private readonly organisationsEinheitService = inject(ZUSTAENDIGE_STELLE_SERVICE) as OrganisationsEinheitService;
+
+  public onClick(): void {
+    this.organisationsEinheitService.clearSelectedResult();
+  }
+}
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html
index 4a8653498c..16d3168d35 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html
@@ -1,10 +1,19 @@
-<div class="block bg-background-100 flex w-[620px] flex-col gap-4 p-8">
-  <div class="flex justify-between items-center">
+<div class="block flex w-[620px] flex-col gap-4 bg-background-100 p-8">
+  <div class="flex items-center justify-between">
     <h1 class="text-xl font-semibold text-primary">Vorgang weiterleiten</h1>
-    <ods-cancel-dialog-button showAsIconButton="true"/>
+    <ods-cancel-dialog-button showAsIconButton="true" />
   </div>
-  <alfa-search-zustaendige-stelle-form-container cdkFocusInitial/>
-  <div class="flex gap-4" >
+
+  @if (isNil(selectedSearchResult)) {
+    <alfa-search-zustaendige-stelle-form-container cdkFocusInitial data-test-id="zufi-search" />
+  } @else {
+    <alfa-forwarding-dialog-forwarding-item
+      [organisationsEinheitResource]="selectedSearchResult"
+      data-test-id="forwarding-item"
+    />
+  }
+
+  <div class="flex gap-4">
     <alfa-forwarding-button />
     <ods-cancel-dialog-button />
   </div>
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts
index d45ef9176a..8a5f033e9d 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.spec.ts
@@ -1,20 +1,30 @@
+import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
 import { ZustaendigeStelleModule } from '@alfa-client/zustaendige-stelle';
+import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { CancelDialogButtonComponent } from '@ods/component';
 import { MockComponent, MockModule } from 'ng-mocks';
+import { getDataTestIdOf } from '../../../../../tech-shared/test/data-test';
+import { createOrganisationsEinheitResource } from '../../../../../zustaendige-stelle-shared/test/organisations-einheit';
 import { ForwardingButtonComponent } from './forwarding-button/forwarding-button.component';
+import { ForwardingDialogForwardingItemComponent } from './forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component';
 import { ForwardingDialogComponent } from './forwarding-dialog.component';
 
 describe('ForwardingDialogComponent', () => {
   let component: ForwardingDialogComponent;
   let fixture: ComponentFixture<ForwardingDialogComponent>;
 
+  const zufiSearch: string = getDataTestIdOf('zufi-search');
+  const forwardingItem: string = getDataTestIdOf('forwarding-item');
+
+  const organisationsEinheitResource: OrganisationsEinheitResource = createOrganisationsEinheitResource();
   beforeEach(async () => {
     await TestBed.configureTestingModule({
       imports: [ForwardingDialogComponent],
       declarations: [
         MockComponent(CancelDialogButtonComponent),
         MockComponent(ForwardingButtonComponent),
+        MockComponent(ForwardingDialogForwardingItemComponent),
         MockModule(ZustaendigeStelleModule),
       ],
     }).compileComponents();
@@ -27,4 +37,49 @@ describe('ForwardingDialogComponent', () => {
   it('should create', () => {
     expect(component).toBeTruthy();
   });
+
+  describe('template', () => {
+    describe('zufi search', () => {
+      it('should render if selectedSearchResult is null', () => {
+        component.selectedSearchResult = null;
+
+        fixture.detectChanges();
+
+        existsAsHtmlElement(fixture, zufiSearch);
+      });
+
+      it('should NOT render if selectedSearchResult is NOT null', () => {
+        component.selectedSearchResult = organisationsEinheitResource;
+
+        fixture.detectChanges();
+
+        notExistsAsHtmlElement(fixture, zufiSearch);
+      });
+    });
+  });
+  it('should render zufi search if selectedSearchResult is null', () => {
+    component.selectedSearchResult = null;
+
+    fixture.detectChanges();
+  });
+
+  describe('template', () => {
+    describe('forwarding item', () => {
+      it('should render if selectedSearchResult is NOT null', () => {
+        component.selectedSearchResult = organisationsEinheitResource;
+
+        fixture.detectChanges();
+
+        existsAsHtmlElement(fixture, forwardingItem);
+      });
+
+      it('should NOT render if selectedSearchResult is null', () => {
+        component.selectedSearchResult = null;
+
+        fixture.detectChanges();
+
+        notExistsAsHtmlElement(fixture, forwardingItem);
+      });
+    });
+  });
 });
diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts
index f864971b37..7912c98d60 100644
--- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.ts
@@ -1,21 +1,28 @@
 import { ZustaendigeStelleModule } from '@alfa-client/zustaendige-stelle';
+import { OrganisationsEinheitResource } from '@alfa-client/zustaendige-stelle-shared';
 import { A11yModule } from '@angular/cdk/a11y';
-import { Component, EventEmitter, Input, Output } from '@angular/core';
+import { Component, Input } from '@angular/core';
 import { ReactiveFormsModule } from '@angular/forms';
-import { Resource } from '@ngxp/rest';
 import { CancelDialogButtonComponent } from '@ods/component';
-import { InstantSearchResult } from '@ods/system';
+import { isNil } from 'lodash-es';
 import { ForwardingButtonComponent } from './forwarding-button/forwarding-button.component';
+import { ForwardingDialogForwardingItemComponent } from './forwarding-dialog-forwarding-item/forwarding-dialog-forwarding-item.component';
 
 @Component({
   selector: 'alfa-forwarding-dialog',
   standalone: true,
-  imports: [A11yModule, CancelDialogButtonComponent, ReactiveFormsModule, ZustaendigeStelleModule, ForwardingButtonComponent],
+  imports: [
+    A11yModule,
+    CancelDialogButtonComponent,
+    ReactiveFormsModule,
+    ZustaendigeStelleModule,
+    ForwardingButtonComponent,
+    ForwardingDialogForwardingItemComponent,
+  ],
   templateUrl: './forwarding-dialog.component.html',
 })
 export class ForwardingDialogComponent {
-  @Input() searchResults: InstantSearchResult<Resource>[];
-  @Output() selectSearchResult: EventEmitter<Resource> = new EventEmitter<Resource>();
-  @Output() search: EventEmitter<string> = new EventEmitter();
-  @Output() clearSearchResult: EventEmitter<void> = new EventEmitter();
+  @Input() selectedSearchResult: OrganisationsEinheitResource;
+
+  protected readonly isNil = isNil;
 }
diff --git a/alfa-client/libs/zustaendige-stelle-shared/src/index.ts b/alfa-client/libs/zustaendige-stelle-shared/src/index.ts
index ab0148d00b..f7b4ea3e3c 100644
--- a/alfa-client/libs/zustaendige-stelle-shared/src/index.ts
+++ b/alfa-client/libs/zustaendige-stelle-shared/src/index.ts
@@ -21,6 +21,7 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
+export * from './lib/anschrift-to-string.pipe';
 export * from './lib/externe-fachstelle/externe-fachstelle.model';
 export * from './lib/externe-fachstelle/externe-fachstelle.service';
 export * from './lib/organisations-einheit/organisations-einheit.model';
diff --git a/alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.spec.ts b/alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.spec.ts
new file mode 100644
index 0000000000..06d89cf735
--- /dev/null
+++ b/alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.spec.ts
@@ -0,0 +1,29 @@
+import { EMPTY_STRING } from '@alfa-client/tech-shared';
+import { Anschrift } from '@alfa-client/zustaendige-stelle-shared';
+import { AnschriftToStringPipe } from './anschrift-to-string.pipe';
+
+describe('AnschriftToString', () => {
+  let pipe: AnschriftToStringPipe;
+
+  beforeEach(() => {
+    pipe = new AnschriftToStringPipe();
+  });
+
+  it('should create an instance', () => {
+    expect(pipe).toBeTruthy();
+  });
+
+  it('should format anschrift', () => {
+    const anschrift: Anschrift = {
+      strasse: 'Musterstraße',
+      hausnummer: '12',
+      plz: '12345',
+      ort: 'Musterstadt',
+    };
+    expect(pipe.transform(anschrift)).toBe('Musterstraße 12, 12345 Musterstadt');
+  });
+
+  it('should return empty string if anschrift is null', () => {
+    expect(pipe.transform(null)).toBe(EMPTY_STRING);
+  });
+});
diff --git a/alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.ts b/alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.ts
new file mode 100644
index 0000000000..6ea502cd27
--- /dev/null
+++ b/alfa-client/libs/zustaendige-stelle-shared/src/lib/anschrift-to-string.pipe.ts
@@ -0,0 +1,15 @@
+import { EMPTY_STRING } from '@alfa-client/tech-shared';
+import { Anschrift } from '@alfa-client/zustaendige-stelle-shared';
+import { Pipe, PipeTransform } from '@angular/core';
+import { isNil } from 'lodash-es';
+
+@Pipe({
+  standalone: true,
+  name: 'anschriftToString',
+})
+export class AnschriftToStringPipe implements PipeTransform {
+  transform(anschrift: Anschrift): string {
+    if (isNil(anschrift)) return EMPTY_STRING;
+    return `${anschrift.strasse} ${anschrift.hausnummer}, ${anschrift.plz} ${anschrift.ort}`;
+  }
+}
-- 
GitLab