예제 #1
0
 /**
  * Used to retrieve a set of employees assigned to a contract.
  *
  * @param id The contract id for which assigned employees are to be
  * retrieved.
  *
  * @param day The day for which contract assignments must be valid.
  *
  * @return Returns the requested contract employees.
  */
 public function getContractEmployees($id, $day = null)
 {
     // Make sure the id is valid.
     if (!isset($id) || !is_numeric($id)) {
         return array();
     }
     // Get the database adapter.
     $db = $this->getAdapter();
     // Set the fetch mode.
     $db->setFetchMode(Zend_Db::FETCH_OBJ);
     // Get the select object.
     $select = $db->select();
     // Get the DAO for the table we will be joining with.
     $assignmentDao = new ContractAssignmentDao();
     // Build the query.
     $select->from(array('a' => $assignmentDao->_name))->join(array('e' => $this->_name), 'a.employee_id = e.id', array('login', 'email', 'first_name', 'last_name', 'suffix', 'division', 'personnel_type', 'active'))->where('a.contract_id = ?', $id)->where('e.active = true');
     // Make sure the pay period is not null before adding the
     // clause to prevent expired contracts from being retrieved.
     if (isset($day)) {
         $select->where('start IS NULL OR start <= ?', $day);
         $select->where('end IS NULL OR end >= ?', $day);
     }
     // Add ordering.
     $this->setDefaultOrder($select);
     // Retrieve all the objects.
     $objs = $db->query($select)->fetchAll();
     // Perform post-processing on all the objects.
     if (isset($objs) && count($objs) > 0) {
         // Iterate over the identified employees.
         foreach ($objs as $obj) {
             // Make sure the employee id value is valid.
             if (is_numeric($obj->id)) {
                 // Set the employee's roles.
                 $roleDao = new RoleDao();
                 $obj->roles = $roleDao->getForEmployee($obj->id);
                 // Set the employee's supervisors.
                 $obj->supervisors = $this->getSupervisorEmployees($obj->id);
                 // Set the employees this employee is supervising.
                 $obj->supervised = $this->getSupervisedEmployees($obj->id);
             }
             // Perform the post-processing.
             $this->postProcess($obj);
         }
     }
     // Return the objects.
     return $objs;
 }