diff --git a/employees.json b/employees.json index 195a51d..e6538ec 100644 --- a/employees.json +++ b/employees.json @@ -1,34 +1,58 @@ [ - { - "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 + }, + { + "name": "Dan", + "email": "", + "salary": "", + "role": "", + "employeeNumber": "", + "id": 7 + } +] \ No newline at end of file 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..100af23 --- /dev/null +++ b/views/addEmployee.ejs @@ -0,0 +1,32 @@ + + + +
+ + +No employees found.
<% } %> + +