diff --git a/client/Database/database.js b/client/Database/database.js
index 8d04133423e5db128e9bdb233aa5987b1d77c487..8cabde905aa6e80ef8178da1ebbd5844a926b14e 100644
--- a/client/Database/database.js
+++ b/client/Database/database.js
@@ -18,6 +18,15 @@ const firebaseConfig = {
     messagingSenderId: "902143402555",
     appId: "1:902143402555:web:29213e81de0a0cba38b21e",
 };
+// const firebaseConfig = {
+//   apiKey: "AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4",
+//   authDomain: "company3-456bb.firebaseapp.com",
+//   projectId: "company3-456bb",
+//   storageBucket: "company3-456bb.appspot.com",
+//   messagingSenderId: "310033686522",
+//   appId: "1:310033686522:web:63198bb0db679c98ee4e43",
+//   measurementId: "G-PFLDQY00DB"
+// };
 const app = initializeApp(firebaseConfig);
 export const auth = getAuth();
 export const db = getFirestore(app);
diff --git a/client/Database/database.ts b/client/Database/database.ts
index 0f8fd441baea115dec9aa9fb0e4f3c5b6b3872e0..687946161c79de363ed54082f6fad9bdaeb9e16d 100644
--- a/client/Database/database.ts
+++ b/client/Database/database.ts
@@ -29,6 +29,16 @@ const firebaseConfig = {
   appId: "1:902143402555:web:29213e81de0a0cba38b21e",
 };
 
+// const firebaseConfig = {
+//   apiKey: "AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4",
+//   authDomain: "company3-456bb.firebaseapp.com",
+//   projectId: "company3-456bb",
+//   storageBucket: "company3-456bb.appspot.com",
+//   messagingSenderId: "310033686522",
+//   appId: "1:310033686522:web:63198bb0db679c98ee4e43",
+//   measurementId: "G-PFLDQY00DB"
+// };
+
 const app = initializeApp(firebaseConfig);
 export const auth = getAuth();
 export const db = getFirestore(app);
diff --git a/client/currentProjects/currentProjects.css b/client/currentProjects/currentProjects.css
index 803a1202507379c3fe3facecf26ff019ac27a322..08136ba9efdfc71f516fb3020f3c22359f548984 100644
--- a/client/currentProjects/currentProjects.css
+++ b/client/currentProjects/currentProjects.css
@@ -208,6 +208,14 @@ a {
 .container-fluid{
     padding-left: 0%;
 }
+.statusText {
+    font-weight: bold;
+    text-align: center;
+    font-family: 'Gill Sans MT';
+    font-size: 24px;
+    color: rgb(111, 111, 111);
+    margin-left: 15%;
+}
 .projectButton {
     background: linear-gradient(to right,rgba(220, 144, 215, 0.3), rgba(234, 103, 225, 0));
     border: none; 
diff --git a/client/currentProjects/currentProjects.js b/client/currentProjects/currentProjects.js
index 0b1474da2750d9324c7eff4f84c882eb9a47bef8..4fcd971789cdb93aca8420b1c8b44309eba4ae6f 100644
--- a/client/currentProjects/currentProjects.js
+++ b/client/currentProjects/currentProjects.js
@@ -9,16 +9,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
     });
 };
 import { getImprovementWorks, getObjectById } from "../Database/database.js";
-import { loadProjectPageP } from "../SidebarAndHeader/pageHandler.js";
+import { loadProjectPageP, loadProjectPageA, loadProjectPageG, loadProjectPageS } from "../SidebarAndHeader/pageHandler.js";
 let projectCards = {};
 class projectCard {
-    constructor(id, name, department, title, description, projectId) {
+    constructor(id, name, department, title, description, projectId, currentStage) {
         this.name = name;
         this.department = department;
         this.title = title;
         this.description = description;
         this.id = id;
         this.projectId = projectId;
+        this.stage = currentStage;
     }
     showMoreInfo(blockId, thisTextId) {
         const blockElement = document.getElementById(blockId);
@@ -57,10 +58,12 @@ class projectCard {
 
             <button data-project-id="${this.id}" class="projectButton" role="button">Gå till projektsidan</button>
 
-
+            <div class="statusText">
+            Status: ${this.stage}
+            </div>
             <div class="container ongoingSeeCardDetails toSinglePage">
                 <div class="ongoingSeeCardDetailsInner">
-                    <p id="ongoingSeeDetailsButton${this.id}" class = "moreInfoClass">> Mer information</p>
+                    <p id="ongoingSeeDetailsButton${this.id}" class = "moreInfoClass">>Mer information</p>
                 </div>
             </div>
         </div> 
@@ -109,7 +112,7 @@ function getProjects(selectElement, listenersLoaded) {
                 let name = "Projektledare"; //Waiting for backend fix
                 let description = project.content;
                 let i = id;
-                let card = new projectCard(i, name, department.name, title, description, project.id);
+                let card = new projectCard(i, name, department.name, title, description, project.id, project.currentStage);
                 projectCards[i] = card;
                 let cardHTML = card.generateHTML();
                 addEventListener(listenersLoaded, project.id, card);
@@ -140,8 +143,23 @@ function addEventListener(listenersLoaded, projectId, card) {
                     card.closeMoreInfo(`expandedOngoingWorkCard` + projectId, `ongoingSeeDetailsButton` + projectId);
                 }
             }
-            else {
-                loadProjectPageP(projectId);
+            else if (element.classList.contains('projectButton')) {
+                const currentStage = card.stage;
+                if (currentStage === 'Agera') {
+                    loadProjectPageA(projectId);
+                }
+                else if (currentStage === 'Studera') {
+                    loadProjectPageS(projectId);
+                }
+                else if (currentStage === 'Göra') {
+                    loadProjectPageG(projectId);
+                }
+                else if (currentStage === 'Planera') {
+                    loadProjectPageP(projectId);
+                }
+                else if (currentStage === 'Avslutat') {
+                    loadProjectPageP(projectId);
+                }
             }
         });
     }
diff --git a/client/currentProjects/currentProjects.ts b/client/currentProjects/currentProjects.ts
index bb54700ebef1d3a95fcc4cfac726f0526d9c31fb..cbb9557a90126f5463e49749fab68b462c0e3754 100644
--- a/client/currentProjects/currentProjects.ts
+++ b/client/currentProjects/currentProjects.ts
@@ -1,6 +1,6 @@
 "use strict";
 import { getImprovementWorks, getObject, getObjectById } from "../Database/database.js";
-import { loadProjectPageP, loadProjectPageA } from "../SidebarAndHeader/pageHandler.js";
+import { loadProjectPageP, loadProjectPageA, loadProjectPageG, loadProjectPageS } from "../SidebarAndHeader/pageHandler.js";
 
 import * as projectPage from "../projectPage/projectPage.js";
 
@@ -13,16 +13,19 @@ class projectCard {
     private description: string;
     private id: number;
     private projectId: string;
+    public stage: any;
 
-    constructor(id: number, name: string, department: string, title: string, description: string, projectId: string) {
+    constructor(id: number, name: string, department: string, title: string, description: string, projectId: string, currentStage : string) {
       this.name = name;
       this.department = department;
       this.title = title;
       this.description = description;
       this.id = id;
       this.projectId = projectId;
+      this.stage = currentStage;
     }
 
+
     showMoreInfo(blockId: string, thisTextId: string): void {
         const blockElement = document.getElementById(blockId);
         if (blockElement) {
@@ -45,7 +48,7 @@ class projectCard {
             textElement.innerText = '> Mer information';
         }
     }
-    
+
     loadInitiatePage() {
         alert('The initiate project page should now be loaded');
     }
@@ -66,10 +69,12 @@ class projectCard {
 
             <button data-project-id="${this.id}" class="projectButton" role="button">Gå till projektsidan</button>
 
-
+            <div class="statusText">
+            Status: ${this.stage}
+            </div>
             <div class="container ongoingSeeCardDetails toSinglePage">
                 <div class="ongoingSeeCardDetailsInner">
-                    <p id="ongoingSeeDetailsButton${this.id}" class = "moreInfoClass">> Mer information</p>
+                    <p id="ongoingSeeDetailsButton${this.id}" class = "moreInfoClass">>Mer information</p>
                 </div>
             </div>
         </div> 
@@ -122,7 +127,7 @@ async function getProjects (selectElement : Element, listenersLoaded:boolean) {
             let name = "Projektledare"; //Waiting for backend fix
             let description = project.content;
             let i = id;
-            let card = new projectCard(i, name, department.name, title, description, project.id);
+            let card = new projectCard(i, name, department.name, title, description, project.id, project.currentStage);
             projectCards[i] = card;
             let cardHTML = card.generateHTML();
             addEventListener(listenersLoaded, project.id, card);
@@ -149,9 +154,20 @@ function addEventListener(listenersLoaded:boolean, projectId:string, card:projec
                 } else {
                     card.closeMoreInfo(`expandedOngoingWorkCard`+projectId, `ongoingSeeDetailsButton`+projectId);
                 }
-            } else {
-                loadProjectPageP(projectId);
-            }
-        });
+            } else if (element.classList.contains('projectButton')){
+                const currentStage = card.stage;
+                if (currentStage === 'Agera') {
+                    loadProjectPageA(projectId);
+                } else if (currentStage === 'Studera') {
+                    loadProjectPageS(projectId);
+                } else if (currentStage === 'Göra') {
+                    loadProjectPageG(projectId);
+                } else if(currentStage === 'Planera') {
+                    loadProjectPageP(projectId);
+                } else if(currentStage === 'Avslutat') {
+                    loadProjectPageP(projectId);
+                }
+        }
     }
+)}
 }
