From e5cf76378d680324b70063aee15cf8ae3eb11d96 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 19 Mar 2024 17:58:39 +0100
Subject: [PATCH] OZG-5151 add and use notHasLink function

---
 .../src/lib/resource/resource.util.spec.ts    | 21 ++++++++++++++++++-
 .../src/lib/resource/resource.util.ts         |  6 +++++-
 ...scheiden-ueberspringen-dialog.component.ts |  5 ++---
 3 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.spec.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.spec.ts
index 07ef079855..293d3e9185 100644
--- a/alfa-client/libs/tech-shared/src/lib/resource/resource.util.spec.ts
+++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.util.spec.ts
@@ -22,7 +22,7 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 
-import { EMPTY_ARRAY } from '@alfa-client/tech-shared';
+import { EMPTY_ARRAY, notHasLink } from '@alfa-client/tech-shared';
 import { Resource } from '@ngxp/rest';
 import {
   createDummyListResource,
@@ -39,6 +39,8 @@ import {
   isResourceDifferent,
   isValidStateResource,
 } from './resource.util';
+import { createCommandResource } from '../../../../command-shared/test/command';
+import { CommandLinkRel } from '../../../../command-shared/src/lib/command.linkrel';
 
 describe('resource util', () => {
   describe('isLoadingRequired', () => {
@@ -189,4 +191,21 @@ describe('isResourceDifferent', () => {
 
     expect(isChanged).toBeFalsy();
   });
+
+  describe('notHasLink', () => {
+    it('should return true', () => {
+      const result = notHasLink(createCommandResource(), CommandLinkRel.EFFECTED_RESOURCE);
+
+      expect(result).toBeTruthy();
+    });
+
+    it('should return true', () => {
+      const result = notHasLink(
+        createCommandResource([CommandLinkRel.EFFECTED_RESOURCE]),
+        CommandLinkRel.EFFECTED_RESOURCE,
+      );
+
+      expect(result).toBeFalsy();
+    });
+  });
 });
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 08d17f6400..78791500f0 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
@@ -22,7 +22,7 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 import { encodeUrlForEmbedding, isNotNull } from '@alfa-client/tech-shared';
-import { getEmbeddedResource, getUrl, Resource, ResourceUri } from '@ngxp/rest';
+import { getEmbeddedResource, getUrl, hasLink, Resource, ResourceUri } from '@ngxp/rest';
 import { isEqual, isNil } from 'lodash-es';
 import { HttpError } from '../tech.model';
 
@@ -113,3 +113,7 @@ export function isResourceDifferent(
 export function throwErrorOn(condition: boolean, errorMsg: string): void {
   if (condition) throw Error(errorMsg);
 }
+
+export function notHasLink<T extends Resource>(resource: T, linkRel: string): boolean {
+  return !hasLink(resource, linkRel);
+}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts
index d5f23cad1c..3659ad16a2 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-ueberspringen-dialog/vorgang-detail-bescheiden-ueberspringen-dialog.component.ts
@@ -4,9 +4,8 @@ import { OzgcloudDialogService } from '@alfa-client/ui';
 import { BescheidService } from '@alfa-client/bescheid-shared';
 import { Observable, switchMap, tap } from 'rxjs';
 import { CommandResource, isSuccessfulDone } from '@alfa-client/command-shared';
-import { StateResource } from '@alfa-client/tech-shared';
+import { notHasLink, StateResource } from '@alfa-client/tech-shared';
 import { BescheiderstellungUeberspringenDailogData } from '@alfa-client/vorgang-detail';
-import { hasLink } from '@ngxp/rest';
 import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
 
 @Component({
@@ -29,7 +28,7 @@ export class VorgangDetailBescheidenUeberspringenDialogComponent {
 
   onConfirm() {
     const vorgangWithEingangResource = this.dialogData.vorgangWithEingangResource;
-    if (!hasLink(vorgangWithEingangResource, VorgangWithEingangLinkRel.BESCHEID_DRAFT)) {
+    if (notHasLink(vorgangWithEingangResource, VorgangWithEingangLinkRel.BESCHEID_DRAFT)) {
       this.bescheiderstellungUeberspringen$ = this.bescheidService.bescheidErstellungUeberspringen(
         vorgangWithEingangResource,
       );
-- 
GitLab