From 0a11b72ac36fcbd65aea40bc7facd657643aa44e Mon Sep 17 00:00:00 2001 From: Nicole Stronge Date: Wed, 15 Jan 2025 12:03:12 +0000 Subject: [PATCH 1/4] Get All Employess endpoint --- employees.json | 0 routes/employees.js | 0 services/employeeService.js | 0 views/employees.ejs | 0 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 employees.json create mode 100644 routes/employees.js create mode 100644 services/employeeService.js create mode 100644 views/employees.ejs diff --git a/employees.json b/employees.json new file mode 100644 index 0000000..e69de29 diff --git a/routes/employees.js b/routes/employees.js new file mode 100644 index 0000000..e69de29 diff --git a/services/employeeService.js b/services/employeeService.js new file mode 100644 index 0000000..e69de29 diff --git a/views/employees.ejs b/views/employees.ejs new file mode 100644 index 0000000..e69de29 From 53970b970291f6e28c8bdf719889f1a33712e7cd Mon Sep 17 00:00:00 2001 From: Nicole Stronge Date: Wed, 15 Jan 2025 12:15:15 +0000 Subject: [PATCH 2/4] Get All Employess endpoint saved --- app.js | 2 ++ employees.json | 10 +++++++++ routes/employees.js | 13 +++++++++++ services/employeeService.js | 26 ++++++++++++++++++++++ views/employees.ejs | 44 +++++++++++++++++++++++++++++++++++++ 5 files changed, 95 insertions(+) diff --git a/app.js b/app.js index ff3080d..08b9ba2 100644 --- a/app.js +++ b/app.js @@ -7,6 +7,7 @@ require('dotenv').config(); var indexRouter = require('./routes/index'); var usersRouter = require('./routes/users'); +var employeesRouter = require('./routes/employees'); var app = express(); @@ -22,6 +23,7 @@ app.use(express.static(path.join(__dirname, 'public'))); app.use('/', indexRouter); app.use('/users', usersRouter); +app.use('/employees', employeesRouter); // catch 404 and forward to error handler app.use(function(req, res, next) { diff --git a/employees.json b/employees.json index e69de29..c819fd7 100644 --- a/employees.json +++ b/employees.json @@ -0,0 +1,10 @@ +[ + { + "id": 1, + "name": "Shaun", + "email": "shaun@test.com", + "salary": 500000, + "role": "Software Engineer", + "employeeNumber": "EZ01" + } + ] \ No newline at end of file diff --git a/routes/employees.js b/routes/employees.js index e69de29..1d5183c 100644 --- a/routes/employees.js +++ b/routes/employees.js @@ -0,0 +1,13 @@ +var express = require('express'); +var router = express.Router(); + +const EmployeeService = require('../services/employeeService'); +const employeeService = new EmployeeService(); + +// Read all employees +router.get('/', (req, res) => { + const employees = employeeService.getAllEmployees(); + res.render('employees', { employees: employees }) + }); + + module.exports = router; \ No newline at end of file diff --git a/services/employeeService.js b/services/employeeService.js index e69de29..6d4ab10 100644 --- a/services/employeeService.js +++ b/services/employeeService.js @@ -0,0 +1,26 @@ +// EmployeeService.js +const fs = require('fs'); + +class EmployeeService { + constructor() { + this.filePath = "employees.json"; + } + + // Helper function to read Employees from JSON file + readEmployees() { + try { + const data = fs.readFileSync(this.filePath, 'utf8'); + return JSON.parse(data); + } catch (err) { + console.error('Error reading Employees:', err); + return []; + } + } + + // Get all Employees + getAllEmployees() { + return this.readEmployees(); + } +} + +module.exports = EmployeeService; \ No newline at end of file diff --git a/views/employees.ejs b/views/employees.ejs index e69de29..f5bcf24 100644 --- a/views/employees.ejs +++ b/views/employees.ejs @@ -0,0 +1,44 @@ + + + + + + + employee List + + + +

Employees List

+ + <% if (employees && employees.length > 0) { %> + + + + + + + + + + + + + <% employees.forEach(employee => { %> + + + + + + + + + <% }); %> + +
NameEmailSalaryRoleEmployee Number
<%= employee.name %><%= employee.email %><%= employee.salary %><%= employee.role %><%= employee.employeeNumber %>
+ <% } else { %> +

No employees found.

+ <% } %> + + + + From 5391d7096c5680a700ee0b0a9469fae4b8576ed8 Mon Sep 17 00:00:00 2001 From: Nicole Stronge Date: Wed, 15 Jan 2025 12:26:03 +0000 Subject: [PATCH 3/4] Get All Employess endpoint saved --- employees.json | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/employees.json b/employees.json index c819fd7..2d09326 100644 --- a/employees.json +++ b/employees.json @@ -6,5 +6,29 @@ "salary": 500000, "role": "Software Engineer", "employeeNumber": "EZ01" - } + }, + { + "id": 2, + "name": "Peter", + "email": "peter@test.com", + "salary": 250000, + "role": "Software Engineer", + "employeeNumber": "EZ02" + }, + { + "id": 3, + "name": "Petunia", + "email": "petunia@test.com", + "salary": 550000, + "role": "Software Engineer", + "employeeNumber": "EZ03" + }, + { + "id": 4, + "name": "Paulina", + "email": "paulina@test.com", + "salary": 230000, + "role": "Software Engineer", + "employeeNumber": "EZ04" + } ] \ No newline at end of file From 5b402fde756416363eedd77882c3104779bf60ff Mon Sep 17 00:00:00 2001 From: Nicole Stronge Date: Wed, 15 Jan 2025 13:33:50 +0000 Subject: [PATCH 4/4] View employee --- routes/employees.js | 6 ++++++ services/employeeService.js | 6 ++++++ views/employee.ejs | 40 +++++++++++++++++++++++++++++++++++++ views/employees.ejs | 3 ++- 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 views/employee.ejs diff --git a/routes/employees.js b/routes/employees.js index 1d5183c..eb52dc8 100644 --- a/routes/employees.js +++ b/routes/employees.js @@ -10,4 +10,10 @@ router.get('/', (req, res) => { res.render('employees', { employees: employees }) }); + // Read a Employee by ID +router.get('/:id', (req, res) => { + const employee = employeeService.getEmployeeById(parseInt(req.params.id)); + if (!employee) return res.status(404).send('Employee not found'); + res.render('employee', {employee:employee }) + }); module.exports = router; \ No newline at end of file diff --git a/services/employeeService.js b/services/employeeService.js index 6d4ab10..b62e03a 100644 --- a/services/employeeService.js +++ b/services/employeeService.js @@ -21,6 +21,12 @@ class EmployeeService { getAllEmployees() { return this.readEmployees(); } + + // Get a employee by ID + getEmployeeById(id) { + const employee = this.readEmployees(); + return employee.find(employee => employee.id === id); + } } module.exports = EmployeeService; \ No newline at end of file diff --git a/views/employee.ejs b/views/employee.ejs new file mode 100644 index 0000000..3686187 --- /dev/null +++ b/views/employee.ejs @@ -0,0 +1,40 @@ + + + + + + + User Information + + + +

Employee Information

+ + <% if (employee) { %> + + + + + + + + + + + + + + + + + + + +
NameEmailSalaryRoleEmployee Number
<%= employee.name %><%= employee.email %><%= employee.salary %><%= employee.role %><%= employee.employeeNumber %>
+ <% } else { %> +

No Employee found.

+ <% } %> + + + + diff --git a/views/employees.ejs b/views/employees.ejs index f5bcf24..9bc5467 100644 --- a/views/employees.ejs +++ b/views/employees.ejs @@ -19,6 +19,7 @@ Salary Role Employee Number + @@ -30,7 +31,7 @@ <%= employee.salary %> <%= employee.role %> <%= employee.employeeNumber %> - + View <% }); %>