\ No newline at end of file
diff --git a/client/dist/completedProjects.bundle.js b/client/dist/completedProjects.bundle.js
index bc91064658db56a7e2b38ce1918c6253421054b1..f748c7ca0c1f67ef52b2b6f9ee6cd7585ba35803 100644
--- a/client/dist/completedProjects.bundle.js
+++ b/client/dist/completedProjects.bundle.js
@@ -96,7 +96,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n// const firebaseConfig = {\n//   apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n//   authDomain: \"company3-456bb.firebaseapp.com\",\n//   projectId: \"company3-456bb\",\n//   storageBucket: \"company3-456bb.appspot.com\",\n//   messagingSenderId: \"310033686522\",\n//   appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n//   measurementId: \"G-PFLDQY00DB\"\n// };\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
diff --git a/client/dist/currentProjects.bundle.js b/client/dist/currentProjects.bundle.js
index 976efe25161a55ef0c590b522b0478fba01e4c1d..3c8c7b1ec34a89cdf02779a90c56f48cc496e8e9 100644
--- a/client/dist/currentProjects.bundle.js
+++ b/client/dist/currentProjects.bundle.js
@@ -106,7 +106,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n// const firebaseConfig = {\n//   apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n//   authDomain: \"company3-456bb.firebaseapp.com\",\n//   projectId: \"company3-456bb\",\n//   storageBucket: \"company3-456bb.appspot.com\",\n//   messagingSenderId: \"310033686522\",\n//   appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n//   measurementId: \"G-PFLDQY00DB\"\n// };\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
@@ -256,7 +256,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \***************************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n\n\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\nvar projectCards = {};\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = '^ Stäng detaljer';\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = '> Mer information';\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert('The initiate project page should now be loaded');\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedOngoingWorkCard\\\">\\n        <div class=\\\"flex-container ongoingCard\\\" id=\\\"\".concat(this.projectId, \"\\\">\\n            <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n                <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n            </div>\\n            <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n            </div>\\n\\n            <button data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>\\n\\n\\n            <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n                <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n                    <p id=\\\"ongoingSeeDetailsButton\").concat(this.id, \"\\\" class = \\\"moreInfoClass\\\">> Mer information</p>\\n                </div>\\n            </div>\\n        </div> \\n        <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n            <div class =\\\"expandedTextOngoingWorkCard\\\">\\n            \").concat(this.description, \"\\n            </div>\\n        </div>\\n        </div> \");\n    }\n  }]);\n  return projectCard;\n}();\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var container;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          container = document.querySelector('#container-fluid');\n          if (container) {\n            _context.next = 3;\n            break;\n          }\n          return _context.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          projectCards = {};\n          fetch('currentProjects/currentProjects.html').then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement('div');\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector('.filterBar');\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error('Failed to load the external HTML file:', error);\n          });\n          getProjects(container, listenersLoaded);\n        case 6:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\nfunction getProjects(selectElement, listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var _this = this;\n    var data, id;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)({});\n        case 2:\n          data = _context3.sent;\n          id = 0;\n          data.forEach(function (project) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n              var title, department, name, description, i, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                while (1) switch (_context2.prev = _context2.next) {\n                  case 0:\n                    title = project.name;\n                    _context2.next = 3;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)('unit', project.unitId);\n                  case 3:\n                    department = _context2.sent;\n                    if (!department) {\n                      _context2.next = 21;\n                      break;\n                    }\n                    name = \"Projektledare\"; //Waiting for backend fix\n                    description = project.content;\n                    i = id;\n                    card = new projectCard(i, name, department.name, title, description, project.id);\n                    projectCards[i] = card;\n                    cardHTML = card.generateHTML();\n                    addEventListener(listenersLoaded, project.id, card);\n                    div = document.createElement('div');\n                    div.className = 'projectCardCardDiv'; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context2.next = 17;\n                      break;\n                    }\n                    return _context2.abrupt(\"return\");\n                  case 17:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    id++;\n                    _context2.next = 22;\n                    break;\n                  case 21:\n                    console.log(project.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist \n                  case 22:\n                  case \"end\":\n                    return _context2.stop();\n                }\n              }, _callee2);\n            }));\n          });\n        case 5:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction addEventListener(listenersLoaded, projectId, card) {\n  if (!listenersLoaded) {\n    $(document).on('click', '#' + projectId, function (event) {\n      var element = event.target;\n      if (element.classList.contains('moreInfoClass')) {\n        var expandedDiv = document.getElementById('expandedOngoingWorkCard' + projectId);\n        if (expandedDiv && expandedDiv.style.display === 'none') {\n          card.showMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n        } else {\n          card.closeMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n        }\n      } else {\n        (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n      }\n    });\n  }\n}\n\n//# sourceURL=webpack://c3/./client/currentProjects/currentProjects.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n\n\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\nvar projectCards = {};\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId, currentStage) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n    this.stage = currentStage;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = '^ Stäng detaljer';\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = '> Mer information';\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert('The initiate project page should now be loaded');\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedOngoingWorkCard\\\">\\n        <div class=\\\"flex-container ongoingCard\\\" id=\\\"\".concat(this.projectId, \"\\\">\\n            <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n                <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n            </div>\\n            <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n            </div>\\n\\n            <button data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>\\n\\n            <div class=\\\"statusText\\\">\\n            Status: \").concat(this.stage, \"\\n            </div>\\n            <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n                <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n                    <p id=\\\"ongoingSeeDetailsButton\").concat(this.id, \"\\\" class = \\\"moreInfoClass\\\">>Mer information</p>\\n                </div>\\n            </div>\\n        </div> \\n        <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n            <div class =\\\"expandedTextOngoingWorkCard\\\">\\n            \").concat(this.description, \"\\n            </div>\\n        </div>\\n        </div> \");\n    }\n  }]);\n  return projectCard;\n}();\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var container;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          container = document.querySelector('#container-fluid');\n          if (container) {\n            _context.next = 3;\n            break;\n          }\n          return _context.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          projectCards = {};\n          fetch('currentProjects/currentProjects.html').then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement('div');\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector('.filterBar');\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error('Failed to load the external HTML file:', error);\n          });\n          getProjects(container, listenersLoaded);\n        case 6:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\nfunction getProjects(selectElement, listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var _this = this;\n    var data, id;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)({});\n        case 2:\n          data = _context3.sent;\n          id = 0;\n          data.forEach(function (project) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n              var title, department, name, description, i, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                while (1) switch (_context2.prev = _context2.next) {\n                  case 0:\n                    title = project.name;\n                    _context2.next = 3;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)('unit', project.unitId);\n                  case 3:\n                    department = _context2.sent;\n                    if (!department) {\n                      _context2.next = 21;\n                      break;\n                    }\n                    name = \"Projektledare\"; //Waiting for backend fix\n                    description = project.content;\n                    i = id;\n                    card = new projectCard(i, name, department.name, title, description, project.id, project.currentStage);\n                    projectCards[i] = card;\n                    cardHTML = card.generateHTML();\n                    addEventListener(listenersLoaded, project.id, card);\n                    div = document.createElement('div');\n                    div.className = 'projectCardCardDiv'; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context2.next = 17;\n                      break;\n                    }\n                    return _context2.abrupt(\"return\");\n                  case 17:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    id++;\n                    _context2.next = 22;\n                    break;\n                  case 21:\n                    console.log(project.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist \n                  case 22:\n                  case \"end\":\n                    return _context2.stop();\n                }\n              }, _callee2);\n            }));\n          });\n        case 5:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction addEventListener(listenersLoaded, projectId, card) {\n  if (!listenersLoaded) {\n    $(document).on('click', '#' + projectId, function (event) {\n      var element = event.target;\n      if (element.classList.contains('moreInfoClass')) {\n        var expandedDiv = document.getElementById('expandedOngoingWorkCard' + projectId);\n        if (expandedDiv && expandedDiv.style.display === 'none') {\n          card.showMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n        } else {\n          card.closeMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n        }\n      } else if (element.classList.contains('projectButton')) {\n        var currentStage = card.stage;\n        if (currentStage === 'Agera') {\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n        } else if (currentStage === 'Studera') {\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n        } else if (currentStage === 'Göra') {\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n        } else if (currentStage === 'Planera') {\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n        } else if (currentStage === 'Avslutat') {\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n        }\n      }\n    });\n  }\n}\n\n//# sourceURL=webpack://c3/./client/currentProjects/currentProjects.js?");
 
 /***/ }),
 
