Advertisement
Daniel_007

02. Employees

Oct 24th, 2020
3,006
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solveClasses() {
  2.   class Developer {
  3.     constructor(firstName, lastName) {
  4.       this.firstName = firstName;
  5.       this.lastName = lastName;
  6.       this.baseSalary = 1000;
  7.       this.tasks = [];
  8.       this.experience = 0;
  9.     }
  10.     addTask(id, taskName, priority) {
  11.       let task = { id, taskName, priority };
  12.       if (priority == "high") {
  13.         this.tasks.unshift(task);
  14.       } else {
  15.         this.tasks.push(task);
  16.       }
  17.  
  18.       return `Task id ${id}, with ${priority} priority, has been added.`;
  19.     }
  20.     doTask() {
  21.       if (this.tasks.length == 0) {
  22.         return `${this.firstName}, you have finished all your tasks. You can rest now.`;
  23.       } else {
  24.         let removed = this.tasks.shift();
  25.         return removed.taskName;
  26.       }
  27.     }
  28.     getSalary() {
  29.       return `${this.firstName} ${this.lastName} has a salary of: ${this.baseSalary}`;
  30.     }
  31.     reviewTasks() {
  32.       let taskMessage = "Tasks, that need to be completed:";
  33.       this.tasks.forEach((task) => {
  34.         taskMessage += "\n" + `${task.id}: ${task.taskName} - ${task.priority}`;
  35.       });
  36.       return taskMessage;
  37.     }
  38.   }
  39.   class Junior extends Developer {
  40.     constructor(firstName, lastName, bonus, experience) {
  41.       super(firstName, lastName);
  42.       this.baseSalary = 1000 + bonus;
  43.       this.experience = experience;
  44.     }
  45.     learn(years) {
  46.       this.experience += years;
  47.     }
  48.   }
  49.   class Senior extends Developer {
  50.     constructor(firstName, lastName, bonus, experience) {
  51.       super(firstName, lastName);
  52.       this.baseSalary = 1000 + bonus;
  53.       this.experience = experience + 5;
  54.     }
  55.     changeTaskPriority(taskId) {
  56.        
  57.         let currentTask = this.tasks.find(i=>i.id==taskId);
  58.         let currentTaskIndex = this.tasks.findIndex(i=>i.id==taskId);
  59.         this.tasks.splice(currentTaskIndex,1);
  60.         if(currentTask.priority=='high'){
  61.             currentTask.priority='low';
  62.             this.tasks.push(currentTask);
  63.         }else{
  64.             currentTask.priority='high';
  65.             this.tasks.unshift(currentTask);
  66.         }
  67.     }
  68.   }
  69.   return {
  70.     Developer,
  71.     Junior,
  72.     Senior,
  73.   };
  74. }
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement