From ad4963ed7e4176861d910f5d2cd4ec5c082fa7cf Mon Sep 17 00:00:00 2001
From: cjayneb <70963776+cjayneb@users.noreply.github.com>
Date: Thu, 17 Feb 2022 09:49:09 -0500
Subject: [PATCH 01/18] First SuperLinter test
---
client/src/pages/Dashboard.js | 6 +-
server/app.js | 2 +-
server/controllers/report.controller.js | 12 +--
server/data_access_layer/daos/report.dao.js | 2 +-
server/routes/invoice.routes.js | 1 -
server/services/report.service.js | 88 +++++++++----------
server/services/user.service.js | 41 ++++-----
.../controllers/invoice.controller.test.js | 40 ++++-----
.../controllers/report.controller.test.js | 2 +-
9 files changed, 95 insertions(+), 99 deletions(-)
diff --git a/client/src/pages/Dashboard.js b/client/src/pages/Dashboard.js
index 78a8e05..b7ac8a4 100644
--- a/client/src/pages/Dashboard.js
+++ b/client/src/pages/Dashboard.js
@@ -165,7 +165,7 @@ const Dashboard = () => {
'authorization': "Bearer " + cookies.get("accessToken"),
}
- await Axios.get(`${process.env.REACT_APP_API}/invoice/employees`, { headers: header })
+ await Axios.get(`${process.env.REACT_APP_API}/invoices/employees`, { headers: header })
.then((res) => {
if (res.status === 403 && res.status === 401) {
setAuthorized(false);
@@ -204,7 +204,7 @@ const Dashboard = () => {
'authorization': "Bearer " + cookies.get("accessToken"),
}
- await Axios.get(`${process.env.REACT_APP_API}/invoice/getCountries`, { headers: header })
+ await Axios.get(`${process.env.REACT_APP_API}/invoices/getCountries`, { headers: header })
.then(async (res) => {
if (res.status === 403 && res.status === 401) {
setAuthorized(false);
@@ -267,7 +267,7 @@ const Dashboard = () => {
};
}
- await Axios.get(`${process.env.REACT_APP_API}/invoice/defaultChartAndTable/${startDate}/${endDate}`, { params: param, headers: header })
+ await Axios.get(`${process.env.REACT_APP_API}/invoices/defaultChartAndTable/${startDate}/${endDate}`, { params: param, headers: header })
.then((res) => {
if (res.status === 403 && res.status === 401) {
setAuthorized(false);
diff --git a/server/app.js b/server/app.js
index e5b65cb..f137318 100644
--- a/server/app.js
+++ b/server/app.js
@@ -38,7 +38,7 @@ module.exports = (database) => {
});
// Routes
- app.use('/api/invoice', invoiceRoutes);
+ app.use('/api/invoices', invoiceRoutes);
app.use('/api/users', userRoutes);
app.use('/api/reports', reportRoutes);
diff --git a/server/controllers/report.controller.js b/server/controllers/report.controller.js
index bd8ca7f..6d824cf 100644
--- a/server/controllers/report.controller.js
+++ b/server/controllers/report.controller.js
@@ -77,7 +77,7 @@ exports.deleteChartReport = async (req, res) => {
exports.getPerformanceReportsOfAllUsers = async (req, res) => {
if (!req.user || !req.user.userId || req.user.userId === "" || req.user.userId === undefined)
return res.status(400).send({ message: "Content cannot be empty." });
- await reportService.getPerformanceReportWhenConnectedAsAdmin(req.user.userId)
+ await reportService.getPerformanceReports(req.user.userId)
.then(async response => {
if (response) {
return res.send(response);
@@ -91,11 +91,11 @@ exports.getPerformanceReportsOfAllUsers = async (req, res) => {
exports.createChartReportPDF = async (req, res) => {
if (!req.body.reportid)
- return res.status(400).send({ message: "Content cannot be empty." });
+ return res.status(400).send({ message: "Content cannot be empty." });
await reportService.createChartReportPDFById(req.body.reportid)
.then(response => {
- if(response) {
+ if (response) {
return res.status(200).send(response);
}
return res.status(500).send({ message: "The data could not be fetched." });
@@ -108,7 +108,7 @@ exports.createChartReportPDF = async (req, res) => {
exports.fetchChartReportPDF = async (req, res) => {
// create file path
let filePath;
- if(__dirname !== '/home/runner/work/BC-Engine/BC-Engine/server/controllers') {
+ if (__dirname !== '/home/runner/work/BC-Engine/BC-Engine/server/controllers') {
filePath = `${__dirname.replace("controllers", "")}docs\\pdf_files\\chartReport-${req.query.reportid}.pdf`;
}
else {
@@ -116,10 +116,10 @@ exports.fetchChartReportPDF = async (req, res) => {
}
if (!req.query.reportid)
- return res.status(400).send({ message: "Content cannot be empty." });
+ return res.status(400).send({ message: "Content cannot be empty." });
await res.sendFile(filePath, {}, (err) => {
- if(err) {
+ if (err) {
return res.status(err.status || 500).send({ message: err.message || "File not found." });
}
else {
diff --git a/server/data_access_layer/daos/report.dao.js b/server/data_access_layer/daos/report.dao.js
index 58270c2..bc99f65 100644
--- a/server/data_access_layer/daos/report.dao.js
+++ b/server/data_access_layer/daos/report.dao.js
@@ -80,7 +80,7 @@ exports.getRecipients = async (recipientsModel = RecipientsModel) => {
// Reports Types related functions
-exports.getPerformanceReportsWhenConnectedAsAdmin = async (userId, performanceReportModel = PerformanceReportModel) => {
+exports.getPerformanceReports = async (userId, performanceReportModel = PerformanceReportModel) => {
return new Promise((resolve, reject) => {
performanceReportModel.findAll().then(async data => {
if (data) {
diff --git a/server/routes/invoice.routes.js b/server/routes/invoice.routes.js
index f815026..94dbfe6 100644
--- a/server/routes/invoice.routes.js
+++ b/server/routes/invoice.routes.js
@@ -1,4 +1,3 @@
-const { response } = require("express");
const invoiceController = require("../controllers/invoice.controller");
let router = require("express").Router();
const authService = require('../services/auth.service');
diff --git a/server/services/report.service.js b/server/services/report.service.js
index 1a7ef40..118ac5e 100644
--- a/server/services/report.service.js
+++ b/server/services/report.service.js
@@ -157,9 +157,9 @@ exports.deleteChartReportById = async (chartReportId) => {
// Reports Types related functions
-exports.getPerformanceReportWhenConnectedAsAdmin = async (userId) => {
+exports.getPerformanceReports = async (userId) => {
return new Promise(async (resolve, reject) => {
- await ReportDao.getPerformanceReportsWhenConnectedAsAdmin(userId)
+ await ReportDao.getPerformanceReports(userId)
.then(async data => {
if (data) {
resolve(data);
@@ -262,7 +262,7 @@ exports.createChartReportPDFById = async (reportId) => {
let averagesList = [];
let filePath;
- if(__dirname !== '/home/runner/work/BC-Engine/BC-Engine/server/services') {
+ if (__dirname !== '/home/runner/work/BC-Engine/BC-Engine/server/services') {
filePath = `${__dirname.replace("services", "")}docs\\pdf_files\\chartReport-${reportId}.pdf`;
}
else {
@@ -276,19 +276,19 @@ exports.createChartReportPDFById = async (reportId) => {
data = data.dataValues
await this.getChartReportPDFAverages(reportId)
- .then(async (dataAvg) => {
- if(dataAvg)
- averagesList = dataAvg;
- else
- resolve(false);
- }).then(() => {
- pdf.create(pdfTemplate(data, averagesList), {format: "letter"})
- .toFile(filePath, () => {
- resolve(true);
+ .then(async (dataAvg) => {
+ if (dataAvg)
+ averagesList = dataAvg;
+ else
+ resolve(false);
+ }).then(() => {
+ pdf.create(pdfTemplate(data, averagesList), { format: "letter" })
+ .toFile(filePath, () => {
+ resolve(true);
+ });
+ }).catch(err => {
+ reject(err);
});
- }).catch(err => {
- reject(err);
- });
}
else
resolve(false);
@@ -306,36 +306,36 @@ exports.createChartReportPDFById = async (reportId) => {
exports.getChartReportPDFAverages = async (reportId) => {
return new Promise(async (resolve, reject) => {
ChartReportDao.getDataForChartReport(reportId)
- .then(data => {
- let averagesList = [];
- if (data) {
- for(let i = 0; i < data.length; i++) {
- let avgObject = {
- year: data[i].year,
- employee: data[i].employee,
- data: [
- data[i].january,
- data[i].february,
- data[i].march,
- data[i].april,
- data[i].may,
- data[i].june,
- data[i].july,
- data[i].august,
- data[i].september,
- data[i].october,
- data[i].november,
- data[i].december,
- ]
+ .then(data => {
+ let averagesList = [];
+ if (data) {
+ for (let i = 0; i < data.length; i++) {
+ let avgObject = {
+ year: data[i].year,
+ employee: data[i].employee,
+ data: [
+ data[i].january,
+ data[i].february,
+ data[i].march,
+ data[i].april,
+ data[i].may,
+ data[i].june,
+ data[i].july,
+ data[i].august,
+ data[i].september,
+ data[i].october,
+ data[i].november,
+ data[i].december,
+ ]
+ }
+ averagesList.push(avgObject);
}
- averagesList.push(avgObject);
+ resolve(averagesList);
}
- resolve(averagesList);
- }
- resolve(false);
- })
- .catch(err => {
- reject(err);
- });
+ resolve(false);
+ })
+ .catch(err => {
+ reject(err);
+ });
});
}
\ No newline at end of file
diff --git a/server/services/user.service.js b/server/services/user.service.js
index 0d81331..1c7a708 100644
--- a/server/services/user.service.js
+++ b/server/services/user.service.js
@@ -1,13 +1,10 @@
-const databases = require("../data_access_layer/databases");
-const User = databases['localdb'].users;
-const UserDAO = require('../data_access_layer/daos/user.dao');
-const Op = databases.Sequelize.Op;
+const UserDAO = require('../data_access_layer/daos/user.dao');
exports.createUser = async (user) => {
return new Promise((resolve, reject) => {
UserDAO.createUser(user)
.then(async data => {
- if(data)resolve(data);
+ if (data) resolve(data);
resolve(false);
})
.catch(err => {
@@ -20,7 +17,7 @@ exports.getAllUsers = async () => {
return new Promise((resolve, reject) => {
UserDAO.getAllUsers()
.then(async data => {
- if(data) {
+ if (data) {
// Puts users in alphabetical order for the users table
let sortedUser = data.sort((a, b) => {
@@ -41,21 +38,21 @@ exports.getAllUsers = async () => {
exports.authenticateUser = async (user) => {
return new Promise((resolve, reject) => {
UserDAO.getUserByEmail(user.email)
- .then(async data => {
- if(!data) resolve(false);
- if(!data.password ||
- !await data.validPassword(user.password, data.password)){
+ .then(async data => {
+ if (!data) resolve(false);
+ if (!data.password ||
+ !await data.validPassword(user.password, data.password)) {
resolve(false);
- } else {
- resolve(data);
- }
- }).catch(err => {
- const response = {
- status: 500,
- message: err.message || "some error occured"
- }
- reject(response);
- });
+ } else {
+ resolve(data);
+ }
+ }).catch(err => {
+ const response = {
+ status: 500,
+ message: err.message || "some error occured"
+ }
+ reject(response);
+ });
});
};
@@ -63,7 +60,7 @@ exports.modifyUser = async (user) => {
return new Promise((resolve, reject) => {
UserDAO.updateUser(user)
.then(async data => {
- if(data) resolve(data);
+ if (data) resolve(data);
resolve(false);
})
.catch(err => {
@@ -76,7 +73,7 @@ exports.deleteUser = async (email) => {
return new Promise((resolve, reject) => {
UserDAO.deleteUser(email)
.then(async data => {
- if(data) resolve(data);
+ if (data) resolve(data);
resolve(false)
})
.catch(err => {
diff --git a/server/tests/controllers/invoice.controller.test.js b/server/tests/controllers/invoice.controller.test.js
index 1ee2049..273c232 100644
--- a/server/tests/controllers/invoice.controller.test.js
+++ b/server/tests/controllers/invoice.controller.test.js
@@ -74,7 +74,7 @@ describe("Test Invoice Controller", () => {
}));
// act
- const response = await request.get("/api/invoice/defaultChartAndTable/2019-12-01/2020-04-01");
+ const response = await request.get("/api/invoices/defaultChartAndTable/2019-12-01/2020-04-01");
// assert
expect(response.status).toBe(200);
@@ -127,7 +127,7 @@ describe("Test Invoice Controller", () => {
let expectedResponseMessage = "Wrong format.";
// act
- const response = await request.get("/api/invoice/defaultChartAndTable/wonrg format/invalid-date");
+ const response = await request.get("/api/invoices/defaultChartAndTable/wonrg format/invalid-date");
// assert
expect(response.status).toBe(400);
@@ -145,7 +145,7 @@ describe("Test Invoice Controller", () => {
}));
// act
- const response = await request.get("/api/invoice/defaultChartAndTable/2019-12-01/2020-04-01");
+ const response = await request.get("/api/invoices/defaultChartAndTable/2019-12-01/2020-04-01");
// assert
expect(response.status).toBe(500);
@@ -165,7 +165,7 @@ describe("Test Invoice Controller", () => {
});
// act
- const response = await request.get("/api/invoice/defaultChartAndTable/2019-12-01/2020-04-01");
+ const response = await request.get("/api/invoices/defaultChartAndTable/2019-12-01/2020-04-01");
// assert
expect(response.status).toBe(500);
@@ -184,7 +184,7 @@ describe("Test Invoice Controller", () => {
});
// act
- const response = await request.get("/api/invoice/defaultChartAndTable/2019-12-01/2020-04-01");
+ const response = await request.get("/api/invoices/defaultChartAndTable/2019-12-01/2020-04-01");
// assert
expect(response.status).toBe(400);
@@ -208,7 +208,7 @@ describe("Test Invoice Controller", () => {
}));
// act
- const response = await request.get("/api/invoice/defaultChartAndTable/2019-12-01/2020-04-01?employeeId=22769");
+ const response = await request.get("/api/invoices/defaultChartAndTable/2019-12-01/2020-04-01?employeeId=22769");
// assert
expect(response.status).toBe(200);
@@ -255,7 +255,7 @@ describe("Test Invoice Controller", () => {
resolve(expectedEmpServiceResponse);
}));
- const response = await request.get("/api/invoice/employees");
+ const response = await request.get("/api/invoices/employees");
// assert
expect(response.status).toBe(200);
@@ -273,7 +273,7 @@ describe("Test Invoice Controller", () => {
}));
// act
- const response = await request.get("/api/invoice/employees");
+ const response = await request.get("/api/invoices/employees");
// assert
expect(response.status).toBe(500);
@@ -291,7 +291,7 @@ describe("Test Invoice Controller", () => {
});
// act
- const response = await request.get("/api/invoice/employees");
+ const response = await request.get("/api/invoices/employees");
// assert
expect(response.status).toBe(500);
@@ -310,7 +310,7 @@ describe("Test Invoice Controller", () => {
});
// act
- const response = await request.get("/api/invoice/employees");
+ const response = await request.get("/api/invoices/employees");
// assert
expect(response.status).toBe(400);
@@ -343,7 +343,7 @@ describe("Test Invoice Controller", () => {
resolve(expectedEmpServiceResponse);
}));
- const response = await request.get("/api/invoice/employees")
+ const response = await request.get("/api/invoices/employees")
.send(reqUserEmployee);
// assert
@@ -362,7 +362,7 @@ describe("Test Invoice Controller", () => {
}));
// act
- const response = await request.get("/api/invoice/employees");
+ const response = await request.get("/api/invoices/employees");
// assert
expect(response.status).toBe(500);
@@ -380,7 +380,7 @@ describe("Test Invoice Controller", () => {
});
// act
- const response = await request.get("/api/invoice/employees");
+ const response = await request.get("/api/invoices/employees");
// assert
expect(response.status).toBe(500);
@@ -399,7 +399,7 @@ describe("Test Invoice Controller", () => {
});
// act
- const response = await request.get("/api/invoice/employees");
+ const response = await request.get("/api/invoices/employees");
// assert
expect(response.status).toBe(400);
@@ -410,7 +410,7 @@ describe("Test Invoice Controller", () => {
describe("IC3 - Get All Countries for Dropdown ", () => {
-
+
describe("IC3.1 - given any user", () => {
it("IC3.1.1 - Should respond with 200 and a list of countries", async () => {
@@ -432,7 +432,7 @@ describe("Test Invoice Controller", () => {
resolve(expectedCountryResponse);
}));
- const response = await request.get("/api/invoice/getCountries");
+ const response = await request.get("/api/invoices/getCountries");
// assert
expect(response.status).toBe(200);
@@ -450,13 +450,13 @@ describe("Test Invoice Controller", () => {
}));
// act
- const response = await request.get("/api/invoice/getCountries");
+ const response = await request.get("/api/invoices/getCountries");
// assert
expect(response.status).toBe(500);
expect(response.body.message).toBe(expectedResponse);
});
-
+
it("IC3.1.3 - should respond with 500 status code and message when not specified", async () => {
// arrange
@@ -470,7 +470,7 @@ describe("Test Invoice Controller", () => {
});
// act
- const response = await request.get("/api/invoice/getCountries");
+ const response = await request.get("/api/invoices/getCountries");
// assert
expect(response.status).toBe(500);
@@ -490,7 +490,7 @@ describe("Test Invoice Controller", () => {
});
// act
- const response = await request.get("/api/invoice/getCountries");
+ const response = await request.get("/api/invoices/getCountries");
// assert
expect(response.status).toBe(400);
diff --git a/server/tests/controllers/report.controller.test.js b/server/tests/controllers/report.controller.test.js
index 704cb83..7c76ce7 100644
--- a/server/tests/controllers/report.controller.test.js
+++ b/server/tests/controllers/report.controller.test.js
@@ -33,7 +33,7 @@ let app = makeApp();
const request = supertest(app);
let res;
-jest.setTimeout(10000)
+//jest.setTimeout(10000)
describe("Test Report Controller", () => {
From 982ce9a700b91e20e7dfb5bfc50a68ef3cb75134 Mon Sep 17 00:00:00 2001
From: cjayneb <70963776+cjayneb@users.noreply.github.com>
Date: Thu, 17 Feb 2022 13:07:53 -0500
Subject: [PATCH 02/18] Fixed most lint errors
---
.github/workflows/node.js.yml | 22 +-
Dockerfile | 1 +
client/public/404.html | 2 +-
client/public/index.html | 6 +-
client/src/App.js | 35 +-
client/src/components/ConfirmationPopup.js | 32 +-
client/src/components/DeleteButton.js | 32 +-
client/src/components/EditButton.js | 32 +-
client/src/components/ExportButton.js | 34 +-
client/src/components/NavB.js | 332 +-
client/src/components/UnderConstruction.js | 18 +-
client/src/components/UsersForm.js | 839 +++--
client/src/i18n.js | 54 +-
client/src/index.js | 16 +-
client/src/pages/Dashboard.js | 1663 +++++-----
client/src/pages/Login.js | 364 ++-
client/src/pages/Manage.js | 33 +-
client/src/pages/Reports.js | 819 +++--
client/src/pages/Users.js | 444 ++-
client/src/reportWebVitals.js | 24 +-
client/src/setupProxy.js | 16 +-
client/src/styles/clientTable.css | 72 +-
client/src/styles/dashboardPage.css | 7 +-
client/src/styles/index.css | 56 +-
client/src/styles/popup.css | 172 +-
client/src/styles/reportsPage.css | 83 +-
client/src/styles/scrollbar.css | 36 +-
client/src/styles/usersPage.css | 24 +-
config.js | 12 +-
server/app.js | 62 +-
server/controllers/invoice.controller.js | 109 +-
server/controllers/report.controller.js | 202 +-
server/controllers/user.controller.js | 239 +-
.../daos/chart_report.dao.js | 268 +-
server/data_access_layer/daos/country.dao.js | 62 +-
server/data_access_layer/daos/emp.dao.js | 48 +-
.../daos/invoice_affect.dao.js | 174 +-
server/data_access_layer/daos/name.dao.js | 114 +-
server/data_access_layer/daos/report.dao.js | 173 +-
.../daos/transac_stat.dao.js | 169 +-
server/data_access_layer/daos/user.dao.js | 211 +-
server/data_access_layer/databases.js | 165 +-
server/data_access_layer/db.config.js | 76 +-
.../models/localdb/localdb.model.js | 591 ++--
.../models/mssql_bosco/client.model.js | 52 +-
.../models/mssql_bosco/name.model.js | 46 +-
.../models/mssql_pat/employee.model.js | 54 +-
server/docs/chartReportPDF.js | 337 +-
server/routes/invoice.routes.js | 14 +-
server/routes/report.routes.js | 22 +-
server/routes/user.routes.js | 27 +-
server/server.js | 12 +-
server/services/auth.service.js | 70 +-
server/services/emp.service.js | 73 +-
server/services/invoice.service.js | 435 ++-
server/services/report.service.js | 563 ++--
server/services/user.service.js | 141 +-
server/tests/DAL/chart_report.dao.test.js | 1081 +++----
server/tests/DAL/country.dao.test.js | 189 +-
server/tests/DAL/emp.dao.test.js | 246 +-
server/tests/DAL/invoice_affect.dao.test.js | 765 +++--
server/tests/DAL/name.dao.test.js | 328 +-
server/tests/DAL/report.dao.test.js | 833 +++--
server/tests/DAL/transac_stat.dao.test.js | 776 +++--
server/tests/DAL/user.dao.test.js | 614 ++--
server/tests/controllers/app.test.js | 97 +-
.../controllers/invoice.controller.test.js | 979 +++---
.../controllers/report.controller.test.js | 2053 ++++++------
.../tests/controllers/user.controller.test.js | 991 +++---
server/tests/services/auth.service.test.js | 363 +--
server/tests/services/emp.service.test.js | 516 ++-
server/tests/services/invoice.service.test.js | 1591 +++++----
server/tests/services/report.service.test.js | 2875 ++++++++---------
server/tests/services/user.service.test.js | 711 ++--
74 files changed, 12294 insertions(+), 12503 deletions(-)
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index d8dd538..cbf4176 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -42,16 +42,18 @@ jobs:
SKIP_PREFLIGHT_CHECK: ${{ secrets.SKIP_PREFLIGHT_CHECK }}
run: |
touch .env
- echo ACCESS_TOKEN_SECRET="$ACCESS_TOKEN_SECRET" >> .env
- echo LOCAL_DATABASE="$LOCAL_DATABASE" >> .env
- echo LOCAL_DOCKER_PORT="$LOCAL_DOCKER_PORT" >> .env
- echo LOCAL_HOST="$LOCAL_HOST" >> .env
- echo LOCAL_PORT="$LOCAL_PORT" >> .env
- echo LOCAL_ROOT_PASSWORD="$LOCAL_ROOT_PASSWORD" >> .env
- echo LOCAL_USER="$LOCAL_USER" >> .env
- echo NODE_ENV="$NODE_ENV" >> .env
- echo REFRESH_TOKEN_SECRET="$REFRESH_TOKEN_SECRET" >> .env
- echo SKIP_PREFLIGHT_CHECK="$SKIP_PREFLIGHT_CHECK" >> .env
+ {
+ echo ACCESS_TOKEN_SECRET="$ACCESS_TOKEN_SECRET"
+ echo LOCAL_DATABASE="$LOCAL_DATABASE"
+ echo LOCAL_DOCKER_PORT="$LOCAL_DOCKER_PORT"
+ echo LOCAL_HOST="$LOCAL_HOST"
+ echo LOCAL_PORT="$LOCAL_PORT"
+ echo LOCAL_ROOT_PASSWORD="$LOCAL_ROOT_PASSWORD"
+ echo LOCAL_USER="$LOCAL_USER"
+ echo NODE_ENV="$NODE_ENV"
+ echo REFRESH_TOKEN_SECRET="$REFRESH_TOKEN_SECRET"
+ echo SKIP_PREFLIGHT_CHECK="$SKIP_PREFLIGHT_CHECK"
+ } >> .env
- run: npm test
lint:
diff --git a/Dockerfile b/Dockerfile
index dbda93b..1378ae2 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -5,6 +5,7 @@ ENV PACKAGE_URL https://repo.mysql.com/yum/mysql-8.0-community/docker/x86_64/mys
RUN rpmkeys --import http://repo.mysql.com/RPM-GPG-KEY-mysql \
&& yum install -y $PACKAGE_URL \
&& yum install -y libpwquality \
+ && yum clean all \
&& rm -rf /var/cache/yum/*
RUN mkdir /docker-entrypoint-initdb.d
diff --git a/client/public/404.html b/client/public/404.html
index 9da9820..f317c5c 100644
--- a/client/public/404.html
+++ b/client/public/404.html
@@ -3,7 +3,6 @@
B&C Engine Web Application
-
+
- B&C Engine
-
-
diff --git a/client/src/App.js b/client/src/App.js
index 6e2a432..9550e8f 100644
--- a/client/src/App.js
+++ b/client/src/App.js
@@ -1,28 +1,27 @@
-import React from "react";
-import Dashboard from "./pages/Dashboard";
-import Reports from "./pages/Reports";
-import Users from "./pages/Users";
-import Manage from "./pages/Manage";
-import Login from "./pages/Login";
-import { Navigate, Routes, Route, BrowserRouter } from "react-router-dom";
+import React from 'react'
+import Dashboard from './pages/Dashboard'
+import Reports from './pages/Reports'
+import Users from './pages/Users'
+import Manage from './pages/Manage'
+import Login from './pages/Login'
+import { Navigate, Routes, Route, BrowserRouter } from 'react-router-dom'
-
-function App() {
+function App () {
return (
{/* Routes to pages */}
-
+
- }/>
- } />
- } />
- } />
- } />
- } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
- );
+ )
}
-export default App;
\ No newline at end of file
+export default App
diff --git a/client/src/components/ConfirmationPopup.js b/client/src/components/ConfirmationPopup.js
index 1699e8e..eb66cc2 100644
--- a/client/src/components/ConfirmationPopup.js
+++ b/client/src/components/ConfirmationPopup.js
@@ -1,24 +1,24 @@
import React from 'react'
import '../styles/index.css'
-import { useTranslation } from 'react-i18next';
+import { useTranslation } from 'react-i18next'
const DeleteUserPopup = ({ open, prompt, title, onAccept, onClose }) => {
- const { t } = useTranslation();
+ const { t } = useTranslation()
- if (!open) return null;
+ if (!open) return null
- return (
- <>
-
-
-
{prompt} {title}?
-
-
-
-
-
- >
- )
+ return (
+ <>
+
+
+
{prompt} {title}?
+
+
+
+
+
+ >
+ )
}
-export default DeleteUserPopup
\ No newline at end of file
+export default DeleteUserPopup
diff --git a/client/src/components/DeleteButton.js b/client/src/components/DeleteButton.js
index 2d9a439..bf3c645 100644
--- a/client/src/components/DeleteButton.js
+++ b/client/src/components/DeleteButton.js
@@ -1,22 +1,26 @@
import Icon from '@mdi/react'
-import { mdiDeleteEmpty, mdiDelete } from '@mdi/js';
+import { mdiDeleteEmpty, mdiDelete } from '@mdi/js'
const DeleteButton = ({ onDelete }) => {
- return (
-