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 new file mode 100644 index 0000000..2d09326 --- /dev/null +++ b/employees.json @@ -0,0 +1,34 @@ +[ + { + "id": 1, + "name": "Shaun", + "email": "shaun@test.com", + "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 diff --git a/routes/employees.js b/routes/employees.js new file mode 100644 index 0000000..eb52dc8 --- /dev/null +++ b/routes/employees.js @@ -0,0 +1,19 @@ +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 }) + }); + + // 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 new file mode 100644 index 0000000..b62e03a --- /dev/null +++ b/services/employeeService.js @@ -0,0 +1,32 @@ +// 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(); + } + + // 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 new file mode 100644 index 0000000..9bc5467 --- /dev/null +++ b/views/employees.ejs @@ -0,0 +1,45 @@ + + + + + + + employee List + + + +

Employees List

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

No employees found.

+ <% } %> + + + +