@@ -316,7 +316,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \********************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toCurrentProjects');\n  if (!container) return; // Stop if the container isn't found\n  fetch('projectPage/ProjectPageA.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageA');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.id === 'toCurrentProjects') {\n      finalize(projectId);\n    } else if (target.id === 'toP') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageP)(projectId);\n    } else if (target.id === 'toG') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageG)(projectId);\n    } else if (target.id === 'toS') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageS)(projectId);\n    }\n  });\n  function initializeTooltips() {\n    // Use jQuery to select the elements and initialize the tooltip\n    $('[data-toggle=\"tooltip\"]').tooltip({\n      delay: {\n        \"show\": 0,\n        \"hide\": 100\n      }\n    });\n  }\n}\nfunction finalize(projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var user, userId;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          user = localStorage.getItem('user');\n          if (user) {\n            userId = JSON.parse(user)[0].id;\n          }\n          console.log(userId);\n          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.finalizeImprovementWork)(userId, projectId);\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadCurrentProjects)();\n        case 5:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageA.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction updateStage(stage, id) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.updateInstance)(\"improvementWork\", id, {\n            currentStage: stage\n          });\n        case 1:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toCurrentProjects');\n  if (!container) return; // Stop if the container isn't found\n  updateStage(\"Agera\", projectId);\n  fetch('projectPage/ProjectPageA.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageA');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.id === 'toCurrentProjects') {\n      updateStage(\"Avslutat\", projectId);\n      finalize(projectId);\n    } else if (target.id === 'toP') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageP)(projectId);\n    } else if (target.id === 'toG') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageG)(projectId);\n    } else if (target.id === 'toS') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageS)(projectId);\n    }\n  });\n  function initializeTooltips() {\n    // Use jQuery to select the elements and initialize the tooltip\n    $('[data-toggle=\"tooltip\"]').tooltip({\n      delay: {\n        \"show\": 0,\n        \"hide\": 100\n      }\n    });\n  }\n}\nfunction finalize(projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var user, userId;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          user = localStorage.getItem('user');\n          if (user) {\n            userId = JSON.parse(user)[0].id;\n          }\n          console.log(userId);\n          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.finalizeImprovementWork)(userId, projectId);\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadCurrentProjects)();\n        case 5:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageA.js?");
 
 /***/ }),
 
@@ -326,7 +326,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \********************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toS');\n  if (!container) return; // Stop if the container isn't found\n  fetch('projectPage/ProjectPageG.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageG');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  })[\"catch\"](function (error) {\n    console.error('Failed to load the external HTML file:', error);\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.id === 'toS') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageS)(projectId);\n    } else if (target.id === 'toP') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageP)(projectId);\n    }\n  });\n  function initializeTooltips() {\n    // Use jQuery to select the elements and initialize the tooltip\n    $('[data-toggle=\"tooltip\"]').tooltip({\n      delay: {\n        \"show\": 0,\n        \"hide\": 100\n      }\n    });\n  }\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageG.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\nfunction updateStage(stage, id) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.updateInstance)(\"improvementWork\", id, {\n            currentStage: stage\n          });\n        case 1:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toS');\n  if (!container) return; // Stop if the container isn't found\n  updateStage(\"Göra\", projectId);\n  fetch('projectPage/ProjectPageG.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageG');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  })[\"catch\"](function (error) {\n    console.error('Failed to load the external HTML file:', error);\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.id === 'toS') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageS)(projectId);\n    } else if (target.id === 'toP') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageP)(projectId);\n    }\n  });\n  function initializeTooltips() {\n    // Use jQuery to select the elements and initialize the tooltip\n    $('[data-toggle=\"tooltip\"]').tooltip({\n      delay: {\n        \"show\": 0,\n        \"hide\": 100\n      }\n    });\n  }\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageG.js?");
 
 /***/ }),
 
@@ -336,7 +336,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \********************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toG');\n  if (!container) return; // Stop if the container isn't found\n  fetch('projectPage/ProjectPageP.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageP');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  })[\"catch\"](function (error) {\n    console.error('Failed to load the external HTML file:', error);\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.matches('[data-toggle=\"tooltip\"]') && !target.dataset.tooltipInitialized) {\n      $(target).tooltip();\n      target.dataset.tooltipInitialized = 'true';\n    }\n    if (target.id === 'toG') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageG)(projectId);\n    }\n  });\n  loadImprovementWorkDataPageP(projectId);\n}\nfunction initializeTooltips() {\n  // Use jQuery to select the elements and initialize the tooltip\n  $('[data-toggle=\"tooltip\"]').tooltip({\n    delay: {\n      \"show\": 0,\n      \"hide\": 100\n    }\n  });\n}\nfunction loadImprovementWorkDataPageP(projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var data;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.getObjectById)('improvementWork', projectId);\n        case 2:\n          data = _context.sent;\n          console.log(data.name);\n        case 4:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageP.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\nfunction updateStage(stage, id) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.updateInstance)(\"improvementWork\", id, {\n            currentStage: stage\n          });\n        case 1:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toG');\n  if (!container) return; // Stop if the container isn't found\n  updateStage(\"Planera\", projectId);\n  fetch('projectPage/ProjectPageP.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageP');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  })[\"catch\"](function (error) {\n    console.error('Failed to load the external HTML file:', error);\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.matches('[data-toggle=\"tooltip\"]') && !target.dataset.tooltipInitialized) {\n      $(target).tooltip();\n      target.dataset.tooltipInitialized = 'true';\n    }\n    if (target.id === 'toG') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageG)(projectId);\n    }\n  });\n  loadImprovementWorkDataPageP(projectId);\n}\nfunction initializeTooltips() {\n  // Use jQuery to select the elements and initialize the tooltip\n  $('[data-toggle=\"tooltip\"]').tooltip({\n    delay: {\n      \"show\": 0,\n      \"hide\": 100\n    }\n  });\n}\nfunction loadImprovementWorkDataPageP(projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var data;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.getObjectById)('improvementWork', projectId);\n        case 2:\n          data = _context2.sent;\n          console.log(data.name);\n        case 4:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageP.js?");
 
 /***/ }),
 
@@ -346,7 +346,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \********************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toA');\n  if (!container) return; // Stop if the container isn't found\n  fetch('projectPage/ProjectPageS.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageS');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.id === 'toA') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageA)(projectId);\n    } else if (target.id === 'toP') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageP)(projectId);\n    } else if (target.id === 'toG') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageG)(projectId);\n    }\n  });\n  function initializeTooltips() {\n    // Use jQuery to select the elements and initialize the tooltip\n    $('[data-toggle=\"tooltip\"]').tooltip({\n      delay: {\n        \"show\": 0,\n        \"hide\": 100\n      }\n    });\n  }\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageS.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\nfunction updateStage(stage, id) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.updateInstance)(\"improvementWork\", id, {\n            currentStage: stage\n          });\n        case 1:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\nfunction loadPage(projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var container, nextPageButton, initializeTooltips;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          initializeTooltips = function _initializeTooltips() {\n            // Use jQuery to select the elements and initialize the tooltip\n            $('[data-toggle=\"tooltip\"]').tooltip({\n              delay: {\n                \"show\": 0,\n                \"hide\": 100\n              }\n            });\n          };\n          container = document.querySelector('#container-fluid');\n          nextPageButton = document.getElementById('toA');\n          if (container) {\n            _context2.next = 5;\n            break;\n          }\n          return _context2.abrupt(\"return\");\n        case 5:\n          // Stop if the container isn't found\n          updateStage(\"Studera\", projectId);\n          fetch('projectPage/ProjectPageS.html').then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement('div');\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector('.wholePageS');\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n              initializeTooltips();\n            }\n          });\n          container.addEventListener('click', function (event) {\n            var target = event.target; // Type assertion\n            if (target.id === 'toA') {\n              (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageA)(projectId);\n            } else if (target.id === 'toP') {\n              (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageP)(projectId);\n            } else if (target.id === 'toG') {\n              (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageG)(projectId);\n            }\n          });\n        case 8:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageS.js?");
 
 /***/ }),
 
