Advertisement
Guest User

Untitled

a guest
Jun 14th, 2020
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.39 KB | None | 0 0
  1. class Company {
  2. constructor() {
  3. this.departments = [];
  4. }
  5. addEmployee(username, salary, position, department) {
  6. if ([...arguments].includes(null) || [...arguments].length < 4 || salary < 0) {
  7. throw "Invalid input!";
  8. } else {
  9. const newEmployee = {
  10. username: username,
  11. salary: salary,
  12. position: position,
  13. department: department
  14. }
  15. if (c.departments.filter(function(e) { return e.name === department; }).length > 0) {
  16. for (let existingDepartment of this.departments){
  17. if (existingDepartment.name === department) {
  18. existingDepartment.users.push(newEmployee);
  19. existingDepartment.totalSalary += salary;
  20. }
  21. }
  22. } else {
  23. let newDepartment = {
  24. name: department,
  25. users: [newEmployee],
  26. totalSalary: salary,
  27. averageSalary(){return this.totalSalary / this.users.length}
  28. }
  29. this.departments.push(newDepartment);
  30. }
  31. return `New employee is hired. Name: ${username}. Position: ${position}`
  32.  
  33. }
  34. }
  35.  
  36. bestDepartment() {
  37. let bestDepartment = this.departments.sort((a,b)=>(a.averageSalary - b.averageSalary))[0];
  38. bestDepartment.users = bestDepartment.users.sort(function(a, b) {
  39. if (a.username === b.username) {
  40. // Price is only important when cities are the same
  41. return b.username - a.username;
  42. }
  43. return a.salary < b.salary ? 1 : -1;
  44. });
  45. let result = `Best Department is: ${bestDepartment.name}\nAverage salary: ${bestDepartment.averageSalary().toFixed(2)}`
  46. for (let user of bestDepartment.users) {
  47. result += `\n${user.username} ${user.salary} ${user.position}`
  48. }
  49. return result;
  50. }
  51. }
  52.  
  53.  
  54. // let c = new Company();
  55. // c.addEmployee("Stanimir", 2000, "engineer", "Construction");
  56. // c.addEmployee("Pesho", 1500, "electrical engineer", "Construction");
  57. // c.addEmployee("Slavi", 500, "dyer", "Construction");
  58. // c.addEmployee("Stan", 2000, "architect", "Construction");
  59. // c.addEmployee("Stanimir", 1200, "digital marketing manager", "Marketing");
  60. // c.addEmployee("Pesho", 1000, "graphical designer", "Marketing");
  61. // c.addEmployee("Gosho", 1350, "HR", "Human resources");
  62. // console.log(c.bestDepartment());
  63.  
  64.  
  65. var assert = require('assert');
  66. //let Company = result;
  67. let c = new Company();
  68.  
  69. let actual1 = c.addEmployee("Stanimir", 2000, "engineer", "Human resources");
  70. let expected1 = "New employee is hired. Name: Stanimir. Position: engineer";
  71. assert.equal(actual1,expected1);
  72.  
  73. c.addEmployee("Pesho", 1500, "electrical engineer", "Construction");
  74. c.addEmployee("Slavi", 500, "dyer", "Construction");
  75. c.addEmployee("Stan", 2000, "architect", "Construction");
  76. c.addEmployee("Stanimir", 1200, "digital marketing manager", "Marketing");
  77. c.addEmployee("Pesho", 1000, "graphical designer", "Marketing");
  78. c.addEmployee("Gosho", 1350, "HR", "Human resources");
  79.  
  80. let act = c.bestDepartment();
  81. let exp = "Best Department is: Human resources\nAverage salary: 1675.00\nStanimir 2000 engineer\nGosho 1350 HR";
  82. assert.equal(act,exp);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement