From ea332b6ac96329028ad04e3d44f41a557bf35ff8 Mon Sep 17 00:00:00 2001 From: Nicole Stronge Date: Thu, 16 Jan 2025 11:46:32 +0000 Subject: [PATCH 1/3] Add new Employee --- routes/employees.js | 15 +++++++++++++++ services/employeeService.js | 18 ++++++++++++++++++ users.json | 18 ++++++++++++++++++ views/addEmployee.ejs | 32 ++++++++++++++++++++++++++++++++ views/employees.ejs | 4 ++++ 5 files changed, 87 insertions(+) create mode 100644 views/addEmployee.ejs diff --git a/routes/employees.js b/routes/employees.js index eb52dc8..477f1c3 100644 --- a/routes/employees.js +++ b/routes/employees.js @@ -4,6 +4,18 @@ var router = express.Router(); const EmployeeService = require('../services/employeeService'); const employeeService = new EmployeeService(); +// Create a new employee form +router.get('/add', (req, res) => { + res.render('addEmployee') + }); + + // Create a new employee submit + router.post('/add', (req, res) => { + const newEmployee = req.body; + const createdEmployee = employeeService.createEmployee(newEmployee); + res.redirect('/employees/' + createdEmployee.id) + }); + // Read all employees router.get('/', (req, res) => { const employees = employeeService.getAllEmployees(); @@ -16,4 +28,7 @@ router.get('/:id', (req, res) => { 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 b62e03a..48683b1 100644 --- a/services/employeeService.js +++ b/services/employeeService.js @@ -17,6 +17,15 @@ class EmployeeService { } } + // Helper function to write Employees to JSON file + writeEmployees(employees) { + try { + fs.writeFileSync(this.filePath, JSON.stringify(employees, null, 2), 'utf8'); + } catch (err) { + console.error('Error writing employees:', err); + } + } + // Get all Employees getAllEmployees() { return this.readEmployees(); @@ -27,6 +36,15 @@ class EmployeeService { const employee = this.readEmployees(); return employee.find(employee => employee.id === id); } + + // Create a new employee + createEmployee(newEmployee) { + const employees = this.readEmployees(); + newEmployee.id = employees.length ? employees[employees.length - 1].id + 1 : 1; + employees.push(newEmployee); + this.writeEmployees(employees); + return newEmployee; + } } module.exports = EmployeeService; \ No newline at end of file diff --git a/users.json b/users.json index c3b48ae..fe0202c 100644 --- a/users.json +++ b/users.json @@ -4,5 +4,23 @@ "name": "Shaun", "email": "shaun@test.com", "role": "Software Engineer" + }, + { + "name": "James", + "email": "james@test.com", + "role": "Marketing", + "id": 2 + }, + { + "name": "Tina", + "email": "tina@test.com", + "role": "Finance", + "id": 3 + }, + { + "name": "Brian", + "email": "brian@test.com", + "role": "Finance", + "id": 4 } ] \ No newline at end of file diff --git a/views/addEmployee.ejs b/views/addEmployee.ejs new file mode 100644 index 0000000..f673c91 --- /dev/null +++ b/views/addEmployee.ejs @@ -0,0 +1,32 @@ + + + + + + + Add New Employee + + + +

Add New Employee

+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + +
+ + diff --git a/views/employees.ejs b/views/employees.ejs index 9bc5467..49cd074 100644 --- a/views/employees.ejs +++ b/views/employees.ejs @@ -40,6 +40,10 @@

No employees found.

<% } %> +
+ +
+ From e3e64a8996e66da804206db7ed92bdb3b2ae5a02 Mon Sep 17 00:00:00 2001 From: Ashna Abraham Date: Thu, 16 Jan 2025 11:54:19 +0000 Subject: [PATCH 2/3] tweaks --- employees.json | 82 ++++++++++++++++++++++++++----------------- views/addEmployee.ejs | 2 +- 2 files changed, 50 insertions(+), 34 deletions(-) diff --git a/employees.json b/employees.json index 195a51d..be4cafe 100644 --- a/employees.json +++ b/employees.json @@ -1,34 +1,50 @@ [ - { - "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": "Petuna", - "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 + { + "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": "Petuna", + "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" + }, + { + "name": "ash", + "email": "ash@email.com", + "salary": "1000000", + "role": "software engineer", + "employeeNumber": "12345", + "id": 5 + }, + { + "name": "ash", + "email": "ashna@email.com", + "salary": "10000000", + "role": "software engineer", + "employeeNumber": "39275982", + "id": 6 + } +] \ No newline at end of file diff --git a/views/addEmployee.ejs b/views/addEmployee.ejs index f673c91..a6dd4cf 100644 --- a/views/addEmployee.ejs +++ b/views/addEmployee.ejs @@ -10,7 +10,7 @@

Add New Employee

-
+

From f82e785aa223a14a803a9181c40fe32504c4fc89 Mon Sep 17 00:00:00 2001 From: Nicole Stronge Date: Thu, 16 Jan 2025 14:00:00 +0000 Subject: [PATCH 3/3] Add new employee validation --- employees.json | 8 ++++++++ views/addEmployee.ejs | 20 ++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/employees.json b/employees.json index be4cafe..e6538ec 100644 --- a/employees.json +++ b/employees.json @@ -46,5 +46,13 @@ "role": "software engineer", "employeeNumber": "39275982", "id": 6 + }, + { + "name": "Dan", + "email": "", + "salary": "", + "role": "", + "employeeNumber": "", + "id": 7 } ] \ No newline at end of file diff --git a/views/addEmployee.ejs b/views/addEmployee.ejs index a6dd4cf..100af23 100644 --- a/views/addEmployee.ejs +++ b/views/addEmployee.ejs @@ -11,20 +11,20 @@

Add New Employee

-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+