diff --git a/client/dist/homePage.bundle.js b/client/dist/homePage.bundle.js
index 6333bbe0d8780a6c629fe4c01f1c6829ab078418..12c33be211042eb506f6be72d589bc8e44394c63 100644
--- a/client/dist/homePage.bundle.js
+++ b/client/dist/homePage.bundle.js
@@ -106,7 +106,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n// const firebaseConfig = {\n//   apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n//   authDomain: \"company3-456bb.firebaseapp.com\",\n//   projectId: \"company3-456bb\",\n//   storageBucket: \"company3-456bb.appspot.com\",\n//   messagingSenderId: \"310033686522\",\n//   appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n//   measurementId: \"G-PFLDQY00DB\"\n// };\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
diff --git a/client/dist/ideaBank.bundle.js b/client/dist/ideaBank.bundle.js
index b05cf7aa70f42420700ecf94c5596a0eea3745c5..799d54695fd349df7996f5113aa87b884af45949 100644
--- a/client/dist/ideaBank.bundle.js
+++ b/client/dist/ideaBank.bundle.js
@@ -96,7 +96,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n// const firebaseConfig = {\n//   apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n//   authDomain: \"company3-456bb.firebaseapp.com\",\n//   projectId: \"company3-456bb\",\n//   storageBucket: \"company3-456bb.appspot.com\",\n//   messagingSenderId: \"310033686522\",\n//   appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n//   measurementId: \"G-PFLDQY00DB\"\n// };\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
diff --git a/client/dist/initiateIdea.bundle.js b/client/dist/initiateIdea.bundle.js
index 46fd71f91dcd9749a8cdd64a0c09f1b6de1aee61..883576eb89d38048eb8d8ac3a259d50444e1aa26 100644
--- a/client/dist/initiateIdea.bundle.js
+++ b/client/dist/initiateIdea.bundle.js
@@ -96,7 +96,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n// const firebaseConfig = {\n//   apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n//   authDomain: \"company3-456bb.firebaseapp.com\",\n//   projectId: \"company3-456bb\",\n//   storageBucket: \"company3-456bb.appspot.com\",\n//   messagingSenderId: \"310033686522\",\n//   appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n//   measurementId: \"G-PFLDQY00DB\"\n// };\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
diff --git a/client/dist/login.bundle.js b/client/dist/login.bundle.js
index f2ae46fdfcf16cf798afdbb143fed94f6ca424c2..84f64fa912049bdaf7de63c22bad181266fe6a58 100644
--- a/client/dist/login.bundle.js
+++ b/client/dist/login.bundle.js
@@ -106,7 +106,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n// const firebaseConfig = {\n//   apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n//   authDomain: \"company3-456bb.firebaseapp.com\",\n//   projectId: \"company3-456bb\",\n//   storageBucket: \"company3-456bb.appspot.com\",\n//   messagingSenderId: \"310033686522\",\n//   appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n//   measurementId: \"G-PFLDQY00DB\"\n// };\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
diff --git a/client/dist/makeSuggestion.bundle.js b/client/dist/makeSuggestion.bundle.js
index 36f3be6a228c428f2a4284e2198bb8659674ec5f..49dd351ab69ed91065fbcf527a9f55f4aa514a9d 100644
--- a/client/dist/makeSuggestion.bundle.js
+++ b/client/dist/makeSuggestion.bundle.js
@@ -96,7 +96,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n// const firebaseConfig = {\n//   apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n//   authDomain: \"company3-456bb.firebaseapp.com\",\n//   projectId: \"company3-456bb\",\n//   storageBucket: \"company3-456bb.appspot.com\",\n//   messagingSenderId: \"310033686522\",\n//   appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n//   measurementId: \"G-PFLDQY00DB\"\n// };\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
diff --git a/client/dist/pageHandler.bundle.js b/client/dist/pageHandler.bundle.js
index 4a4747974db7823552b92822dee60e5b787e3f1b..f4a2979a456b9d36b9a5a56a237eeb9d95ab6c2d 100644
--- a/client/dist/pageHandler.bundle.js
+++ b/client/dist/pageHandler.bundle.js
@@ -106,7 +106,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n// const firebaseConfig = {\n//   apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n//   authDomain: \"company3-456bb.firebaseapp.com\",\n//   projectId: \"company3-456bb\",\n//   storageBucket: \"company3-456bb.appspot.com\",\n//   messagingSenderId: \"310033686522\",\n//   appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n//   measurementId: \"G-PFLDQY00DB\"\n// };\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
@@ -256,7 +256,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \***************************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n\n\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\nvar projectCards = {};\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = '^ Stäng detaljer';\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = '> Mer information';\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert('The initiate project page should now be loaded');\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedOngoingWorkCard\\\">\\n        <div class=\\\"flex-container ongoingCard\\\" id=\\\"\".concat(this.projectId, \"\\\">\\n            <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n                <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n            </div>\\n            <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n            </div>\\n\\n            <button data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>\\n\\n\\n            <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n                <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n                    <p id=\\\"ongoingSeeDetailsButton\").concat(this.id, \"\\\" class = \\\"moreInfoClass\\\">> Mer information</p>\\n                </div>\\n            </div>\\n        </div> \\n        <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n            <div class =\\\"expandedTextOngoingWorkCard\\\">\\n            \").concat(this.description, \"\\n            </div>\\n        </div>\\n        </div> \");\n    }\n  }]);\n  return projectCard;\n}();\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var container;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          container = document.querySelector('#container-fluid');\n          if (container) {\n            _context.next = 3;\n            break;\n          }\n          return _context.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          projectCards = {};\n          fetch('currentProjects/currentProjects.html').then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement('div');\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector('.filterBar');\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error('Failed to load the external HTML file:', error);\n          });\n          getProjects(container, listenersLoaded);\n        case 6:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\nfunction getProjects(selectElement, listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var _this = this;\n    var data, id;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)({});\n        case 2:\n          data = _context3.sent;\n          id = 0;\n          data.forEach(function (project) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n              var title, department, name, description, i, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                while (1) switch (_context2.prev = _context2.next) {\n                  case 0:\n                    title = project.name;\n                    _context2.next = 3;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)('unit', project.unitId);\n                  case 3:\n                    department = _context2.sent;\n                    if (!department) {\n                      _context2.next = 21;\n                      break;\n                    }\n                    name = \"Projektledare\"; //Waiting for backend fix\n                    description = project.content;\n                    i = id;\n                    card = new projectCard(i, name, department.name, title, description, project.id);\n                    projectCards[i] = card;\n                    cardHTML = card.generateHTML();\n                    addEventListener(listenersLoaded, project.id, card);\n                    div = document.createElement('div');\n                    div.className = 'projectCardCardDiv'; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context2.next = 17;\n                      break;\n                    }\n                    return _context2.abrupt(\"return\");\n                  case 17:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    id++;\n                    _context2.next = 22;\n                    break;\n                  case 21:\n                    console.log(project.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist \n                  case 22:\n                  case \"end\":\n                    return _context2.stop();\n                }\n              }, _callee2);\n            }));\n          });\n        case 5:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction addEventListener(listenersLoaded, projectId, card) {\n  if (!listenersLoaded) {\n    $(document).on('click', '#' + projectId, function (event) {\n      var element = event.target;\n      if (element.classList.contains('moreInfoClass')) {\n        var expandedDiv = document.getElementById('expandedOngoingWorkCard' + projectId);\n        if (expandedDiv && expandedDiv.style.display === 'none') {\n          card.showMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n        } else {\n          card.closeMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n        }\n      } else {\n        (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n      }\n    });\n  }\n}\n\n//# sourceURL=webpack://c3/./client/currentProjects/currentProjects.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n\n\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\nvar projectCards = {};\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId, currentStage) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n    this.stage = currentStage;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = '^ Stäng detaljer';\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = '> Mer information';\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert('The initiate project page should now be loaded');\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedOngoingWorkCard\\\">\\n        <div class=\\\"flex-container ongoingCard\\\" id=\\\"\".concat(this.projectId, \"\\\">\\n            <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n                <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n            </div>\\n            <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n            </div>\\n\\n            <button data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>\\n\\n            <div class=\\\"statusText\\\">\\n            Status: \").concat(this.stage, \"\\n            </div>\\n            <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n                <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n                    <p id=\\\"ongoingSeeDetailsButton\").concat(this.id, \"\\\" class = \\\"moreInfoClass\\\">>Mer information</p>\\n                </div>\\n            </div>\\n        </div> \\n        <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n            <div class =\\\"expandedTextOngoingWorkCard\\\">\\n            \").concat(this.description, \"\\n            </div>\\n        </div>\\n        </div> \");\n    }\n  }]);\n  return projectCard;\n}();\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var container;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          container = document.querySelector('#container-fluid');\n          if (container) {\n            _context.next = 3;\n            break;\n          }\n          return _context.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          projectCards = {};\n          fetch('currentProjects/currentProjects.html').then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement('div');\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector('.filterBar');\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error('Failed to load the external HTML file:', error);\n          });\n          getProjects(container, listenersLoaded);\n        case 6:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\nfunction getProjects(selectElement, listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var _this = this;\n    var data, id;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)({});\n        case 2:\n          data = _context3.sent;\n          id = 0;\n          data.forEach(function (project) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n              var title, department, name, description, i, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                while (1) switch (_context2.prev = _context2.next) {\n                  case 0:\n                    title = project.name;\n                    _context2.next = 3;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)('unit', project.unitId);\n                  case 3:\n                    department = _context2.sent;\n                    if (!department) {\n                      _context2.next = 21;\n                      break;\n                    }\n                    name = \"Projektledare\"; //Waiting for backend fix\n                    description = project.content;\n                    i = id;\n                    card = new projectCard(i, name, department.name, title, description, project.id, project.currentStage);\n                    projectCards[i] = card;\n                    cardHTML = card.generateHTML();\n                    addEventListener(listenersLoaded, project.id, card);\n                    div = document.createElement('div');\n                    div.className = 'projectCardCardDiv'; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context2.next = 17;\n                      break;\n                    }\n                    return _context2.abrupt(\"return\");\n                  case 17:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    id++;\n                    _context2.next = 22;\n                    break;\n                  case 21:\n                    console.log(project.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist \n                  case 22:\n                  case \"end\":\n                    return _context2.stop();\n                }\n              }, _callee2);\n            }));\n          });\n        case 5:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction addEventListener(listenersLoaded, projectId, card) {\n  if (!listenersLoaded) {\n    $(document).on('click', '#' + projectId, function (event) {\n      var element = event.target;\n      if (element.classList.contains('moreInfoClass')) {\n        var expandedDiv = document.getElementById('expandedOngoingWorkCard' + projectId);\n        if (expandedDiv && expandedDiv.style.display === 'none') {\n          card.showMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n        } else {\n          card.closeMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n        }\n      } else if (element.classList.contains('projectButton')) {\n        var currentStage = card.stage;\n        if (currentStage === 'Agera') {\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n        } else if (currentStage === 'Studera') {\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n        } else if (currentStage === 'Göra') {\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n        } else if (currentStage === 'Planera') {\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n        } else if (currentStage === 'Avslutat') {\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n        }\n      }\n    });\n  }\n}\n\n//# sourceURL=webpack://c3/./client/currentProjects/currentProjects.js?");
 
 /***/ }),
 
