From 452e36f25768672a9a270b1654466bfc53b5e55e Mon Sep 17 00:00:00 2001
From: Bastien DUMONT <bdumont@grandlyon.com>
Date: Wed, 22 Feb 2023 12:45:07 +0000
Subject: [PATCH] fix: free workshop under condition

---
 .../scripts/1676885604196-free-workshop.ts    | 28 +++++++++++++++++++
 src/structures/schemas/structure.schema.ts    |  3 +-
 .../services/aptic-structures.service.ts      |  2 +-
 test/mock/services/structures.mock.service.ts |  8 +++---
 4 files changed, 35 insertions(+), 6 deletions(-)
 create mode 100644 src/migrations/scripts/1676885604196-free-workshop.ts

diff --git a/src/migrations/scripts/1676885604196-free-workshop.ts b/src/migrations/scripts/1676885604196-free-workshop.ts
new file mode 100644
index 000000000..511db2c1e
--- /dev/null
+++ b/src/migrations/scripts/1676885604196-free-workshop.ts
@@ -0,0 +1,28 @@
+import { Db } from 'mongodb';
+import { getDb } from '../migrations-utils/db';
+
+export const up = async () => {
+  const db: Db = await getDb();
+  const cursor = db.collection('structures').find({});
+  let document;
+  while ((document = await cursor.next())) {
+    await db
+      .collection('structures')
+      .updateOne({ _id: document._id }, [{ $set: { freeWorkShop: document.freeWorkShop ? 'Oui' : 'Non' } }]);
+  }
+  console.log(`Update done : 'freeWorkshop' updated to string`);
+};
+
+export const down = async () => {
+  const db: Db = await getDb();
+  const cursor = db.collection('structures').find({});
+  let document;
+  while ((document = await cursor.next())) {
+    await db
+      .collection('structures')
+      .updateOne({ _id: document._id }, [
+        { $set: { freeWorkShop: ['Oui', 'Oui, sous condition'].includes(document.freeWorkShop) ? true : false } },
+      ]);
+  }
+  console.log(`Revert done : 'freeWorkshop' updated to boolean`);
+};
diff --git a/src/structures/schemas/structure.schema.ts b/src/structures/schemas/structure.schema.ts
index 3f6f2f685..ae80eebb0 100644
--- a/src/structures/schemas/structure.schema.ts
+++ b/src/structures/schemas/structure.schema.ts
@@ -106,7 +106,8 @@ export class Structure {
 
   @Prop()
   @IsNotEmpty()
-  freeWorkShop: boolean;
+  /** 'Oui' | 'Oui sous condition' | 'Non' */
+  freeWorkShop: string;
 
   @Prop()
   nbComputers: number;
diff --git a/src/structures/services/aptic-structures.service.ts b/src/structures/services/aptic-structures.service.ts
index eddf09fa3..21dd98c8b 100644
--- a/src/structures/services/aptic-structures.service.ts
+++ b/src/structures/services/aptic-structures.service.ts
@@ -87,7 +87,7 @@ export class ApticStructuresService {
         createdStructure.remoteAccompaniment = false;
         createdStructure.categories.accessModality = ['accesLibre'];
         createdStructure.accountVerified = true;
-        createdStructure.freeWorkShop = false;
+        createdStructure.freeWorkShop = 'Non';
         createdStructure.nbComputers = 0;
         createdStructure.nbPrinters = 0;
         createdStructure.nbScanners = 0;
diff --git a/test/mock/services/structures.mock.service.ts b/test/mock/services/structures.mock.service.ts
index ee89e8a9f..9dd4e40a7 100644
--- a/test/mock/services/structures.mock.service.ts
+++ b/test/mock/services/structures.mock.service.ts
@@ -1222,7 +1222,7 @@ export class StructuresServiceMock {
         nbComputers: 1,
         nbPrinters: 1,
         nbScanners: 1,
-        freeWorkShop: false,
+        freeWorkShop: 'Non',
         accountVerified: true,
         personalOffers: [personalOfferDocument],
         createdAt: new Date('2021-05-06T09:42:38.000Z'),
@@ -1428,7 +1428,7 @@ export const mockResinStructures: Array<Structure> = [
     nbComputers: 1,
     nbPrinters: 1,
     nbScanners: 1,
-    freeWorkShop: false,
+    freeWorkShop: 'Non',
     accountVerified: true,
     createdAt: new Date('2021-05-06T09:42:38.000Z'),
     updatedAt: new Date('2021-05-06T09:42:50.000Z'),
@@ -1532,7 +1532,7 @@ export const mockResinStructures: Array<Structure> = [
     nbComputers: 1,
     nbPrinters: 1,
     nbScanners: 1,
-    freeWorkShop: false,
+    freeWorkShop: 'Non',
     accountVerified: true,
     personalOffers: [],
     createdAt: new Date('2021-05-06T09:42:38.000Z'),
@@ -1636,7 +1636,7 @@ export const mockResinStructures: Array<Structure> = [
     nbComputers: 1,
     nbPrinters: 1,
     nbScanners: 1,
-    freeWorkShop: false,
+    freeWorkShop: 'Non',
     accountVerified: true,
     personalOffers: [],
     createdAt: new Date('2021-05-06T09:42:38.000Z'),
-- 
GitLab