From e2a23ca4480224cf5f4a5eabb7b63ae51fa2d263 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stanis=C5=82aw=20Zakrzewski?=
 <41862803+stanislaw-zakrzewski@users.noreply.github.com>
Date: Wed, 25 Oct 2023 11:45:00 +0200
Subject: [PATCH] [38] Update linelist columns (#39)

* Add date modified and last modified by to linelist

* Remove logs
---
 .../data-service/src/controllers/case.ts      |  2 ++
 .../e2e/components/LinelistTableTest.spec.ts  |  8 +++++++
 .../ui/src/api/models/Day0Case.ts             |  3 +++
 .../LinelistTable/helperFunctions.ts          | 22 ++++++++++++-------
 .../ui/src/components/LinelistTable/index.tsx | 18 +++++++++++++++
 5 files changed, 45 insertions(+), 8 deletions(-)

diff --git a/data-serving/data-service/src/controllers/case.ts b/data-serving/data-service/src/controllers/case.ts
index e2520d2d2..a44e15b4c 100644
--- a/data-serving/data-service/src/controllers/case.ts
+++ b/data-serving/data-service/src/controllers/case.ts
@@ -182,6 +182,7 @@ const updatedRevisionMetadata = (
         updateMetadata: {
             curator: curator,
             note: note,
+            date: Date.now(),
         },
         revisionNumber: day0Case.revisionMetadata.revisionNumber + 1,
     };
@@ -503,6 +504,7 @@ export class CasesController {
                     revisionNumber: 0,
                     creationMetadata: {
                         curator: req.body.curator.email,
+                        date: Date.now(),
                     },
                 },
             } as CaseDTO;
diff --git a/verification/curator-service/ui/cypress/e2e/components/LinelistTableTest.spec.ts b/verification/curator-service/ui/cypress/e2e/components/LinelistTableTest.spec.ts
index 9e91466ec..e11307ab7 100644
--- a/verification/curator-service/ui/cypress/e2e/components/LinelistTableTest.spec.ts
+++ b/verification/curator-service/ui/cypress/e2e/components/LinelistTableTest.spec.ts
@@ -57,6 +57,14 @@ describe('Linelist table', function () {
         });
         cy.visit('/');
         cy.visit('/cases');
+
+        // We don't need additional library for just one test, we can format date manually
+        const today = new Date();
+        const year = today.getFullYear();
+        const month = today.getMonth() < 9 ? `0${today.getMonth() + 1}` : today.getMonth() + 1;
+        const day = today.getDate() < 10 ? `0${today.getDate()}` : today.getDate();
+        cy.contains(`${year}-${month}-${day}`)
+        cy.contains('test@bar.com');
         cy.contains('France');
         cy.contains('www.example.com');
         cy.contains('2020-05-01');
diff --git a/verification/curator-service/ui/src/api/models/Day0Case.ts b/verification/curator-service/ui/src/api/models/Day0Case.ts
index d33811ee2..feec2ad45 100644
--- a/verification/curator-service/ui/src/api/models/Day0Case.ts
+++ b/verification/curator-service/ui/src/api/models/Day0Case.ts
@@ -175,9 +175,12 @@ export interface RevisionMetadata {
     revisionNumber: number;
     creationMetadata: {
         curator: string;
+        date?: string;
     };
     updateMetadata: {
         curator: string;
+        date?: string;
+        notes?: string;
     };
 }
 
diff --git a/verification/curator-service/ui/src/components/LinelistTable/helperFunctions.ts b/verification/curator-service/ui/src/components/LinelistTable/helperFunctions.ts
index 171e039b0..f6ad80b9a 100644
--- a/verification/curator-service/ui/src/components/LinelistTable/helperFunctions.ts
+++ b/verification/curator-service/ui/src/components/LinelistTable/helperFunctions.ts
@@ -1,6 +1,8 @@
 export const labels = [
     'Case ID',
     'Verified',
+    'Date Modified',
+    'Last Modified By',
     'Entry date',
     'Reported date',
     'Case status',
@@ -18,6 +20,8 @@ export const labels = [
 export const createData = (
     caseId: string,
     verified: boolean,
+    dateModified: string,
+    lastModifiedBy: string,
     country: string,
     region?: string,
     district?: string,
@@ -35,21 +39,23 @@ export const createData = (
     comment?: string,
 ) => {
     return {
+        age: age || '',
         caseId: caseId || '',
-        dateEntry: dateEntry || '',
-        dateReported: dateReported || '',
         caseStatus: caseStatus || '',
         comment: comment || '',
         country: country || '',
-        region: region || '',
+        dateEntry: dateEntry || '',
+        dateHospitalization: dateHospitalization || '',
+        dateModified: dateModified || '',
+        dateOnset: dateOnset || '',
+        dateReported: dateReported || '',
         district: district || '',
-        place: place || '',
-        location: location || '',
-        age: age || '',
         gender: gender || '',
+        lastModifiedBy: lastModifiedBy || '',
+        location: location || '',
         outcome: outcome || '',
-        dateHospitalization: dateHospitalization || '',
-        dateOnset: dateOnset || '',
+        place: place || '',
+        region: region || '',
         source: source || '',
         verified: verified || false,
     };
diff --git a/verification/curator-service/ui/src/components/LinelistTable/index.tsx b/verification/curator-service/ui/src/components/LinelistTable/index.tsx
index e2fa24edc..025218248 100644
--- a/verification/curator-service/ui/src/components/LinelistTable/index.tsx
+++ b/verification/curator-service/ui/src/components/LinelistTable/index.tsx
@@ -112,6 +112,12 @@ const LinelistTable = () => {
             return createData(
                 data._id || '',
                 !!data.curators?.verifiedBy || false,
+                renderDate(data.revisionMetadata?.updateMetadata?.date) ||
+                    renderDate(data.revisionMetadata?.creationMetadata?.date) ||
+                    '',
+                data.revisionMetadata?.updateMetadata?.curator ||
+                    data.revisionMetadata?.creationMetadata?.curator ||
+                    '',
                 nameCountry(data.location.countryISO3, data.location.country) ||
                     '-',
                 data.location.region || '-',
@@ -386,6 +392,18 @@ const LinelistTable = () => {
                                         >
                                             {row.verified && <VerifiedIcon />}
                                         </TableCell>
+                                        <TableCell
+                                            align="left"
+                                            sx={{ minWidth: 100 }}
+                                        >
+                                            {row.dateModified}
+                                        </TableCell>
+                                        <TableCell
+                                            align="left"
+                                            sx={{ minWidth: 100 }}
+                                        >
+                                            {row.lastModifiedBy}
+                                        </TableCell>
                                         <TableCell
                                             align="left"
                                             sx={{ minWidth: 100 }}