@@ -316,7 +316,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \********************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toCurrentProjects');\n  if (!container) return; // Stop if the container isn't found\n  fetch('projectPage/ProjectPageA.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageA');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.id === 'toCurrentProjects') {\n      finalize(projectId);\n    } else if (target.id === 'toP') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageP)(projectId);\n    } else if (target.id === 'toG') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageG)(projectId);\n    } else if (target.id === 'toS') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageS)(projectId);\n    }\n  });\n  function initializeTooltips() {\n    // Use jQuery to select the elements and initialize the tooltip\n    $('[data-toggle=\"tooltip\"]').tooltip({\n      delay: {\n        \"show\": 0,\n        \"hide\": 100\n      }\n    });\n  }\n}\nfunction finalize(projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var user, userId;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          user = localStorage.getItem('user');\n          if (user) {\n            userId = JSON.parse(user)[0].id;\n          }\n          console.log(userId);\n          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.finalizeImprovementWork)(userId, projectId);\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadCurrentProjects)();\n        case 5:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageA.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction updateStage(stage, id) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.updateInstance)(\"improvementWork\", id, {\n            currentStage: stage\n          });\n        case 1:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toCurrentProjects');\n  if (!container) return; // Stop if the container isn't found\n  updateStage(\"Agera\", projectId);\n  fetch('projectPage/ProjectPageA.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageA');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.id === 'toCurrentProjects') {\n      updateStage(\"Avslutat\", projectId);\n      finalize(projectId);\n    } else if (target.id === 'toP') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageP)(projectId);\n    } else if (target.id === 'toG') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageG)(projectId);\n    } else if (target.id === 'toS') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageS)(projectId);\n    }\n  });\n  function initializeTooltips() {\n    // Use jQuery to select the elements and initialize the tooltip\n    $('[data-toggle=\"tooltip\"]').tooltip({\n      delay: {\n        \"show\": 0,\n        \"hide\": 100\n      }\n    });\n  }\n}\nfunction finalize(projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var user, userId;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          user = localStorage.getItem('user');\n          if (user) {\n            userId = JSON.parse(user)[0].id;\n          }\n          console.log(userId);\n          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.finalizeImprovementWork)(userId, projectId);\n          (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadCurrentProjects)();\n        case 5:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageA.js?");
 
 /***/ }),
 
@@ -326,7 +326,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \********************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toS');\n  if (!container) return; // Stop if the container isn't found\n  fetch('projectPage/ProjectPageG.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageG');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  })[\"catch\"](function (error) {\n    console.error('Failed to load the external HTML file:', error);\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.id === 'toS') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageS)(projectId);\n    } else if (target.id === 'toP') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageP)(projectId);\n    }\n  });\n  function initializeTooltips() {\n    // Use jQuery to select the elements and initialize the tooltip\n    $('[data-toggle=\"tooltip\"]').tooltip({\n      delay: {\n        \"show\": 0,\n        \"hide\": 100\n      }\n    });\n  }\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageG.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\nfunction updateStage(stage, id) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.updateInstance)(\"improvementWork\", id, {\n            currentStage: stage\n          });\n        case 1:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toS');\n  if (!container) return; // Stop if the container isn't found\n  updateStage(\"Göra\", projectId);\n  fetch('projectPage/ProjectPageG.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageG');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  })[\"catch\"](function (error) {\n    console.error('Failed to load the external HTML file:', error);\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.id === 'toS') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageS)(projectId);\n    } else if (target.id === 'toP') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageP)(projectId);\n    }\n  });\n  function initializeTooltips() {\n    // Use jQuery to select the elements and initialize the tooltip\n    $('[data-toggle=\"tooltip\"]').tooltip({\n      delay: {\n        \"show\": 0,\n        \"hide\": 100\n      }\n    });\n  }\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageG.js?");
 
 /***/ }),
 
@@ -336,7 +336,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \********************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toG');\n  if (!container) return; // Stop if the container isn't found\n  fetch('projectPage/ProjectPageP.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageP');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  })[\"catch\"](function (error) {\n    console.error('Failed to load the external HTML file:', error);\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.matches('[data-toggle=\"tooltip\"]') && !target.dataset.tooltipInitialized) {\n      $(target).tooltip();\n      target.dataset.tooltipInitialized = 'true';\n    }\n    if (target.id === 'toG') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageG)(projectId);\n    }\n  });\n  loadImprovementWorkDataPageP(projectId);\n}\nfunction initializeTooltips() {\n  // Use jQuery to select the elements and initialize the tooltip\n  $('[data-toggle=\"tooltip\"]').tooltip({\n    delay: {\n      \"show\": 0,\n      \"hide\": 100\n    }\n  });\n}\nfunction loadImprovementWorkDataPageP(projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var data;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.getObjectById)('improvementWork', projectId);\n        case 2:\n          data = _context.sent;\n          console.log(data.name);\n        case 4:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageP.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\nfunction updateStage(stage, id) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.updateInstance)(\"improvementWork\", id, {\n            currentStage: stage\n          });\n        case 1:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toG');\n  if (!container) return; // Stop if the container isn't found\n  updateStage(\"Planera\", projectId);\n  fetch('projectPage/ProjectPageP.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageP');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  })[\"catch\"](function (error) {\n    console.error('Failed to load the external HTML file:', error);\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.matches('[data-toggle=\"tooltip\"]') && !target.dataset.tooltipInitialized) {\n      $(target).tooltip();\n      target.dataset.tooltipInitialized = 'true';\n    }\n    if (target.id === 'toG') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageG)(projectId);\n    }\n  });\n  loadImprovementWorkDataPageP(projectId);\n}\nfunction initializeTooltips() {\n  // Use jQuery to select the elements and initialize the tooltip\n  $('[data-toggle=\"tooltip\"]').tooltip({\n    delay: {\n      \"show\": 0,\n      \"hide\": 100\n    }\n  });\n}\nfunction loadImprovementWorkDataPageP(projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var data;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.getObjectById)('improvementWork', projectId);\n        case 2:\n          data = _context2.sent;\n          console.log(data.name);\n        case 4:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageP.js?");
 
 /***/ }),
 
