Advertisement
Liliana797979

2_js advanced exam

Oct 12th, 2021
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solveClasses() {
  2.  
  3.     class Developer {
  4.  
  5.         constructor(firstName, lastName) {
  6.  
  7.             this.firstName = firstName;
  8.  
  9.             this.lastName = lastName;
  10.  
  11.             this.baseSalary = 1000;
  12.  
  13.             this.tasks = [];
  14.  
  15.             this.experience = 0;
  16.  
  17.         }
  18.  
  19.  
  20.  
  21.         addTask(id, taskName, priority) {
  22.  
  23.             if (priority === 'high') {
  24.  
  25.                 this.tasks.unshift({ id, taskName, priority });
  26.  
  27.             }
  28.  
  29.             else {
  30.  
  31.                 this.tasks.push({ id, taskName, priority });
  32.  
  33.             }
  34.  
  35.  
  36.  
  37.             return `Task id ${id}, with ${priority} priority, has been added.`;
  38.  
  39.         }
  40.  
  41.  
  42.  
  43.         doTask() {
  44.  
  45.             let task;
  46.  
  47.             let index = 0;
  48.  
  49.  
  50.  
  51.             for (let i = this.tasks.length; i > 0; i++) {
  52.  
  53.                 if (this.tasks[i].priority === 'high') {
  54.  
  55.                     task = this.tasks[i];
  56.  
  57.                     break;
  58.  
  59.                 }
  60.  
  61.             }
  62.  
  63.  
  64.  
  65.             index = this.tasks.indexOf(task);
  66.  
  67.  
  68.  
  69.             this.tasks = this.tasks.splice(index, 1);
  70.  
  71.  
  72.  
  73.             return `${task.taskName}, you have finished all your tasks. You can rest now.`;
  74.  
  75.         }
  76.  
  77.  
  78.  
  79.         getSalary() {
  80.  
  81.             return `${this.firstName} ${this.lastName} has a salary of: ${this.baseSalary}`;
  82.  
  83.         }
  84.  
  85.  
  86.  
  87.         reviewTasks() {
  88.  
  89.             let result = [];
  90.  
  91.  
  92.  
  93.             result.push('Tasks, that need to be completed:');
  94.  
  95.  
  96.  
  97.             for (let task of this.tasks) {
  98.  
  99.                 result.push(`${task.id}: ${task.taskName} - ${task.priority}`);
  100.  
  101.             }
  102.  
  103.  
  104.  
  105.             return result.join('\n');
  106.  
  107.         }
  108.  
  109.     }
  110.  
  111.  
  112.  
  113.     class Junior extends Developer {
  114.  
  115.         constructor(firstName, lastName, bonus, experience) {
  116.  
  117.             super(firstName, lastName);
  118.  
  119.             this.baseSalary = this.baseSalary + bonus;
  120.  
  121.             this.tasks = [];
  122.  
  123.             this.experience = experience;
  124.  
  125.         }
  126.  
  127.  
  128.  
  129.         learn(years) {
  130.  
  131.             this.experience += Number(years);
  132.  
  133.         }
  134.  
  135.     }
  136.  
  137.  
  138.  
  139.     class Senior extends Developer {
  140.  
  141.         constructor(firstName, lastName, bonus, experience) {
  142.  
  143.             super(firstName, lastName);
  144.  
  145.             this.baseSalary = this.baseSalary + bonus;
  146.  
  147.             this.experience = Number(experience) + 5;
  148.  
  149.         }
  150.  
  151.  
  152.  
  153.         changeTaskPriority(taskId) {
  154.  
  155.             let task = this.tasks.find(x => x.id === taskId);
  156.  
  157.             let index = this.tasks.indexOf(task);
  158.  
  159.  
  160.  
  161.             this.tasks = this.tasks.splice(index, 1);
  162.  
  163.  
  164.  
  165.             if (task.priority === 'high') {
  166.  
  167.                 task.priority = 'low';
  168.  
  169.                 this.tasks.push(task);
  170.  
  171.             }
  172.  
  173.             else {
  174.  
  175.                 task.priority = 'high';
  176.  
  177.                 this.tasks.unshift(task);
  178.  
  179.             }
  180.  
  181.  
  182.  
  183.             return task;
  184.  
  185.         }
  186.  
  187.     }
  188.  
  189.  
  190.  
  191.     return {
  192.  
  193.         Developer,
  194.  
  195.         Junior,
  196.  
  197.         Senior
  198.  
  199.     }
  200.  
  201. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement