public static Event companyBurnt(Employee e, Company c) throws EmployeeNotExist {
   List<Employee> emList = c.getEmployeeList();
   for (Employee employee : emList) {
     if (!employee.isLoyal()) {
       Utilities.getInstance().unassignComputerToEmployee(c, employee);
       c.removeEmployee(employee);
       c.decreaseMoney(c.getMoney() * 2 / 3);
     }
   }
   return Event.COMPANY_IS_BURNT_DOWN_BY_ANONYMOUS;
 }
 public static Event newTechnology(Employee e) {
   Project p = e.getWorkingProject();
   if (p != null) {
     Map<Skill, Employee> skill = e.getWorkingProject().getSkill_employeeMap();
     Map<Skill, Integer> require = e.getWorkingProject().getSkillRequirementMap();
     for (Skill sk : skill.keySet()) {
       if (skill.get(sk) != null && skill.get(sk).equals(e)) {
         require.put(sk, require.get(sk) - 50);
         e.getWorkingProject().decreaseRemainingPoint(50);
       }
     }
     return Event.NEW_TECHNOLOGY;
   }
   return Event.NO_EVENT;
 }
 public static Event featureCut(Employee e) {
   Project p = e.getWorkingProject();
   if (p != null) {
     Map<Skill, Employee> skill = e.getWorkingProject().getSkill_employeeMap();
     Map<Skill, Integer> require = e.getWorkingProject().getSkillRequirementMap();
     for (Skill sk : skill.keySet()) {
       if (skill.get(sk) != null && skill.get(sk).equals(e)) {
         int remainPoint = require.get(sk);
         require.put(sk, 0);
         e.getWorkingProject().decreaseRemainingPoint(remainPoint);
       }
     }
     return Event.FEATURE_CUT;
   }
   return Event.NO_EVENT;
 }
 public static Event teamBuilding(Employee e) {
   Project p = e.getWorkingProject();
   if (p != null) {
     Map<Skill, Employee> emList = p.getSkill_employeeMap();
     for (Skill sk : emList.keySet()) {
       if (emList.get(sk) != null) {
         emList.get(sk).getTeamBuilding();
       }
     }
     return Event.TEAM_BUILDING_EXERCISE;
   }
   return Event.NO_EVENT;
 }
 public static Event projectStolen(Employee e, Company c) {
   try {
     Project p = e.getWorkingProject();
     if (p != null) {
       c.cancelProject(p);
       Utilities.getInstance().unassignComputerToEmployee(c, e);
       c.removeEmployee(e);
       return Event.PROJECT_IS_STOLEN_BY_EMPLOYEE;
     } else {
       return Event.NO_EVENT;
     }
   } catch (EmployeeNotExist ex) {
   } finally {
     return Event.NO_EVENT;
   }
 }
 public static Event redundancies(Employee e, Company c) throws EmployeeNotExist {
   Project p = e.getWorkingProject();
   List<Employee> removeEmp = new ArrayList();
   if (p != null) {
     Map<Skill, Employee> skill = p.getSkill_employeeMap();
     for (Skill sk : skill.keySet()) {
       if (skill.get(sk) != null && skill.get(sk).equals(e)) {
         c.addEmployeeToRemoveList(e);
       } else if (skill.get(sk) != null) {
         skill.get(sk).sad();
       }
     }
     for (Employee employee : removeEmp) {
       Utilities.getInstance().unassignComputerToEmployee(c, employee);
       c.removeEmployee(employee);
     }
     return Event.REDUNDANCIES;
   }
   return Event.NO_EVENT;
 }
 public static Event exploreTalent(Employee e) {
   e.getTalented();
   return Event.EXPLORE_THE_EMPLOYEE_HAVING_TALENT;
 }
 public static Event holiday(Employee e) {
   e.goHoliday();
   return Event.HOLIDAY;
 }
 public static Event hacked(Employee e) {
   e.getHacked();
   return Event.HACKED;
 }
 public static Event sickDeveloper(Employee e) {
   e.sick();
   return Event.DEVELOPER_IS_SICK;
 }
 public static Event developerHasBaby(Employee e) {
   e.hasBaby();
   return Event.DEVELOPER_HAS_BABY;
 }