@@ -346,7 +346,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \********************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n\nfunction loadPage(projectId) {\n  var container = document.querySelector('#container-fluid');\n  var nextPageButton = document.getElementById('toA');\n  if (!container) return; // Stop if the container isn't found\n  fetch('projectPage/ProjectPageS.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.wholePageS');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n      initializeTooltips();\n    }\n  });\n  container.addEventListener('click', function (event) {\n    var target = event.target; // Type assertion\n    if (target.id === 'toA') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageA)(projectId);\n    } else if (target.id === 'toP') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageP)(projectId);\n    } else if (target.id === 'toG') {\n      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageG)(projectId);\n    }\n  });\n  function initializeTooltips() {\n    // Use jQuery to select the elements and initialize the tooltip\n    $('[data-toggle=\"tooltip\"]').tooltip({\n      delay: {\n        \"show\": 0,\n        \"hide\": 100\n      }\n    });\n  }\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageS.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\nfunction updateStage(stage, id) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_1__.updateInstance)(\"improvementWork\", id, {\n            currentStage: stage\n          });\n        case 1:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee);\n  }));\n}\nfunction loadPage(projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var container, nextPageButton, initializeTooltips;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          initializeTooltips = function _initializeTooltips() {\n            // Use jQuery to select the elements and initialize the tooltip\n            $('[data-toggle=\"tooltip\"]').tooltip({\n              delay: {\n                \"show\": 0,\n                \"hide\": 100\n              }\n            });\n          };\n          container = document.querySelector('#container-fluid');\n          nextPageButton = document.getElementById('toA');\n          if (container) {\n            _context2.next = 5;\n            break;\n          }\n          return _context2.abrupt(\"return\");\n        case 5:\n          // Stop if the container isn't found\n          updateStage(\"Studera\", projectId);\n          fetch('projectPage/ProjectPageS.html').then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement('div');\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector('.wholePageS');\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n              initializeTooltips();\n            }\n          });\n          container.addEventListener('click', function (event) {\n            var target = event.target; // Type assertion\n            if (target.id === 'toA') {\n              (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageA)(projectId);\n            } else if (target.id === 'toP') {\n              (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageP)(projectId);\n            } else if (target.id === 'toG') {\n              (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_0__.loadProjectPageG)(projectId);\n            }\n          });\n        case 8:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPageS.js?");
 
 /***/ }),
 
diff --git a/client/dist/register.bundle.js b/client/dist/register.bundle.js
index 3a7dd5dbe6c1ca6b2e4a5efe69c5a5d852c9adf6..44ef20af4e11542dea3f767cba183a251c22338f 100644
--- a/client/dist/register.bundle.js
+++ b/client/dist/register.bundle.js
@@ -106,7 +106,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n// const firebaseConfig = {\n//   apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n//   authDomain: \"company3-456bb.firebaseapp.com\",\n//   projectId: \"company3-456bb\",\n//   storageBucket: \"company3-456bb.appspot.com\",\n//   messagingSenderId: \"310033686522\",\n//   appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n//   measurementId: \"G-PFLDQY00DB\"\n// };\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef, unitRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          // Atomically add user to unit.\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(unitRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userRef.id)\n          });\n        case 7:\n          _context.next = 12;\n          break;\n        case 9:\n          _context.prev = 9;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 12:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 9]]);\n  }));\n}\n//Adds a new improvementWork to the database\n// takes in Id, name, currentStage in PDSA, content, unitId refers to as string and if completed as boolean\n// throws error if transaction failed\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. \nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area,\n// patientRiskLevel: \"Green\" | \"Blue\" | \"Orange\" | \"Red\"\n//Questions in planning stage\np1, p2, p3, p4, p5, p6, p7,\n//Questions in Doing (G) stage\ng1, g2, g3, g4, g5,\n//Questions in stydy stage\ns1, s2, s3,\n//Questions in acting stage\na1, a2, a3, a4) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, {\n            id: improvementWorkRef.id,\n            currentStage: currentStage,\n            name: name,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            members: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4\n          });\n        case 4:\n          _context2.next = 10;\n          break;\n        case 6:\n          _context2.prev = 6;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 10:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 6]]);\n  }));\n}\n//create task to improvementWork\n// takes in improvementWorkId, name, deadline date, start date, stage in PDSA and content as string\n// throws error if transaction failed\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var ref, improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            members: []\n          });\n        case 4:\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // Atomically add task to the tasks array field.\n          _context3.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(taskId)\n          });\n        case 7:\n          _context3.next = 13;\n          break;\n        case 9:\n          _context3.prev = 9;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error creating task: \", _context3.t0);\n          throw _context3.t0;\n        case 13:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 9]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding document: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context5.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context5.next = 11;\n          break;\n        case 7:\n          _context5.prev = 7;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error adding document: \", _context5.t0);\n          throw _context5.t0;\n        case 11:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 7]]);\n  }));\n}\n//add a member to a improvementWork\n// takes in id, users HSAid, improvementWorks id as string and if is owner, is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var improvementWorkRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId); // return;\n          // Atomically update the members array in the improvementWork document\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(improvementWorkRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId); // Atomically add improvementWork to user\n          _context6.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            improvementWorks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              improvementWorkId: improvementWorkId,\n              isOwner: isOwner,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context6.next = 13;\n          break;\n        case 9:\n          _context6.prev = 9;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding member: \", _context6.t0);\n          throw _context6.t0;\n        case 13:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 9]]);\n  }));\n}\n//create a hospital\n// takes in ID, name as string\n// throws error if transaction failed\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var ref;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          ref = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context7.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(ref, {\n            id: ref.id,\n            name: name,\n            units: []\n          });\n        case 4:\n          _context7.next = 10;\n          break;\n        case 6:\n          _context7.prev = 6;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context7.t0);\n          throw _context7.t0;\n        case 10:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 6]]);\n  }));\n}\n//create a unit\n// takes in id, hospitals id and name as string\n// throws error if transaction failed\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var unitRef, hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context8.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, {\n            id: unitRef.id,\n            hospitalId: hospitalId,\n            name: name,\n            members: []\n          });\n        case 4:\n          // Atomically add unit to hospital.\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context8.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(hospitalRef, {\n            units: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(unitRef.id)\n          });\n        case 7:\n          _context8.next = 13;\n          break;\n        case 9:\n          _context8.prev = 9;\n          _context8.t0 = _context8[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context8.t0);\n          throw _context8.t0;\n        case 13:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 9]]);\n  }));\n}\n//adds a member to task\n// takes in ID, the added members hsaId, task id as string and if person is responsible as boolean\n// throws error if transaction failed\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var taskRef, userRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          // Atomically add a member to task.\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context9.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(taskRef, {\n            members: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              userHsaId: userHsaId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 4:\n          // Atomically add a task to user.\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          _context9.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(userRef, {\n            tasks: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)({\n              taskId: taskId,\n              isResponsibleFor: isResponsibleFor\n            })\n          });\n        case 7:\n          _context9.next = 13;\n          break;\n        case 9:\n          _context9.prev = 9;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error adding member: \", _context9.t0);\n          throw _context9.t0;\n        case 13:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 9]]);\n  }));\n}\n//creates a suggestion\n// takes in ID, the creators hsaId, name, content and the responding unitId as string\n// throws error if transaction failed\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var suggestionRef, commentCollection;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context10.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, {\n            id: suggestionRef.id,\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need: need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          });\n        case 4:\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 6:\n          commentCollection = _context10.sent;\n          _context10.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 9:\n          _context10.next = 15;\n          break;\n        case 11:\n          _context10.prev = 11;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context10.t0);\n          throw _context10.t0;\n        case 15:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 11]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context11.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context11.next = 10;\n          break;\n        case 6:\n          _context11.prev = 6;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 10:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context12.sent;\n          _context12.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context12.sent;\n          _context12.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context12.next = 16;\n          break;\n        case 12:\n          _context12.prev = 12;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context12.t0);\n          throw _context12.t0;\n        case 16:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context13.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context13.next = 11;\n          break;\n        case 7:\n          _context13.prev = 7;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context13.t0);\n          throw _context13.t0;\n        case 11:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context14.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context14.next = 11;\n          break;\n        case 7:\n          _context14.prev = 7;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error adding document: \", _context14.t0);\n          throw _context14.t0;\n        case 11:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context15.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context15.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context15.abrupt(\"return\", result);\n        case 10:\n          _context15.prev = 10;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context15.t0);\n          throw _context15.t0;\n        case 14:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context16.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context16.sent;\n          if (!docSnapshot.exists()) {\n            _context16.next = 9;\n            break;\n          }\n          return _context16.abrupt(\"return\", docSnapshot.data());\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context16.abrupt(\"return\", null);\n        case 11:\n          _context16.next = 17;\n          break;\n        case 13:\n          _context16.prev = 13;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.error(\"Error getting object\", _context16.t0);\n          throw _context16.t0;\n        case 17:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context17.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context17.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", comments);\n        case 11:\n          _context17.prev = 11;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context17.t0);\n          throw _context17.t0;\n        case 15:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context18.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context18.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context18.abrupt(\"return\", suggestions);\n        case 17:\n          _context18.prev = 17;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context18.t0);\n          throw _context18.t0;\n        case 21:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 17]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context19.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context19.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context19.abrupt(\"return\", hospitals);\n        case 14:\n          _context19.prev = 14;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context19.t0);\n          throw _context19.t0;\n        case 18:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context20.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context20.prev = 19;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context20.t0);\n          throw _context20.t0;\n        case 23:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 19]]);\n  }));\n}\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref5) {\n  var hsaId = _ref5.hsaId,\n    unitId = _ref5.unitId,\n    _ref5$ascendingFirstN = _ref5.ascendingFirstNames,\n    ascendingFirstNames = _ref5$ascendingFirstN === void 0 ? false : _ref5$ascendingFirstN,\n    uid = _ref5.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 10:\n          querySnapshot = _context21.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", users);\n        case 16:\n          _context21.prev = 16;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context21.t0);\n          throw _context21.t0;\n        case 20:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 16]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref6) {\n  var taskId = _ref6.taskId,\n    userId = _ref6.userId,\n    isResponsibleFor = _ref6.isResponsibleFor,\n    improvementWorkId = _ref6.improvementWorkId,\n    _ref6$ascendingDates = _ref6.ascendingDates,\n    ascendingDates = _ref6$ascendingDates === void 0 ? false : _ref6$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (taskId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", taskId));\n          }\n          if (userId && isResponsibleFor !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"members\", \"array-contains\", {\n              userHsaId: userId,\n              isResponsibleFor: isResponsibleFor\n            }));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context22.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", tasks);\n        case 15:\n          _context22.prev = 15;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context22.t0);\n          throw _context22.t0;\n        case 19:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 15]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref7) {\n  var unitId = _ref7.unitId,\n    hospitalId = _ref7.hospitalId,\n    name = _ref7.name,\n    _ref7$ascendingUnitNa = _ref7.ascendingUnitNames,\n    ascendingUnitNames = _ref7$ascendingUnitNa === void 0 ? false : _ref7$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context23.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", units);\n        case 15:\n          _context23.prev = 15;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context23.t0);\n          throw _context23.t0;\n        case 19:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 15]]);\n  }));\n}\n//getMembersFilteredAndSorted() -> Get all members of a project (sorted by firstName?)\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context24.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context24.next = 11;\n          break;\n        case 7:\n          _context24.prev = 7;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context24.t0);\n          throw _context24.t0;\n        case 11:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context26.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context26.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n              return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n                while (1) switch (_context25.prev = _context25.next) {\n                  case 0:\n                    _context25.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context25.stop();\n                }\n              }, _callee25);\n            }));\n          });\n          _context26.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context26.next = 15;\n          break;\n        case 11:\n          _context26.prev = 11;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context26.t0);\n          throw _context26.t0;\n        case 15:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context27.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context27.next = 11;\n          break;\n        case 7:\n          _context27.prev = 7;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context27.t0);\n          throw _context27.t0;\n        case 11:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          _context28.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context28.sent;\n          _context28.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context28.sent;\n          if (!(!user || !user.manager)) {\n            _context28.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context28.next = 18;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context28.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context28.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context28.next = 25;\n          break;\n        case 21:\n          _context28.prev = 21;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context28.t0);\n          throw _context28.t0;\n        case 25:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 21]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          _context29.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context29.sent;\n          _context29.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context29.sent;\n          if (!(!user || !user.manager)) {\n            _context29.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context29.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context29.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context29.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context29.next = 25;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context29.t0);\n          throw _context29.t0;\n        case 25:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          _context30.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context30.sent;\n          if (!(!user || !user.manager)) {\n            _context30.next = 8;\n            break;\n          }\n          throw new Error(\"User can't finalize improvementWork status\");\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context30.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          _context30.next = 16;\n          break;\n        case 13:\n          _context30.prev = 13;\n          _context30.t0 = _context30[\"catch\"](0);\n          console.log(_context30.t0);\n        case 16:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 13]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
diff --git a/client/projectPage/projectPageA.js b/client/projectPage/projectPageA.js
index 0fbc9f98a6f685073075b81fa0fc2197ab35d2ba..442afe8062b4b5fb4491f0a7df24c54d09bd6a4f 100644
--- a/client/projectPage/projectPageA.js
+++ b/client/projectPage/projectPageA.js
@@ -8,13 +8,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
     });
 };
 import { loadCurrentProjects } from "../SidebarAndHeader/pageHandler.js";
