/**
  * Get Corporate directory employee details as array
  * @param type $includeTerminated
  * @return Array
  */
 public function getCorporateDirectoryEmployeeDetailsAsArray($includeTerminated = false)
 {
     $filters = array();
     if ($includeTerminated) {
         $filters['termination'] = EmployeeSearchForm::WITH_TERMINATED;
     }
     $count = $this->getEmployeeDirectoryService()->getSearchEmployeeCount($filters);
     $parameterHolder = new EmployeeSearchParameterHolder();
     $parameterHolder->setLimit($count);
     $parameterHolder->setFilters($filters);
     $employees = $this->getEmployeeDirectoryService()->searchEmployees($parameterHolder);
     $employeeList = array();
     foreach ($employees as $employee) {
         $employeeDetails = array('emp_number' => $employee->getEmpNumber(), 'employee_id' => $employee->getEmployeeId(), 'emp_firstname' => $employee->getFirstName(), 'emp_lastname' => $employee->getLastName(), 'home_telephone' => $employee->getEmpHmTelephone(), 'work_telephone' => $employee->getEmpWorkTelephone(), 'mobile' => $employee->getEmpMobile(), 'work_email' => $employee->getEmpWorkEmail(), 'other_email' => $employee->getEmpOthEmail(), 'profile_image_url' => url_for('directory/viewDirectoryPhoto?empNumber=' . $employee->getEmpNumber()), 'terminated' => $employee->getTerminationId());
         if ($employee->getLocations()->getFirst() instanceof Location) {
             $employeeDetails['location_id'] = $employee->getLocations()->getFirst()->getId();
         } else {
             $employeeDetails['location_id'] = null;
         }
         if ($employee->getJobTitleCode() instanceof JobTitle) {
             $employeeDetails['job_title_id'] = $employee->getJobTitleCode()->getId();
         } else {
             $employeeDetails['job_title_id'] = null;
         }
         if ($employee->getSubDivision() instanceof Subunit) {
             $employeeDetails['subunit_id'] = $employee->getSubDivision()->getId();
         } else {
             $employeeDetails['subunit_id'] = null;
         }
         $employeeList[] = $employeeDetails;
     }
     return $employeeList;
 }
 private function _getParameterHolder()
 {
     $filters = array('employee_name' => 'Kayla', 'id' => '', 'employee_status' => 0, 'termination' => 1, 'supervisor_name' => '', 'job_title' => 0, 'sub_unit' => 0);
     $parameterHolder = new EmployeeSearchParameterHolder();
     $parameterHolder->setFilters($filters);
     $parameterHolder->setOrderField('empNumber');
     return $parameterHolder;
 }
 private function _getParameterHolder()
 {
     $filters = array('employee_name' => 'Saman', 'id' => '', 'job_title' => 0);
     $parameterHolder = new EmployeeSearchParameterHolder();
     $parameterHolder->setFilters($filters);
     $parameterHolder->setOrderField('empNumber');
     return $parameterHolder;
 }
 protected function getMatchingEmployees($parameters)
 {
     $parameterHolder = new EmployeeSearchParameterHolder();
     $filters = array('location' => $parameters['location'], 'sub_unit' => $parameters['subunit']);
     $parameterHolder->setFilters($filters);
     $parameterHolder->setLimit(NULL);
     $employees = $this->getEmployeeService()->searchEmployees($parameterHolder);
     $names = array();
     foreach ($employees as $employee) {
         $names[] = $employee->getFullName();
     }
     return $names;
 }
 /**
  * Get employees matching the filter parameters.
  * @param type $parameters
  * @return type
  */
 protected function getMatchingEmployees($parameters)
 {
     $parameterHolder = new EmployeeSearchParameterHolder();
     $filters = array('location' => $parameters['location'], 'sub_unit' => $parameters['subunit']);
     $parameterHolder->setFilters($filters);
     $parameterHolder->setLimit(NULL);
     $parameterHolder->setReturnType(EmployeeSearchParameterHolder::RETURN_TYPE_ARRAY);
     $employees = $this->getEmployeeService()->searchEmployees($parameterHolder);
     $ids = array();
     foreach ($employees as $employee) {
         $ids[] = $employee['empNumber'];
     }
     return $ids;
 }
 protected function getMatchingEmployees($parameters)
 {
     $parameterHolder = new EmployeeSearchParameterHolder();
     $filters = array('location' => $parameters['location'], 'sub_unit' => $parameters['subunit']);
     $fromDate = isset($parameters['fd']) ? $parameters['fd'] : null;
     $toDate = isset($parameters['td']) ? $parameters['td'] : null;
     $leaveType = isset($parameters['lt']) ? $parameters['lt'] : null;
     $newValue = isset($parameters['ent']) ? $parameters['ent'] : null;
     $offset = isset($parameters['offset']) ? $parameters['offset'] : 0;
     $pageSize = sfConfig::get('app_items_per_page');
     $parameterHolder->setFilters($filters);
     $parameterHolder->setOffset($offset);
     $parameterHolder->setLimit($pageSize);
     $parameterHolder->setReturnType(EmployeeSearchParameterHolder::RETURN_TYPE_ARRAY);
     $employees = $this->getEmployeeService()->searchEmployees($parameterHolder);
     $names = array();
     foreach ($employees as $employee) {
         $leaveEntitlementSearchParameterHolder = new LeaveEntitlementSearchParameterHolder();
         $leaveEntitlementSearchParameterHolder->setEmpNumber($employee['empNumber']);
         $leaveEntitlementSearchParameterHolder->setFromDate($fromDate);
         $leaveEntitlementSearchParameterHolder->setLeaveTypeId($leaveType);
         $leaveEntitlementSearchParameterHolder->setToDate($toDate);
         $entitlementList = $this->getEntitlementService()->searchLeaveEntitlements($leaveEntitlementSearchParameterHolder);
         $oldValue = 0;
         if (count($entitlementList) > 0) {
             $existingLeaveEntitlement = $entitlementList->getFirst();
             $oldValue = $existingLeaveEntitlement->getNoOfDays();
         }
         $names[] = array($employee['firstName'] . ' ' . $employee['middleName'] . ' ' . $employee['lastName'], $oldValue, $newValue + $oldValue);
     }
     $data = array('offset' => $offset, 'pageSize' => $pageSize, 'data' => $names);
     return $data;
 }
 /**
  * Get employee list after sorting and filtering using given parameters.
  *
  * @param EmployeeSearchParameterHolder $parameterHolder
  */
 public function searchEmployees(EmployeeSearchParameterHolder $parameterHolder)
 {
     $sortField = $parameterHolder->getOrderField();
     $sortOrder = $parameterHolder->getOrderBy();
     $offset = $parameterHolder->getOffset();
     $limit = $parameterHolder->getLimit();
     $filters = $parameterHolder->getFilters();
     $returnType = $parameterHolder->getReturnType();
     $select = '';
     $query = '';
     $bindParams = array();
     $orderBy = '';
     $this->_getEmployeeListQuery($select, $query, $bindParams, $orderBy, $sortField, $sortOrder, $filters);
     $completeQuery = $select . ' ' . $query . ' ' . $orderBy;
     if (!is_null($offset) && !is_null($limit)) {
         $completeQuery .= ' LIMIT ' . $offset . ', ' . $limit;
     }
     if (sfConfig::get('sf_logging_enabled')) {
         $msg = $completeQuery;
         if (count($bindParams) > 0) {
             $msg .= ' (' . implode(',', $bindParams) . ')';
         }
         sfContext::getInstance()->getLogger()->info($msg);
     }
     $conn = Doctrine_Manager::connection();
     $statement = $conn->prepare($completeQuery);
     $result = $statement->execute($bindParams);
     if ($returnType == EmployeeSearchParameterHolder::RETURN_TYPE_OBJECT) {
         $employees = new Doctrine_Collection(Doctrine::getTable('Employee'));
         if ($result) {
             while ($row = $statement->fetch()) {
                 $employee = new Employee();
                 $employee->setEmpNumber($row['empNumber']);
                 $employee->setEmployeeId($row['employeeId']);
                 $employee->setFirstName($row['firstName']);
                 $employee->setMiddleName($row['middleName']);
                 $employee->setLastName($row['lastName']);
                 $employee->setTerminationId($row['terminationId']);
                 $jobTitle = new JobTitle();
                 $jobTitle->setId($row['jobTitleId']);
                 $jobTitle->setJobTitleName($row['jobTitle']);
                 $jobTitle->setIsDeleted($row['isDeleted']);
                 $employee->setJobTitle($jobTitle);
                 $employeeStatus = new EmploymentStatus();
                 $employeeStatus->setId($row['employeeStatusId']);
                 $employeeStatus->setName($row['employeeStatus']);
                 $employee->setEmployeeStatus($employeeStatus);
                 $workStation = new SubUnit();
                 $workStation->setName($row['subDivision']);
                 $workStation->setId($row['subDivisionId']);
                 $employee->setSubDivision($workStation);
                 $supervisorList = isset($row['supervisors']) ? $row['supervisors'] : '';
                 if (!empty($supervisorList)) {
                     $supervisors = new Doctrine_Collection(Doctrine::getTable('Employee'));
                     $supervisorArray = explode(',', $supervisorList);
                     foreach ($supervisorArray as $supervisor) {
                         list($first, $middle, $last) = explode('##', $supervisor);
                         $supervisor = new Employee();
                         $supervisor->setFirstName($first);
                         $supervisor->setMiddleName($middle);
                         $supervisor->setLastName($last);
                         $employee->supervisors[] = $supervisor;
                     }
                 }
                 $locationList = $row['locationIds'];
                 if (!empty($locationList)) {
                     //                    $locations = new Doctrine_Collection(Doctrine::getTable('EmpLocations'));
                     $locationArray = explode(',', $locationList);
                     foreach ($locationArray as $location) {
                         list($id, $name) = explode('##', $location);
                         $empLocation = new Location();
                         $empLocation->setId($id);
                         $empLocation->setName($name);
                         $employee->locations[] = $empLocation;
                     }
                 }
                 $employees[] = $employee;
             }
         }
     } else {
         return $statement->fetchAll();
     }
     return $employees;
 }
 public function execute($request)
 {
     $request->setParameter('initialActionName', 'viewDirectory');
     $isPaging = $request->getParameter('hdnAction') == 'search' ? 1 : $request->getParameter('pageNo', 1);
     $pageNumber = $isPaging;
     if (!empty($empNumber) && $this->getUser()->hasAttribute('pageNumber')) {
         $pageNumber = $this->getUser()->getAttribute('pageNumber');
     }
     $noOfRecords = sfConfig::get('app_items_per_page');
     $offset = $pageNumber >= 1 ? ($pageNumber - 1) * $noOfRecords : ($request->getParameter('pageNo', 1) - 1) * $noOfRecords;
     // Reset filters if requested to
     if ($request->hasParameter('reset')) {
         $this->setFilters(array());
         $this->setSortParameter(array("field" => NULL, "order" => NULL));
         $this->setPage(1);
     }
     $this->setForm(new EmployeeDirectorySearchForm($this->getFilters()));
     //handles post method
     if ($request->isMethod('post')) {
         $this->form->bind($request->getParameter($this->form->getName()));
         if ($this->form->isValid()) {
             if ($this->form->getValue('isSubmitted') == 'yes') {
                 $this->setSortParameter(array("field" => NULL, "order" => NULL));
             }
             $this->setFilters($this->form->getValues());
         } else {
             $this->setFilters(array());
         }
         $this->setPage(1);
     }
     //handles get method
     if ($request->isMethod('get')) {
         $sortParam = array("field" => $request->getParameter('sortField'), "order" => $request->getParameter('sortOrder'));
         $this->setSortParameter($sortParam);
         $this->setPage(1);
     }
     $filters = $this->getFilters();
     if (isset($filters['emp_name']) && $filters['emp_name']['empName'] != __('Type for hints...')) {
         if (strpos($filters['emp_name']['empName'], __('Past Employee')) !== false) {
             $filters['termination'] = EmployeeSearchForm::WITH_TERMINATED;
         }
         $filters['employee_name'] = str_replace(' (' . __('Past Employee') . ')', '', $filters['emp_name']['empName']);
     }
     $this->filterApply = !empty($filters);
     $empList = $this->getEmployeeService()->getEmployeeIdList();
     if (count($empList) > 0) {
         $filters['employee_id_list'] = $empList;
         $count = $this->getDirectoryService()->getSearchEmployeeCount($filters);
         $parameterHolder = new EmployeeSearchParameterHolder();
         $parameterHolder->setOrderField($sortField);
         $parameterHolder->setOrderBy($sortOrder);
         $parameterHolder->setLimit($noOfRecords);
         $parameterHolder->setOffset($offset);
         $parameterHolder->setFilters($filters);
         $this->list = $this->getDirectoryService()->searchEmployees($parameterHolder);
     } else {
         $count = 0;
         $list = array();
     }
     $recordsLimit = sfConfig::get('app_items_per_page');
     //self::$itemsPerPage;//
     $pageNo = $request->getParameter('pageNo', 1);
     /*         * if (self::$pageNumber) {
               $pageNo = self::$pageNumber;
               } else { */
     //$pageNo = 1; //$request->getParameter('pageNo', 1);
     //}
     $numberOfRecords = $count;
     //replace with the count of all the records(self::$listData instanceof Doctrine_Collection) ? self::$listData->count() : count(self::$listData); // TODO: Remove the dependancy of ORM here; Use a Countable interface and a Iterator interface
     if ($recordsLimit < $numberOfRecords) {
         $this->isPaginated = TRUE;
     }
     $pager = new SimplePager($this->className, $recordsLimit);
     $pager->setPage($pageNo);
     $pager->setNumResults($numberOfRecords);
     $pager->init();
     $offset = $pager->getOffset();
     $offset = empty($offset) ? 0 : $offset;
     $this->offset = $offset;
     $this->pager = $pager;
     $this->recordLimit = $recordsLimit;
     //$this->currentSortField = $request->getParameter('sortField', '');
     //$this->currentSortOrder = $request->getParameter('sortOrder', '');
 }
 /**
  * Index action. Displays employee list
  *      `
  * @param sfWebRequest $request
  */
 public function execute($request)
 {
     if ($this->getUser()->hasFlash('templateMessage')) {
         list($this->messageType, $this->message) = $this->getUser()->getFlash('templateMessage');
     }
     $empNumber = $request->getParameter('empNumber');
     $isPaging = $request->getParameter('hdnAction') == 'search' ? 1 : $request->getParameter('pageNo', 1);
     $pageNumber = $isPaging;
     if (!empty($empNumber) && $this->getUser()->hasAttribute('pageNumber')) {
         $pageNumber = $this->getUser()->getAttribute('pageNumber');
     }
     $noOfRecords = sfConfig::get('app_items_per_page');
     $offset = $pageNumber >= 1 ? ($pageNumber - 1) * $noOfRecords : ($request->getParameter('pageNo', 1) - 1) * $noOfRecords;
     // Reset filters if requested to
     if ($request->hasParameter('reset')) {
         $this->setFilters(array());
         $this->setSortParameter(array("field" => NULL, "order" => NULL));
         $this->setPage(1);
     }
     $this->form = new EmployeeSearchForm($this->getFilters());
     if ($request->isMethod('post')) {
         $this->form->bind($request->getParameter($this->form->getName()));
         if ($this->form->isValid()) {
             if ($this->form->getValue('isSubmitted') == 'yes') {
                 $this->setSortParameter(array("field" => NULL, "order" => NULL));
             }
             $this->setFilters($this->form->getValues());
         } else {
             $this->setFilters(array());
         }
         $this->setPage(1);
     }
     if ($request->isMethod('get')) {
         $sortParam = array("field" => $request->getParameter('sortField'), "order" => $request->getParameter('sortOrder'));
         $this->setSortParameter($sortParam);
         $this->setPage(1);
     }
     $sort = $this->getSortParameter();
     $sortField = $sort["field"];
     $sortOrder = $sort["order"];
     $filters = $this->getFilters();
     if (isset($filters['employee_name'])) {
         $filters['employee_name'] = str_replace(' (' . __('Past Employee') . ')', '', $filters['employee_name']['empName']);
     }
     if (isset($filters['supervisor_name'])) {
         $filters['supervisor_name'] = str_replace(' (' . __('Past Employee') . ')', '', $filters['supervisor_name']);
     }
     $this->filterApply = !empty($filters);
     $accessibleEmployees = UserRoleManagerFactory::getUserRoleManager()->getAccessibleEntityIds('Employee');
     if (count($accessibleEmployees) > 0) {
         $filters['employee_id_list'] = $accessibleEmployees;
         $count = $this->getEmployeeService()->getSearchEmployeeCount($filters);
         $parameterHolder = new EmployeeSearchParameterHolder();
         $parameterHolder->setOrderField($sortField);
         $parameterHolder->setOrderBy($sortOrder);
         $parameterHolder->setLimit($noOfRecords);
         $parameterHolder->setOffset($offset);
         $parameterHolder->setFilters($filters);
         $list = $this->getEmployeeService()->searchEmployees($parameterHolder);
     } else {
         $count = 0;
         $list = array();
     }
     $this->setListComponent($list, $count, $noOfRecords, $pageNumber);
     // Show message if list is empty, and we don't already have a message.
     if (empty($this->message) && count($list) == 0) {
         // Check to see if we have any employees in system
         $employeeCount = $this->getEmployeeService()->getEmployeeCount();
         $this->messageType = "warning";
         if (empty($employeeCount)) {
             $this->message = __("No Employees Available");
         } else {
             $this->message = __(TopLevelMessages::NO_RECORDS_FOUND);
         }
     }
 }