From 631765fb220d46e1c90e2ee5983127bc7851b075 Mon Sep 17 00:00:00 2001
From: Florent POITTEVIN <poittevin.florent@gmail.com>
Date: Mon, 16 Mar 2020 10:48:10 +0100
Subject: [PATCH] fix: 1178 aip status history of stage 2 is the same as
 storage 1

---
 .../preservation/aip/helpers/aip.helper.ts    | 25 ++++++++++++++++++-
 .../preservation/aip/stores/aip.state.ts      | 25 +++----------------
 .../aip-status-history.state.ts               |  3 ++-
 3 files changed, 29 insertions(+), 24 deletions(-)

diff --git a/src/app/features/preservation/aip/helpers/aip.helper.ts b/src/app/features/preservation/aip/helpers/aip.helper.ts
index a9c739eb7..89a0c0bb8 100644
--- a/src/app/features/preservation/aip/helpers/aip.helper.ts
+++ b/src/app/features/preservation/aip/helpers/aip.helper.ts
@@ -1,6 +1,9 @@
 import {ActivatedRoute} from "@angular/router";
 import {AipTabEnum} from "@preservation/aip/enums/aip-tab.enum";
-import {PreservationPlanningRoutesEnum} from "@shared/enums/routes.enum";
+import {AppRoutesEnum, PreservationPlanningRoutesEnum} from "@shared/enums/routes.enum";
+import {isNullOrUndefined, StringUtil} from "solidify-frontend";
+import {ArchivalStorageResourceApiEnum} from "@shared/enums/api.enum";
+import {Store} from "@ngxs/store";
 
 export class AipHelper {
   static getTabRouteSelected(route: ActivatedRoute): PreservationPlanningRoutesEnum | undefined {
@@ -31,4 +34,24 @@ export class AipHelper {
     }
     return undefined;
   }
+
+  static generateUrlResource(store: Store, storagionNumber: number | undefined = undefined): string {
+    if (isNullOrUndefined(storagionNumber)) {
+      if (isNullOrUndefined(store)) {
+        return StringUtil.stringEmpty;
+      }
+      const url = store.selectSnapshot(state => state.router.state.url);
+      if (url.includes(PreservationPlanningRoutesEnum.aipDetail)) {
+        const urlParts = url.split(AppRoutesEnum.separator);
+        storagionNumber = urlParts[urlParts.indexOf(PreservationPlanningRoutesEnum.aipDetail) - 1];
+      } else {
+        storagionNumber = store.selectSnapshot(state => state.router.state.root.children[0].children[0].children[0].params[PreservationPlanningRoutesEnum.storagionNumberWithoutPrefixParam]);
+      }
+    }
+    const storagion = ArchivalStorageResourceApiEnum.aipStorages.find(aip => aip.index === +storagionNumber);
+    if (isNullOrUndefined(storagion)) {
+      throw new Error(`The storagion index '${storagionNumber}' is not find in setting`);
+    }
+    return storagion.url;
+  }
 }
diff --git a/src/app/features/preservation/aip/stores/aip.state.ts b/src/app/features/preservation/aip/stores/aip.state.ts
index 7c865705f..a637e973a 100644
--- a/src/app/features/preservation/aip/stores/aip.state.ts
+++ b/src/app/features/preservation/aip/stores/aip.state.ts
@@ -61,6 +61,7 @@ import {
   StringUtil,
   TRANSLATE,
 } from "solidify-frontend";
+import {AipHelper} from "@preservation/aip/helpers/aip.helper";
 
 export interface PreservationAipStateModel extends ResourceStateModel<Aip> {
   preservation_aip_organizationalUnit: PreservationAipOrganizationalUnitStateModel;
@@ -97,27 +98,7 @@ export class PreservationAipState extends ResourceState<PreservationAipStateMode
   }
 
   protected get _urlResource(): string {
-    return this._generateUrlResource();
-  }
-
-  private _generateUrlResource(storagionNumber: number | undefined = undefined): string {
-    if (isNullOrUndefined(storagionNumber)) {
-      if (isNullOrUndefined(this.store)) {
-        return StringUtil.stringEmpty;
-      }
-      const url = this.store.selectSnapshot(state => state.router.state.url);
-      if (url.includes(PreservationPlanningRoutesEnum.aipDetail)) {
-        const urlParts = url.split(AppRoutesEnum.separator);
-        storagionNumber = urlParts[urlParts.indexOf(PreservationPlanningRoutesEnum.aipDetail) - 1];
-      } else {
-        storagionNumber = this.store.selectSnapshot(state => state.router.state.root.children[0].children[0].children[0].params[PreservationPlanningRoutesEnum.storagionNumberWithoutPrefixParam]);
-      }
-    }
-    const storagion = ArchivalStorageResourceApiEnum.aipStorages.find(aip => aip.index === +storagionNumber);
-    if (isNullOrUndefined(storagion)) {
-      throw new Error(`The storagion index '${storagionNumber}' is not find in setting`);
-    }
-    return storagion.url;
+    return AipHelper.generateUrlResource(this.store);
   }
 
   @Selector()
@@ -163,7 +144,7 @@ export class PreservationAipState extends ResourceState<PreservationAipStateMode
       ...reset,
     });
 
-    return this.apiService.getById<Aip>(this._generateUrlResource(action.storagionNumber), action.id)
+    return this.apiService.getById<Aip>(AipHelper.generateUrlResource(this.store, action.storagionNumber), action.id)
       .pipe(
         tap((model: Aip) => {
           ctx.dispatch(new PreservationAipAction.GetByIdSuccess(action, model));
diff --git a/src/app/features/preservation/aip/stores/status-history/aip-status-history.state.ts b/src/app/features/preservation/aip/stores/status-history/aip-status-history.state.ts
index 8924d1f7e..b9f0af938 100644
--- a/src/app/features/preservation/aip/stores/status-history/aip-status-history.state.ts
+++ b/src/app/features/preservation/aip/stores/status-history/aip-status-history.state.ts
@@ -17,6 +17,7 @@ import {
   ApiService,
   NotificationService,
 } from "solidify-frontend";
+import {AipHelper} from "@preservation/aip/helpers/aip.helper";
 
 export interface PreservationAipStatusHistoryStateModel extends StatusHistoryStateModel<Aip> {
 }
@@ -39,6 +40,6 @@ export class PreservationAipStatusHistoryState extends StatusHistoryState<Preser
   }
 
   protected get _urlResource(): string {
-    return ArchivalStorageResourceApiEnum.aip;
+    return AipHelper.generateUrlResource(this.store);
   }
 }
-- 
GitLab