-import { finalizeImprovementWork } from "../Database/database.js";
 import { loadProjectPageP, loadProjectPageS, loadProjectPageG } from "../SidebarAndHeader/pageHandler.js";
+import { updateInstance, finalizeImprovementWork } from "../Database/database.js";
+function updateStage(stage, id) {
+    return __awaiter(this, void 0, void 0, function* () {
+        updateInstance("improvementWork", id, { currentStage: stage });
+    });
+}
 export function loadPage(projectId) {
     const container = document.querySelector('#container-fluid');
     const nextPageButton = document.getElementById('toCurrentProjects');
     if (!container)
         return; // Stop if the container isn't found
+    updateStage("Agera", projectId);
     fetch('projectPage/ProjectPageA.html')
         .then(response => response.text())
         .then(data => {
@@ -32,6 +38,7 @@ export function loadPage(projectId) {
     container.addEventListener('click', (event) => {
         const target = event.target; // Type assertion
         if (target.id === 'toCurrentProjects') {
+            updateStage("Avslutat", projectId);
             finalize(projectId);
         }
         else if (target.id === 'toP') {
diff --git a/client/projectPage/projectPageA.ts b/client/projectPage/projectPageA.ts
index d91cb1d795e58215b2d04ffebcb372a3c1bccd7e..e23e726bbbbf42d475abc376b25371d0b7d6d06a 100644
--- a/client/projectPage/projectPageA.ts
+++ b/client/projectPage/projectPageA.ts
@@ -1,7 +1,11 @@
 import { loadCurrentProjects } from "../SidebarAndHeader/pageHandler.js";
-import {getObjectById, finalizeImprovementWork } from "../Database/database.js";
 import { updateDoc, doc } from "firebase/firestore";
-import { loadProjectPageP, loadProjectPageS,loadProjectPageG } from "../SidebarAndHeader/pageHandler.js";
+import { loadProjectPageP, loadProjectPageS,loadProjectPageG, loadProjectPageA } from "../SidebarAndHeader/pageHandler.js";
+import {getObjectById, updateInstance, finalizeImprovementWork } from "../Database/database.js";
+
+async function updateStage(stage : string, id : string){
+    updateInstance("improvementWork", id, {currentStage:stage}) 
+    }
 
 export function loadPage (projectId : string) {
     const container = document.querySelector('#container-fluid');
@@ -9,6 +13,8 @@ export function loadPage (projectId : string) {
 
     if (!container) return; // Stop if the container isn't found
     
+    updateStage("Agera", projectId);
+
     fetch('projectPage/ProjectPageA.html')
             .then(response => response.text())
             .then(data => {
@@ -32,6 +38,7 @@ export function loadPage (projectId : string) {
                 const target = event.target as HTMLElement; // Type assertion
             
                 if (target.id === 'toCurrentProjects') {
+                    updateStage("Avslutat", projectId);
                     finalize(projectId);
                 }else if(target.id === 'toP'){
                     loadProjectPageP(projectId);
diff --git a/client/projectPage/projectPageG.js b/client/projectPage/projectPageG.js
index 8778c12bcc91b0b64155c490d22fb86e57147788..975ddb3b1c8aaa50aa71f7d72516de8d015cbbf0 100644
--- a/client/projectPage/projectPageG.js
+++ b/client/projectPage/projectPageG.js
@@ -1,9 +1,25 @@
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
 import { loadProjectPageP, loadProjectPageS } from "../SidebarAndHeader/pageHandler.js";
+import { updateInstance } from "../Database/database.js";
+function updateStage(stage, id) {
+    return __awaiter(this, void 0, void 0, function* () {
+        updateInstance("improvementWork", id, { currentStage: stage });
+    });
+}
 export function loadPage(projectId) {
     const container = document.querySelector('#container-fluid');
     const nextPageButton = document.getElementById('toS');
     if (!container)
         return; // Stop if the container isn't found
+    updateStage("Göra", projectId);
     fetch('projectPage/ProjectPageG.html')
         .then(response => response.text())
         .then(data => {
diff --git a/client/projectPage/projectPageG.ts b/client/projectPage/projectPageG.ts
index d5f32e2f23df55d3b3767080d493f3f52c636d1e..04e581b1e20988695ea7c67c249ec9f7e5b6004d 100644
--- a/client/projectPage/projectPageG.ts
+++ b/client/projectPage/projectPageG.ts
@@ -1,4 +1,9 @@
 import { loadProjectPageP, loadProjectPageS } from "../SidebarAndHeader/pageHandler.js";
+import {getObjectById, updateInstance } from "../Database/database.js";
+
+async function updateStage(stage : string, id : string){
+    updateInstance("improvementWork", id, {currentStage:stage}) 
+}
 
 export function loadPage (projectId : string) {
     const container = document.querySelector('#container-fluid');
@@ -6,6 +11,10 @@ export function loadPage (projectId : string) {
 
     if (!container) return; // Stop if the container isn't found
     
+        updateStage("Göra", projectId);
+        
+    
+
     fetch('projectPage/ProjectPageG.html')
             .then(response => response.text())
             .then(data => {
diff --git a/client/projectPage/projectPageP.js b/client/projectPage/projectPageP.js
index a6edd293a0ed2deee174af29c3138baa8a9630ec..39bb2a495e30d7cccdcf16db72fd630158b28409 100644
--- a/client/projectPage/projectPageP.js
+++ b/client/projectPage/projectPageP.js
@@ -8,12 +8,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
     });
 };
 import { loadProjectPageG } from "../SidebarAndHeader/pageHandler.js";
-import { getObjectById } from "../Database/database.js";
+import { getObjectById, updateInstance } from "../Database/database.js";
+function updateStage(stage, id) {
+    return __awaiter(this, void 0, void 0, function* () {
+        updateInstance("improvementWork", id, { currentStage: stage });
+    });
+}
 export function loadPage(projectId) {
     const container = document.querySelector('#container-fluid');
     const nextPageButton = document.getElementById('toG');
     if (!container)
         return; // Stop if the container isn't found
+    updateStage("Planera", projectId);
     fetch('projectPage/ProjectPageP.html')
         .then(response => response.text())
         .then(data => {
diff --git a/client/projectPage/projectPageP.ts b/client/projectPage/projectPageP.ts
index 87b6cf9b8f3e39d8ab06a607546f467e023a2173..e9540be037ce37f282935bda55fa8eac4362b751 100644
--- a/client/projectPage/projectPageP.ts
+++ b/client/projectPage/projectPageP.ts
@@ -1,5 +1,10 @@
 import { loadProjectPageG } from "../SidebarAndHeader/pageHandler.js";
-import {getObjectById } from "../Database/database.js";
+import {getObjectById, updateInstance } from "../Database/database.js";
+
+async function updateStage(stage : string, id : string){
+    updateInstance("improvementWork", id, {currentStage:stage}) 
+    }
+
 
 export function loadPage (projectId:string) {
 
@@ -8,11 +13,14 @@ export function loadPage (projectId:string) {
 
     if (!container) return; // Stop if the container isn't found
 
+    updateStage("Planera", projectId);
 
     
     fetch('projectPage/ProjectPageP.html')
             .then(response => response.text())
             .then(data => {
+
+
                 // Create a temporary container element to hold the loaded content
                 const tempContainer = document.createElement('div');
                 tempContainer.innerHTML = data;
diff --git a/client/projectPage/projectPageS.js b/client/projectPage/projectPageS.js
index 788e36edf2ab7fdb747771d1394ad5bf84a2c04b..367b0dc13e189c0380346bb72b166c0bd9e56314 100644
--- a/client/projectPage/projectPageS.js
+++ b/client/projectPage/projectPageS.js
@@ -1,37 +1,55 @@
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
 import { loadProjectPageA, loadProjectPageP, loadProjectPageG } from "../SidebarAndHeader/pageHandler.js";
-export function loadPage(projectId) {
-    const container = document.querySelector('#container-fluid');
-    const nextPageButton = document.getElementById('toA');
-    if (!container)
-        return; // Stop if the container isn't found
-    fetch('projectPage/ProjectPageS.html')
-        .then(response => response.text())
-        .then(data => {
-        // Create a temporary container element to hold the loaded content
-        const tempContainer = document.createElement('div');
-        tempContainer.innerHTML = data;
-        // Select the specific element with the class you want
-        const specificElement = tempContainer.querySelector('.wholePageS');
-        if (specificElement) {
-            // Insert the specific element into the target element
-            container.insertBefore(specificElement, container.firstChild);
-            initializeTooltips();
-        }
+import { updateInstance } from "../Database/database.js";
+function updateStage(stage, id) {
+    return __awaiter(this, void 0, void 0, function* () {
+        updateInstance("improvementWork", id, { currentStage: stage });
     });
-    container.addEventListener('click', (event) => {
-        const target = event.target; // Type assertion
-        if (target.id === 'toA') {
-            loadProjectPageA(projectId);
-        }
-        else if (target.id === 'toP') {
-            loadProjectPageP(projectId);
-        }
-        else if (target.id === 'toG') {
-            loadProjectPageG(projectId);
+}
+export function loadPage(projectId) {
+    return __awaiter(this, void 0, void 0, function* () {
+        const container = document.querySelector('#container-fluid');
+        const nextPageButton = document.getElementById('toA');
+        if (!container)
+            return; // Stop if the container isn't found
+        updateStage("Studera", projectId);
+        fetch('projectPage/ProjectPageS.html')
+            .then(response => response.text())
+            .then(data => {
+            // Create a temporary container element to hold the loaded content
+            const tempContainer = document.createElement('div');
+            tempContainer.innerHTML = data;
+            // Select the specific element with the class you want
+            const specificElement = tempContainer.querySelector('.wholePageS');
+            if (specificElement) {
+                // Insert the specific element into the target element
+                container.insertBefore(specificElement, container.firstChild);
+                initializeTooltips();
+            }
+        });
+        container.addEventListener('click', (event) => {
+            const target = event.target; // Type assertion
+            if (target.id === 'toA') {
+                loadProjectPageA(projectId);
+            }
+            else if (target.id === 'toP') {
+                loadProjectPageP(projectId);
+            }
+            else if (target.id === 'toG') {
+                loadProjectPageG(projectId);
+            }
+        });
+        function initializeTooltips() {
+            // Use jQuery to select the elements and initialize the tooltip
+            $('[data-toggle="tooltip"]').tooltip({ delay: { "show": 0, "hide": 100 } });
         }
     });
-    function initializeTooltips() {
-        // Use jQuery to select the elements and initialize the tooltip
-        $('[data-toggle="tooltip"]').tooltip({ delay: { "show": 0, "hide": 100 } });
-    }
 }
diff --git a/client/projectPage/projectPageS.ts b/client/projectPage/projectPageS.ts
index 97f3aeeee308dea7744ecc83546f73b0965ab4ff..33b753e24342acf0d02f54b0c23246710d9265be 100644
--- a/client/projectPage/projectPageS.ts
+++ b/client/projectPage/projectPageS.ts
@@ -1,11 +1,19 @@
 import { loadProjectPageA,loadProjectPageP,loadProjectPageG, loadProjectPageS } from "../SidebarAndHeader/pageHandler.js";
+import {getObjectById, updateInstance } from "../Database/database.js";
 
-export function loadPage (projectId : string) {
+async function updateStage(stage : string, id : string){
+    updateInstance("improvementWork", id, {currentStage:stage}) 
+    }
+
+export async function loadPage (projectId : string) {
     const container = document.querySelector('#container-fluid');
     const nextPageButton = document.getElementById('toA') as HTMLElement;
 
     if (!container) return; // Stop if the container isn't found
     
+        updateStage("Studera", projectId);
+    
+
     fetch('projectPage/ProjectPageS.html')
             .then(response => response.text())
             .then(data => {