Changeset 6201 for branches


Ignore:
Timestamp:
05/15/12 18:49:00 (8 years ago)
Author:
asaikawa
Message:

Ticket #2743 - Implementado o novo metodo no organograma que consulta os funcionarios pela localidade

File:
1 edited

Legend:

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

    r3835 r6201  
    1616         */ 
    1717        var $db; 
     18        var $ldap; 
    1819 
    1920        /** 
     
    2627                $this->db = &Factory::getInstance('WorkflowObjects')->getDBWorkflow()->Link_ID; 
    2728                $this->db->setFetchMode(ADODB_FETCH_ASSOC); 
     29 
     30                $this->ldap = Factory::getInstance('wf_cached_ldap'); 
    2831        } 
    2932 
     
    11361139 
    11371140        /** 
     1141         * Busca lista de funcionários pela sua localidade. 
     1142         * 
     1143         * Este método busca todos os funcionários de uma localidade, ou, caso a localidade não seja passada, retorna todos os funcionários. 
     1144         * @param int $localID O ID da localidade. 
     1145         * @param int $organizationID O ID da organização. 
     1146         * @param boolean $searchLdap True, caso seja necessário buscar no LDAP os dados dos usuários. Ou false, caso contrário. 
     1147         * @return array Uma array contendo os dados dos usários e sua localidade 
     1148         * @access public 
     1149         */ 
     1150        function getEmployeesByLocalID($localID = 0, $organizationID = 1, $searchLdap = false) 
     1151        { 
     1152                if(!is_numeric($localID) || !is_numeric($organizationID)) 
     1153                        return false; 
     1154 
     1155                $query = "SELECT DISTINCT " . 
     1156                                 " l.organizacao_id, " . 
     1157                                 " l.localidade_id, " . 
     1158                                 " l.descricao AS localidade_descricao, " . 
     1159                                 " f.funcionario_id, " . 
     1160                                 " f.area_id, " . 
     1161                                 " a.sigla AS area_sigla " . 
     1162                                 "FROM funcionario f " . 
     1163                                 "INNER JOIN localidade l " . 
     1164                                 "ON (f.localidade_id = l.localidade_id) " . 
     1165                                 "INNER JOIN area a " . 
     1166                                 "ON (f.area_id = a.area_id) " . 
     1167                                 "INNER JOIN funcionario_status fs " . 
     1168                                 "ON (f.funcionario_status_id = fs.funcionario_status_id) " . 
     1169                                 "WHERE (l.organizacao_id = ?) AND (fs.exibir = 'S') "; 
     1170 
     1171                $param[] = $organizationID; 
     1172                if(!empty($localID)){ 
     1173                        $query  .= " AND l.localidade_id = ? "; 
     1174                        $param[] = $localID; 
     1175                } 
     1176 
     1177                $query .= "ORDER BY l.descricao, a.sigla "; 
     1178 
     1179                $result = $this->db->query($query, $param); 
     1180                if (!$result) 
     1181                        return false; 
     1182 
     1183                $output = $result->GetArray(-1); 
     1184 
     1185                if(is_array($output) && $searchLdap){ 
     1186                        foreach($output AS $k => $value){ 
     1187                                $user_data = $this->ldap->getEntryByID($value['funcionario_id']); 
     1188                                $output[$k]['nome']     = $user_data['cn']; 
     1189                                $output[$k]['telefone'] = $user_data['telephonenumber']; 
     1190                        } 
     1191                } 
     1192 
     1193                return $output; 
     1194        } 
     1195 
     1196        /** 
    11381197         * Busca lista de funcionários de uma área pelo ID da área. 
    11391198         * 
Note: See TracChangeset for help on using the changeset viewer.