/**
   * Check in an attendee to their appropriate party based on the party leader which is simply
   * either the team lead or manager.
   */
  private void checkIn(AbstractWorker attendee, AbstractWorker partyLeader) {
    System.out.printf("%s %s", driver.getTime().toString(), attendee.checkInToConfRoom());

    Party party = getParty(partyLeader);
    if (party == null) {
      if (partyLeader.equals(attendee) && (partyLeader instanceof Employee)) {
        // only party leader can create party
        party = this.new Party(partyLeader, this);
        reservationList.add(party);
      } else if ((partyLeader instanceof Manager)) {
        party = this.new Party(partyLeader, this);
        reservationList.add(party);
      }
    }

    party.addAttendee(attendee);
  }
 /** Called when the party that previously occupied the Conference Room leaves. */
 private void partyLeavesRoom(Party party) {
   System.out.printf(
       "%s Meeting led by %s is now over. Conference room is free. %n",
       driver.getTime(), party.getPartyLeader().getName());
 }
 /** Called when the party that gets a lock to the room occupies the room for their meeting. */
 private void partyEntersRoom(Party party) {
   System.out.printf(
       "%s Meeting led by %s is now starting. Conference room is taken. %n",
       driver.getTime(), party.getPartyLeader().getName());
 }
 /**
  * Allows an Employee to see if they can check-in to the Proj Mgr Meeting. An Employee can check
  * into the Proj Mgr if: - The time is 4:00-4:15 PM. Requiring Employee ensures a Manager never
  * calls this method.
  */
 public boolean canCheckInToProjMngrMtg(AbstractWorker attendee) {
   // TODO use SimulationTime compare To method
   Calendar startTime = Calendar.getInstance();
   startTime.set(0, 0, 0, 4 + 12, 0, 0);
   return driver.getTime().eventDue(startTime);
 }