Changeset 7177


Ignore:
Timestamp:
09/06/12 10:47:22 (12 years ago)
Author:
asaikawa
Message:

Ticket #3078 - Criado metodo que lista todos os funcionarios de uma organizacao

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/workflow/inc/local/classes/class.wf_orgchart.php

    r7037 r7177  
    111111 
    112112                $output = $result->GetArray(-1); 
     113 
     114                return $output; 
     115        } 
     116 
     117        /** 
     118         * Busca os funcionários de uma organização 
     119         * 
     120         * Este método irá buscar na tabela de funcionários, todos os funcionários que pertencem à organização solicitada. 
     121         * @param int $organizationID O ID da organização. 
     122         * @param boolean $searchLdap True, caso seja necessário buscar no LDAP os dados dos usuários. Ou false, caso contrário. 
     123         * @param int $employeeStatusID O ID do status dos funcionários a serem listados. 
     124         * @return array Uma array seqüencial contendo os funcionários de uma organização. Cada linha do array conterá: 
     125         * - organizacao_id 
     126         * - funcionario_id: uidNumber do funcionário 
     127         * - localidade_id 
     128         * - localidade_descricao 
     129         * - area_id 
     130         * - area_sigla 
     131         * - centro_custo_id 
     132         * - nm_centro_custo: número do centro de custo 
     133         * - centro_custo_descricao 
     134         * - nome: nome do funcionário (quando busca no Ldap) 
     135         * - email: email do funcionário (quando busca no Ldap) 
     136         * - telefone: telefone do funcionário (quando busca no Ldap) 
     137         * @access public 
     138         */ 
     139        function getOrganizationEmployees($organizationID, $searchLdap = false, $employeeStatusID = null) 
     140        { 
     141                $query = "SELECT f.organizacao_id, " . 
     142                                 "       f.funcionario_id, " . 
     143                                 "       l.localidade_id, " . 
     144                                 "       l.descricao AS localidade_descricao, " . 
     145                                 "       a.area_id, " . 
     146                                 "       a.sigla AS area_sigla, " . 
     147                                 "       c.centro_custo_id, " . 
     148                                 "       c.nm_centro_custo, " . 
     149                                 "       c.descricao AS centro_custo_descricao " . 
     150                                 " FROM funcionario f " . 
     151                                 "  INNER JOIN area a " . 
     152                                 "  ON (f.area_id = a.area_id) " . 
     153                                 "  INNER JOIN localidade l " . 
     154                                 "  ON (f.localidade_id = l.localidade_id) " . 
     155                                 "  LEFT OUTER JOIN centro_custo c " . 
     156                                 "  ON (COALESCE(f.centro_custo_id, l.centro_custo_id, a.centro_custo_id) = c.centro_custo_id) " . 
     157                                 " WHERE " . 
     158                                 "      f.organizacao_id = ? "; 
     159 
     160                $bindValues = array($organizationID); 
     161 
     162                // Se desejar somente retornar as áreas que estão ativas 
     163                if(!empty($employeeStatusID)){ 
     164                        $query .=" AND f.funcionario_status_id = ? "; 
     165                        $bindValues[] = $employeeStatusID; 
     166                } 
     167 
     168                $query .= " ORDER BY f.funcionario_id"; 
     169 
     170                $result = $this->db->query($query, $bindValues); 
     171                if (!$result) 
     172                        return false; 
     173 
     174                $output = $result->GetArray(-1); 
     175 
     176                if($searchLdap){ 
     177                        $output = $this->searchEmployeeDataInLdap($output); 
     178                } 
    113179 
    114180                return $output; 
     
    11891255                $output = $result->GetArray(-1); 
    11901256 
    1191                 if(is_array($output) && $searchLdap){ 
     1257                if($searchLdap){ 
     1258                        $output = $this->searchEmployeeDataInLdap($output); 
     1259                } 
     1260 
     1261                return $output; 
     1262        } 
     1263 
     1264        /** 
     1265         * Percorre o array passado por parâmetro, buscando os dados dos funcionários no Ldap. Adiciona estes dados no array e o retorna. 
     1266         * 
     1267         * @param array $output Array contendo os usuários que deverão ser consultados no Ldap 
     1268         * @return array Retorna o mesmo array passado por parâmetro, adicionados os dados dos usuários buscados no Ldap 
     1269         */ 
     1270        function searchEmployeeDataInLdap($output) 
     1271        { 
     1272                if(is_array($output)){ 
    11921273                        foreach($output AS $k => $value){ 
    1193                                 $user_data = $this->ldap->getEntryByID($value['funcionario_id']); 
    1194                                 $output[$k]['nome']     = $user_data['cn']; 
    1195                                 $output[$k]['telefone'] = $user_data['telephonenumber']; 
     1274                                if(is_numeric($value['funcionario_id'])){ 
     1275                                        $user_data = $this->ldap->getEntryByID($value['funcionario_id']); 
     1276                                        $output[$k]['nome']     = $user_data['cn']; 
     1277                                        $output[$k]['email']    = $user_data['mail']; 
     1278                                        $output[$k]['telefone'] = $user_data['telephonenumber']; 
     1279                                } 
    11961280                        } 
    11971281                } 
    1198  
    11991282                return $output; 
    12001283        } 
Note: See TracChangeset for help on using the changeset viewer.