source: sandbox/workflow/trunk/inc/local/classes/class.wf_orgchart.php @ 3060

Revision 3060, 43.3 KB checked in by viani, 14 years ago (diff)

Ticket #950 - Merged 2838:3056 /trunk/workflow em /sandbox/workflow/trunk

  • Property svn:executable set to *
Line 
1<?php
2/**
3 * Classe que permite aos processos workflow fazer consultas ao Organograma
4 *
5 * @author Sidnei Augusto Drovetto Junior - drovetto@gmail.com
6 * @version 1.2
7 * @license http://www.gnu.org/copyleft/gpl.html GPL
8 * @package Workflow
9 * @subpackage local
10 */
11class wf_orgchart
12{
13        /**
14         * @var object $db Link para o Banco de Dados do Workflow.
15         * @access private
16         */
17        var $db;
18
19        /**
20         * Construtor da classe wf_orgchart
21         * @return object
22         * @access public
23         */
24        function wf_orgchart()
25        {
26                $this->db = &Factory::getInstance('WorkflowObjects')->getDBWorkflow()->Link_ID;
27                $this->db->setFetchMode(ADODB_FETCH_ASSOC);
28        }
29
30        /**
31         * Busca uma organização pelo seu ID.
32         *
33         * Este método irá procurar uma organização na tabela de organizações, pelo seu ID, e retornará seu dados básicos.
34         * @param int $organizationID O ID da organização.
35         * @return array Uma array associativa contendo os atributos de uma organização:
36         * - organizacao_id
37         * - nome: o nome abreviado da organização
38         * - descrição: o nome completo da organização
39         * - url_imagem: a url onde se encontra o gráfico da organização
40         * - ativa: se a organização está ativa ou não
41         * - sitio: a url da página web da organização
42         * @access public
43         */
44        function getOrganization($organizationID)
45        {
46                $query = "SELECT organizacao_id, nome, descricao, url_imagem, ativa, sitio" .
47                                 "  FROM organizacao" .
48                                 " WHERE (organizacao_id = ?)";
49
50                $result = $this->db->query($query, array($organizationID));
51                if (!$result)
52                        return false;
53
54                $output = $result->fetchRow();
55
56                return $output;
57        }
58
59        /**
60         * Busca uma organização pelo seu nome.
61         *
62         * Este método irá buscar os dados básicos de uma organização, procurando pela sua sigla.
63         * @param string $name A sigla da organização.
64         * @return array Uma array associativa contendo os atributos de uma organização:
65         * - organizacao_id
66         * - nome: a sigla da organização
67         * - descricao: o nome completo
68         * - url_imagem: a url onde se encontra o gráfico da organização
69         * - ativa: se a organização está ativa ou não
70         * - sitio: a url da página web da organização
71         * @access public
72         */
73        function getOrganizationByName($name)
74        {
75                $query = "SELECT organizacao_id, nome, descricao, url_imagem, ativa, sitio" .
76                                 "  FROM organizacao" .
77                                 " WHERE (UPPER(nome) = UPPER(?))";
78
79                $result = $this->db->query($query, array($name));
80                if (!$result)
81                        return false;
82
83                $output = $result->fetchRow();
84
85                return $output;
86        }
87
88        /**
89         * Lista todos os telefones úteis de uma organização.
90         *
91         * Este método irá listar a tabela telefone.
92         * @param int $organizationID O ID da organização.
93         * @return array Uma array de arrays associativas contendo a lista dos telefones de uma organização:
94         * - telefone_id
95         * - descricao
96         * - organizacao_id
97         * @access public
98         */
99        function getOrganizationTelephones($organizationID)
100        {
101                $query = "SELECT telefone_id, descricao, organizacao_id" .
102                                 "  FROM telefone" .
103                                 "      WHERE organizacao_id = ?";
104
105                $result = $this->db->query($query, array((int) $organizationID));
106                if (!$result)
107                        return false;
108
109                $output = $result->GetArray(-1);
110
111                return $output;
112        }
113
114        /**
115         * Busca as áreas de uma organização
116         *
117         * Este método irá buscar na tabela de áreas, todas as áreas que pertencem à organização solicitada.
118         * @param int $organizationID O ID da organização.
119         * @return array Uma array seqüencial contendo as áreas de uma organização. Cada linha do array conterá:
120         * - organizacao_id
121         * - area_id
122         * - area_status_id: corresponde ao nível hierárquico da area
123         * - superior_area_id: o id da área acima da atual
124         * - centro_custo_id: o id do centro de custo da area
125         * - titular_funcionario_id: o id do funcionario titular da área. Corresponde ao uidNumber do funcionário no catálogo Ldap.
126         * - substituto_funcionario_id: o id do funcionario que está substituindo o titular temporariamente
127         * - sigla: sigla da area
128         * - descrição: nome completo da area
129         * - ativa: indicativo de situação da area, sendo 's' ativa, e 'n' inativa
130         * - auxiliar_funcionario_id: id da secretária da área
131         * @access public
132         */
133        function getOrganizationAreas($organizationID)
134        {
135                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " .
136                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " .
137                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " .
138                                 "               s.funcionario_id as substituto_funcionario_id " .
139                                 " FROM area a " .
140                                 "  LEFT OUTER JOIN substituicao s " .
141                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " .
142                                 " WHERE " .
143                                 "      (a.organizacao_id = ?) " .
144                                 " ORDER BY a.sigla, a.descricao";
145
146                $result = $this->db->query($query, array($organizationID));
147                if (!$result)
148                        return false;
149
150                $output = $result->GetArray(-1);
151
152                return $output;
153        }
154
155        /**
156         * Busca os status de área de uma organização.
157         *
158         * O status de área deve ser compreendido como um nível hirárquico das áreas da organização.
159         * Por exemplo: presidência, assessoria, diretoria, gerência, divisão, etc.
160         * @param int $organizationID O ID da organização.
161         * @return array Uma array de arrays associativas contendo os atributos dos status de área. Cada linha do array conterá:
162         * - area_status_id
163         * - organização_id
164         * - descrição
165         * - nível: a posição hierárquica do nível no organograma. Por exemplo: 1 - presidencia, 2 - assessoria, etc
166         * @access public
167         */
168        function getOrganizationAreaStatus($organizationID)
169        {
170                $query = "SELECT area_status_id, organizacao_id, descricao, nivel" .
171                                 "  FROM area_status" .
172                                 " WHERE (organizacao_id = ?)";
173
174                $result = $this->db->query($query, array($organizationID));
175                if (!$result)
176                        return false;
177
178                $output = $result->GetArray(-1);
179
180                return $output;
181        }
182
183        /**
184         * Busca as localidades de uma organização.
185         *
186         * As localidades de uma organização representam o local físico de trabalho dos funcionários.
187         * @param int $organizationID O ID da organização.
188         * @return array Uma array de arrays associativas contendo os atributos das localidades. Cada linha do array conterá:
189         * - organizacao_id
190         * - localidade_id
191         * - centro_custo_id
192         * - descricao: o nome simplificado localidade
193         * - empresa: o nome completo da localidade
194         * - endereço: o logradouro da empresa, com o número
195         * - complemento: dado adicional do endereço
196         * - cep: código de endereçamento postal, máscara nnnnnn-nnn
197         * - bairro: nome do bairro
198         * - cidade: nome da cidade
199         * - uf: unidade da federação
200         * @access public
201         */
202        function getOrganizationLocals($organizationID)
203        {
204                $query = "SELECT organizacao_id, localidade_id, centro_custo_id, descricao, empresa,
205                                                        endereco, complemento, cep, bairro, cidade, uf" .
206                                 "  FROM localidade" .
207                                 " WHERE (organizacao_id = ?)";
208
209                $result = $this->db->query($query, array($organizationID));
210                if (!$result)
211                        return false;
212
213                $output = $result->GetArray(-1);
214
215                return $output;
216        }
217
218        /**
219         * Busca os centros de custo de uma organização.
220         *
221         * Este método retornará todos os centros de custo de uma organização.
222         * Centros de custo são como códigos contábeis para faturamento de serviços.
223         * @param int $organizationID O ID da organização.
224         * @return array Uma array de arrays associativas contendo os atributos dos centros de custo. Cada linha do array conterá:
225         * - organizacao_id
226         * - centro_custo_id
227         * - nm_centro_custo: número do centro de custo
228         * - grupo: estrutura numerica a qual o centro de custo pertence
229         * - descrição: nome do centro de custo
230         * @access public
231         */
232        function getOrganizationCostCenters($organizationID)
233        {
234                $query = "SELECT organizacao_id, centro_custo_id, nm_centro_custo, grupo, descricao" .
235                                 "  FROM centro_custo" .
236                                 " WHERE (organizacao_id = ?)" .
237                                 " ORDER BY descricao";
238
239                $result = $this->db->query($query, array($organizationID));
240                if (!$result)
241                        return false;
242
243                $output = $result->GetArray(-1);
244
245                return $output;
246        }
247
248        /**
249         * Lista todas as categorias possíveis para um funcionário em uma organização.
250         *
251         * Este método listará a tabela de categorias.
252         * Por exemplo: funcionário, estagiário, terceirizado, etc.
253         * @param int $organizationID O ID da organização.
254         * @return array Uma array de arrays associativas contendo os atributos das categorias. Cada linha do array conterá:
255         * - funcionario_categoria_id: o id da categoria
256         * - descricao
257         * - organizacao_id
258         * @access public
259         */
260        function getOrganizationEmployeeCategories($organizationID)
261        {
262                $query = "SELECT funcionario_categoria_id, descricao, organizacao_id" .
263                                 "  FROM funcionario_categoria" .
264                                 "      WHERE organizacao_id = ?" .
265                                 "  ORDER BY funcionario_categoria_id";
266
267                $result = $this->db->query($query, array((int) $organizationID));
268                if (!$result)
269                        return false;
270
271                $output = $result->GetArray(-1);
272
273                return $output;
274        }
275
276        /**
277         * Lista todas as organizações do Organograma.
278         *
279         * Este método irá listar a tabela de organizações
280         * O modelo de dados do organograma foi construído para abrigar mais de uma organização
281         * @return um array de arrays associativas contendo a lista de organizações. Cada linha do array conterá:
282         * - organizacao_id
283         * - nome: sigla da organizacao
284         * - descricao
285         * - url_imagem: a url onde se encontra o gráfico da organização
286         * - ativa: se a organização está ativa ou não
287         * - sitio: a url da página web da organização
288         * @access public
289         */
290        function getOrganizations()
291        {
292                $query = "SELECT organizacao_id, nome, descricao, url_imagem, ativa, sitio" .
293                                 "  FROM organizacao";
294
295                $result = $this->db->query($query);
296                if (!$result)
297                        return false;
298
299                $output = $result->GetArray(-1);
300
301                return $output;
302        }
303
304
305        /**
306         * Busca uma área pelo seu ID.
307         *
308         * Este método irá retornar os dados de uma área buscando pelo seu ID.
309         * @param int $areaID O ID da área.
310         * @return array Uma array associativa contendo os atributos de uma área:
311         * - organizacao_id
312         * - area_id
313         * - area_status: o nível hierárquico da área
314         * - superior_area_id: o id da área acima da atual
315         * - centro_custo_id: o centro de custo da área
316         * - titular_funcionario_id: o id do chefe da área
317         * - substituto_funcionario_id: o id do funcionario que esta substituindo o titular temporariamente
318         * - sigla
319         * - descicao
320         * - ativa: indicativo de situação da área: 's' ativa, 'n' inativa
321         * - auxiliar_funcionario_id: o id da secretária da área
322         * @access public
323         */
324        function getArea($areaID)
325        {
326                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " .
327                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " .
328                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " .
329                                 "               s.funcionario_id as substituto_funcionario_id " .
330                                 " FROM area a " .
331                                 "  LEFT OUTER JOIN substituicao s " .
332                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " .
333                                 " WHERE " .
334                                 "      (a.area_id = ?) " .
335                                 " ORDER BY a.sigla, a.descricao";
336
337
338                $result = $this->db->query($query, array($areaID));
339                if (!$result)
340                        return false;
341
342                $output = $result->fetchRow();
343
344                return $output;
345        }
346
347        /**
348         * Busca uma área pela sua sigla.
349         *
350         * Este método retornará os atributos de uma área buscando pela sua sigla.
351         * @param string $acronym A sigla da área.
352         * @param int $organizationID O id da organização
353         * @return array Uma array associativa contendo os atributos de uma área:
354         * - organizacao_id
355         * - area_id
356         * - area_status: o nível hierárquico da área
357         * - superior_area_id: o id da área acima da atual
358         * - centro_custo_id: o centro de custo da área
359         * - titular_funcionario_id: o id do chefe da área
360         * - substituto_funcionario_id: o id do funcionario que esta substituindo o titular temporariamente
361         * - sigla
362         * - descicao
363         * - ativa: indicativo de situação da área: 's' ativa, 'n' inativa
364         * - auxiliar_funcionario_id: o id da secretária da área
365         * @access public
366         */
367        function getAreaByName($acronym, $organizationID = 1)
368        {
369                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " .
370                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " .
371                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " .
372                                 "               s.funcionario_id as substituto_funcionario_id " .
373                                 " FROM area a " .
374                                 "  LEFT OUTER JOIN substituicao s " .
375                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " .
376                                 " WHERE " .
377                                 "      (UPPER(a.sigla) = UPPER(?)) " .
378                                 " AND " .
379                                 "      (a.organizacao_id = ?) " .
380                                 " ORDER BY a.sigla, a.descricao";
381
382
383                $result = $this->db->query($query, array($acronym, (int) $organizationID));
384                if (!$result)
385                        return false;
386
387                $output = $result->fetchRow();
388
389                return $output;
390        }
391
392        /**
393         * Busca as áreas que possuem um determinado status de área.
394         *
395         * Este método irá retornar todas as áreas cujo status (nível hierárquico) seja o solicitado.
396         * @param int $areaStatusID O ID do status de área.
397         * @return array Uma array de arrays associativas contendo os atributos de uma área. Cada linha do array conterá:
398         * - organizacao_id
399         * - area_id
400         * - area_status: o nível hierárquico da área
401         * - superior_area_id: o id da área acima da atual
402         * - centro_custo_id: o centro de custo da área
403         * - titular_funcionario_id: o id do chefe da área
404         * - substituto_funcionario_id: o id do funcionario que esta substituindo o titular temporariamente
405         * - sigla
406         * - descicao
407         * - ativa: indicativo de situação da área: 's' ativa, 'n' inativa
408         * - auxiliar_funcionario_id: o id da secretária da área
409         * @access public
410         */
411        function getAreaByStatus($areaStatusID)
412        {
413                $result = array();
414
415                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " .
416                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " .
417                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " .
418                                 "               s.funcionario_id as substituto_funcionario_id " .
419                                 " FROM area a " .
420                                 "  LEFT OUTER JOIN substituicao s " .
421                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " .
422                                 " WHERE " .
423                                 "      (a.area_status_id = ?) " .
424                                 " ORDER BY a.sigla, a.descricao";
425
426
427
428                $result = $this->db->query($query, array($areaStatusID));
429                if (!$result)
430                        return false;
431
432                $output = $result->GetArray(-1);
433
434                return $output;
435        }
436
437        /**
438         * Busca várias áreas através de uma array de IDs
439         *
440         * Este método irá buscar de uma vez só os dados de mais de uma área.
441         * @param array $areaIDs Array com os IDs das áreas
442         * @return array Um array de arrays associativos contendo os atributos de várias áreas. Cada linha do array conterá:
443         * - organizacao_id
444         * - area_id
445         * - area_status: o nível hierárquico da área
446         * - superior_area_id: o id da área acima da atual
447         * - centro_custo_id: o centro de custo da área
448         * - titular_funcionario_id: o id do chefe da área
449         * - substituto_funcionario_id: o id do funcionario que esta substituindo o titular temporariamente
450         * - sigla
451         * - descicao
452         * - ativa: indicativo de situação da área: 's' ativa, 'n' inativa
453         * - auxiliar_funcionario_id: o id da secretária da área
454         * @access public
455         */
456        function getAreas($areaIDs)
457        {
458                if (!is_array($areaIDs))
459                        return false;
460
461                $areas = implode(', ', $areaIDs);
462
463                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " .
464                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " .
465                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " .
466                                 "               s.funcionario_id as substituto_funcionario_id " .
467                                 " FROM area a " .
468                                 "  LEFT OUTER JOIN substituicao s " .
469                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " .
470                                 " WHERE " .
471                                 "      (a.area_id IN ($areas)) " .
472                                 " ORDER BY a.sigla, a.descricao";
473
474                // A execução é realizada sem o segundo parâmetro pois este não pode estar entre aspas
475                $result = $this->db->query($query);
476                if (!$result)
477                        return false;
478
479                $output = $result->GetArray(-1);
480                return $output;
481        }
482       
483        /**
484         * Return all areas that the employee is a supervisor.
485         *
486         * Search in the organization for all areas that the employee is a supervisor.
487         * @param int $employeeID The ID of employee
488         * @return array Array containing all the areas that the employeee is a supervisor.
489         * @access public
490         */
491        function getSupervisorAreas($employeeID) {
492
493                if (!$employeeID) {
494                        return false;
495                }
496
497                $query = "SELECT
498                                                a.area_id
499                                        FROM
500                                                area a
501                                                LEFT OUTER JOIN substituicao s ON ((a.area_id = s.area_id)
502                                                AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim))
503                                        WHERE
504                                                a.titular_funcionario_id = ? OR
505                                                s.funcionario_id = ?
506                                        GROUP BY
507                                                a.area_id";
508               
509                $result = $this->db->query($query, array($employeeID,$employeeID));
510                if (!$result)
511                        return false;
512               
513                $output = $result->GetArray(-1);
514                return $output;
515        }
516
517        /**
518         * Busca o ID da área superior a uma dada área.
519         *
520         * Este método irá buscar a área imediatamente superior à solicitada, ou então subirá na hierarquia até chegar no nível solicitado.
521         * @param int $areaID O ID da área da qual se quer saber a área superior.
522         * @param int $areaStatusID O ID do status de área (nível) da área pai. Utilizar -1 caso se queira a área imediatamente superior.
523         * - Por exemplo: área atual está no nível 5 (Divisão) e se quer buscar a área de nivel 3 (Diretoria).
524         * @return int O ID da área que é superior à área informada.
525         * @access public
526         */
527        function getParentAreaID($areaID, $areaStatusID = -1)
528        {
529                $query  = "SELECT area_id, area_status_id" .
530                                  "  FROM area" .
531                                  " WHERE area_id = (SELECT superior_area_id" .
532                                  "                    FROM area" .
533                                  "                   WHERE (area_id = ?))";
534
535                $result = $this->db->query($query, array($areaID));
536                if (!$result)
537                        return false;
538
539                $output = $result->fetchRow();
540                if (!$output)
541                        return false;
542
543                if (($areaStatusID == -1) || ($output['area_status_id'] == $areaStatusID))
544                        return $output['area_id'];
545                else
546                        return $this->getParentAreaID($output['area_id'], $areaStatusID);
547        }
548
549        /**
550         * Busca as áreas abaixo de uma determinada área.
551         *
552         * Este método irá buscar as áreas imediatamente inferiores à solicitada, não descendo nos próximos níveis da hierarquia.
553         * @param int $parentAreaID O ID da área da qual se quer saber as áreas imediatamente inferiores.
554         * @param boolean $onlyActiveAreas Valor lógico que, caso verdadeiro, faz com que o método retorne somente as áreas ativas
555         * @return array Um array de arrays associativos contendo os atributos de várias áreas. Cada linha do array conterá:
556         * - organizacao_id
557         * - area_id
558         * - area_status: o nível hierárquico da área
559         * - superior_area_id: o id da área acima da atual
560         * - centro_custo_id: o centro de custo da área
561         * - titular_funcionario_id: o id do chefe da área
562         * - substituto_funcionario_id: o id do funcionario que esta substituindo o titular temporariamente
563         * - sigla
564         * - descicao
565         * - ativa: indicativo de situação da área: 's' ativa, 'n' inativa
566         * - auxiliar_funcionario_id: o id da secretária da área
567         * @access public
568         */
569        function getSubAreasByParentAreaID($parentAreaID, $onlyActiveAreas = false)
570        {
571                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " .
572                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " .
573                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " .
574                                 "               s.funcionario_id as substituto_funcionario_id " .
575                                 " FROM area a " .
576                                 "  LEFT OUTER JOIN substituicao s " .
577                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " .
578                                 " WHERE " .
579                                 "      (a.superior_area_id = ?) ";
580
581
582                if ($onlyActiveAreas){
583                        $query .= " AND ativa = 'S'";
584                }
585                $query .= " ORDER BY a.sigla, a.descricao";
586
587                $result = $this->db->query($query, array($parentAreaID));
588                if (!$result)
589                        return false;
590
591                $output = $result->GetArray(-1);
592                return $output;
593        }
594
595        /**
596         * Busca um status de área pelo seu ID.
597         *
598         * Procura na tabela de status de área (nível hierárquico de áreas) o registro que corresponde ao ID solicitado.
599         * @param int $areaStatusID O ID do status de área.
600         * @return array Uma array associativa contendo os atributos de um status de área:
601         * - area_status_id
602         * - organizacao_id
603         * - descricao: nome do nível hierárquivo. Por exemplo: presidência, assessoria, diretoria, gerência, etc.
604         * - nivel: valor numérico que identifica o nível: 1, 2, 3, ...
605         * @access public
606         */
607        function getAreaStatus($areaStatusID)
608        {
609                $query = "SELECT area_status_id, organizacao_id, descricao, nivel" .
610                                 "  FROM area_status" .
611                                 " WHERE (area_status_id = ?)";
612
613                $result = $this->db->query($query, array($areaStatusID));
614                if (!$result)
615                        return false;
616
617                $output = $result->fetchRow();
618
619                return $output;
620        }
621
622        /**
623         * Busca um status de área pelo seu nome.
624         *
625         * Este método irá retornar os dados de um status, procurando o registro na tabela através do seu nome.
626         * @param string $description O nome do status de área.
627         * @param int $organizationID O id da organização.
628         * @return array Uma array associativa contendo os atributos de um status de área:
629         * - area_status_id
630         * - organizacao_id
631         * - descricao: nome do nível hierárquivo. Por exemplo: presidência, assessoria, diretoria, gerência, etc.
632         * - nivel: valor numérico que identifica o nível: 1, 2, 3, ...
633         * @access public
634         */
635        function getAreaStatusByName($description, $organizationID = 1)
636        {
637                $query = "SELECT area_status_id, organizacao_id, descricao, nivel" .
638                                 "  FROM area_status" .
639                                 " WHERE (UPPER(descricao) = UPPER(?) and (organizacao_id = ?))";
640
641                $result = $this->db->query($query, array($description, (int) $organizationID));
642                if (!$result)
643                        return false;
644
645                $output = $result->fetchRow();
646
647                return $output;
648        }
649
650        /**
651         * Busca um status de área pelo seu nível.
652         *
653         * Este método irá retornar os dados de um status, procurando o registro na tabela através do seu nível.
654         * @param int $level O nível do status de área.
655         * @param int $organizationID O id da organização.
656         * @return array Uma array associativa contendo os atributos de um status de área:
657         * - area_status_id
658         * - organizacao_id
659         * - descricao: nome do nível hierárquivo. Por exemplo: presidência, assessoria, diretoria, gerência, etc.
660         * - nivel: valor numérico que identifica o nível: 1, 2, 3, ...
661         * @access public
662         */
663        function getAreaStatusByLevel($level, $organizationID = 1)
664        {
665                $query = "SELECT area_status_id, organizacao_id, descricao, nivel" .
666                                 " FROM area_status" .
667                                 " WHERE (nivel = ?) AND (organizacao_id = ?)";
668
669                $result = $this->db->query($query, array((int) $level, (int) $organizationID));
670                if (!$result)
671                        return false;
672
673                $output = $result->fetchRow();
674
675                return $output;
676        }
677
678        /**
679         * Busca o ID do titular de uma área.
680         *
681         * Este método busca uma área e retorna o atributo titular_funcionario_id
682         * @param int $areaID O ID da área.
683         * @return int O ID do titular da área.
684         * @access public
685         */
686        function getAreaSupervisorID($areaID)
687        {
688                $area = $this->getArea($areaID);
689                if (!$area)
690                        return false;
691
692                return $area['titular_funcionario_id'];
693        }
694
695        /**
696         * Busca o ID do substituto de uma área.
697         *
698         * Este método irá buscar uma área e retornar o atributo substituto_funcionario_id.
699         * Note que o substituro é um campo opcional na área e poderá retornar vazio.
700         * @param int $areaID O ID da área.
701         * @return int O ID do substituto da área.
702         * @access public
703         */
704        function getAreaBackupSupervisorID($areaID)
705        {
706                $area = $this->getArea($areaID);
707                if (!$area)
708                        return false;
709
710                return $area['substituto_funcionario_id'];
711        }
712
713        /**
714         * Busca o ID do auxiliar administrativo de uma área.
715         *
716         * Este método busca uma área e retorna o atributo auxiliar_funcionario_id
717         * Nem todas as áreas possuem funcionários auxiliares (secretárias)
718         * @param int $areaID O ID da área.
719         * @return int O ID do auxiliar administrativo da área.
720         * @access public
721         */
722        function getAreaAssistantID($areaID)
723        {
724                $area = $this->getArea($areaID);
725                if (!$area)
726                        return false;
727
728                return $area['auxiliar_funcionario_id'];
729        }
730
731        /**
732         * Busca o ID do titular atual de uma área.
733         *
734         * Este método irá buscar uma área e caso haja um substituto, este será o titular atual; caso contrário, o titular atual é o próprio titular da área.
735         * @param int $areaID O ID da área.
736         * @return int O ID do titular atual da área, podendo ser um dos campos abaixo:
737         * - substituto_funcionario_id
738         * - titular_funcionario_id
739         * @access public
740         */
741        function getAreaCurrentSupervisorID($areaID)
742        {
743                $area = $this->getArea($areaID);
744                if (!$area)
745                        return false;
746
747                return is_null($area['substituto_funcionario_id']) ? $area['titular_funcionario_id'] : $area['substituto_funcionario_id'];
748        }
749
750        /**
751         * Busca o ID do responsável administrativo atual de uma área.
752         *
753         * A precedência para definir quem é o responsável administrativo é: auxiliar administrativo, substituto e titular.
754         * @param int $areaID O ID da área.
755         * @return int O ID do responsável administrativo da área, podendo ser um dos atributos abaixo:
756         * - auxiliar_funcionario_id
757         * - substituto_funcionario_id
758         * - titular_funcionario_id
759         * @access public
760         */
761        function getAreaCurrentAdministrativeResponsibleID($areaID)
762        {
763                $area = $this->getArea($areaID);
764                if (!$area)
765                        return false;
766
767                return !is_null($area['auxiliar_funcionario_id']) ? $area['auxiliar_funcionario_id'] : (!is_null($area['substituto_funcionario_id']) ? $area['substituto_funcionario_id'] : $area['titular_funcionario_id']);
768        }
769
770        /**
771         * Busca uma localidade pelo seu ID.
772         *
773         * Este método listará os atributos e uma localidade. Lembrando que localidade também pode ser entendida como o local físico de trabalho.
774         * @param int $localID O ID da localidade.
775         * @return array Uma array associativa contendo os atributos de uma localidade:
776         * - organizacao_id
777         * - localidade_id
778         * - centro_custo_id
779         * - descricao
780         * - empresa: o nome completo da localidade
781         * - endereço: o logradouro da empresa, com o número
782         * - complemento: dado adicional do endereço
783         * - cep: código de endereçamento postal, máscara nnnnnn-nnn
784         * - bairro: nome do bairro
785         * - cidade: nome da cidade
786         * - uf: unidade da federação
787         * @access public
788         */
789        function getLocal($localID)
790        {
791                $query = "SELECT organizacao_id, localidade_id, centro_custo_id, descricao,
792                                                        empresa, endereco, complemento, cep, bairro, cidade, uf" .
793                                 "  FROM localidade" .
794                                 " WHERE (localidade_id = ?)";
795
796                $result = $this->db->query($query, array($localID));
797                if (!$result)
798                        return false;
799
800                $output = $result->fetchRow();
801
802                return $output;
803        }
804
805        /**
806         * Busca uma localidade pelo seu nome.
807         *
808         *
809         * @param string $description O nome da localidade.
810         * @param int $organizationID O id da organização.
811         * @return array Uma array associativa contendo os atributos de uma localidade:
812         * - organizacao_id
813         * - localidade_id
814         * - centro_custo_id
815         * - descricao
816         * - empresa: o nome completo da localidade
817         * - endereço: o logradouro da empresa, com o número
818         * - complemento: dado adicional do endereço
819         * - cep: código de endereçamento postal, máscara nnnnnn-nnn
820         * - bairro: nome do bairro
821         * - cidade: nome da cidade
822         * - uf: unidade da federação
823         * @access public
824         */
825        function getLocalByName($description, $organizationID = 1)
826        {
827                $query = "SELECT organizacao_id, localidade_id, centro_custo_id, descricao,
828                                                        empresa, endereco, complemento, cep, bairro, cidade, uf" .
829                                 "  FROM localidade" .
830                                 " WHERE (UPPER(descricao) = UPPER(?) and (organizacao_id = ?))";
831
832                $result = $this->db->query($query, array($description, (int) $organizationID));
833                if (!$result)
834                        return false;
835
836                $output = $result->fetchRow();
837
838                return $output;
839        }
840
841        /**
842         * Busca um centro de custo pelo seu ID.
843         *
844         * Este método irá mostrar os atributos de um centro de custo, buscando na tabela pelo seu id.
845         * @param int $costCenterID O ID do centro de custo.
846         * @return array Uma array associativa contendo os atributos de um centro de custo:
847         * - organizacao_id
848         * - centro_custo_id
849         * - nm_centro_custo: número do centro de custo
850         * - grupo: estrutura numerica a qual o centro de custo pertence
851         * - descrição: nome do centro de custo
852         * @access public
853         */
854        function getCostCenter($costCenterID)
855        {
856                $query = "SELECT organizacao_id, centro_custo_id, nm_centro_custo, grupo, descricao" .
857                                 "  FROM centro_custo" .
858                                 " WHERE (centro_custo_id  = ?)";
859
860                $result = $this->db->query($query, array($costCenterID));
861                if (!$result)
862                        return false;
863
864                $output = $result->fetchRow();
865
866                return $output;
867        }
868
869        /**
870         * Busca um centro de custo pelo seu número.
871         *
872         * Este método retornará os atributos de um centro de custo buscando pelo seu ID.
873         * @param int $number O número do centro de custo.
874         * @param ind $organizationID O id da organização
875         * @return array Uma array associativa contendo os atributos de um centro de custo:
876         * - organizacao_id
877         * - centro_custo_id
878         * - nm_centro_custo: número do centro de custo
879         * - grupo: estrutura numerica a qual o centro de custo pertence
880         * - descrição: nome do centro de custo
881         * @access public
882         */
883        function getCostCenterByNumber($number, $organizationID = 1)
884        {
885                $query = "SELECT organizacao_id, centro_custo_id, nm_centro_custo, grupo, descricao" .
886                                 "  FROM centro_custo" .
887                                 " WHERE ((nm_centro_custo = ?) and (organizacao_id = ?))";
888
889                $result = $this->db->query($query, array($number, (int) $organizationID));
890                if (!$result)
891                        return false;
892
893                $output = $result->fetchRow();
894
895                return $output;
896        }
897
898        /**
899         * Busca um centro de custo pelo seu nome.
900         *
901         * Este método irá retornar os atributos de um centro de custo buscando pelo seu nome.
902         * @param string $description O nome do centro de custo.
903         * @param int $organizationID O id da organização
904         * @return array Uma array associativa contendo os atributos de um centro de custo.
905         * - organizacao_id
906         * - centro_custo_id
907         * - nm_centro_custo: número do centro de custo
908         * - grupo: estrutura numerica a qual o centro de custo pertence
909         * - descrição: nome do centro de custo
910         *       * @access public
911         */
912        function getCostCenterByName($description, $organizationID = 1)
913        {
914                $query = "SELECT organizacao_id, centro_custo_id, nm_centro_custo, grupo, descricao" .
915                                 "  FROM centro_custo" .
916                                 " WHERE (UPPER(descricao) = UPPER(?) and (organizacao_id = ?))";
917
918                $result = $this->db->query($query, array($description, (int) $organizationID));
919                if (!$result)
920                        return false;
921
922                $output = $result->fetchRow();
923
924                return $output;
925        }
926
927        /**
928         * Busca as informações de categoria a partir do ID.
929         *
930         * Este método irá retornar os atributos de uma linha da tabela de categorias de funcionários.
931         * @param int $categoryID O ID da categoria.
932         * @return array Uma array associativa contendo os atributos da categoria:
933         * - funcionario_categoria_id
934         * - descricao
935         * - organizacao_id
936         * @access public
937         */
938        function getEmployeeCategory($categoryID)
939        {
940                $query  = "SELECT funcionario_categoria_id, descricao, organizacao_id" .
941                                  "  FROM funcionario_categoria" .
942                                  " WHERE (funcionario_categoria_id = ?)";
943
944                $result = $this->db->query($query, array($categoryID));
945                if (!$result)
946                        return false;
947
948                $output = $result->fetchRow();
949
950                return $output;
951        }
952
953        /**
954         * Busca uma categoria a partir da sua descrição.
955         *
956         * Este método irá mostrar os atributos de uma categoria, buscando pela sua descrição.
957         * @param string $description O nome da categoria.
958         * @param int $organizationID O id da organização
959         * @return array Uma array associativa contendo os atributos de uma categoria:
960         * - funcionario_categoria_id
961         * - descricao
962         * - organizacao_id
963         * @access public
964         */
965        function getEmployeeCategoryByName($description, $organizationID = 1)
966        {
967                $query = "SELECT funcionario_categoria_id, descricao, organizacao_id" .
968                                 "  FROM funcionario_categoria" .
969                                 " WHERE (UPPER(descricao) = UPPER(?) and (organizacao_id = ?))";
970
971                $result = $this->db->query($query, array($description, (int) $organizationID));
972                if (!$result)
973                        return false;
974
975                $output = $result->fetchRow();
976
977                return $output;
978        }
979
980        /**
981         * Lista todos os cargos de uma organização.
982         *
983         * Este método irá listar a tabela localidade.
984         * @param int $organizationID O ID da organização.
985         * @return array Uma array de arrays associativas contendo a lista dos cargos de uma organização:
986         * - cargo_id
987         * - descricao
988         * - organizacao_id
989         * @access public
990         */
991        function getJobTitles($organizationID)
992        {
993                $query = "SELECT cargo_id, descricao, organizacao_id" .
994                                 "  FROM cargo" .
995                                 "      WHERE organizacao_id = ?" .
996                                 "  ORDER BY cargo_id";
997
998                $result = $this->db->query($query, array((int) $organizationID));
999                if (!$result)
1000                        return false;
1001
1002                $output = $result->GetArray(-1);
1003
1004                return $output;
1005        }
1006
1007        /**
1008         * Busca as informações de cargo a partir do ID.
1009         *
1010         * Este método irá listar os atributos de um cargo, buscando na tabela a partir do seu ID.
1011         * @param int $jobTitleID O ID do cargo.
1012         * @return array Uma array associativa contendo os atributos do cargo.
1013         * - cargo_id
1014         * - descricao
1015         * - organizacao_id
1016         * @access public
1017         */
1018        function getJobTitle($jobTitleID)
1019        {
1020                $query  = "SELECT cargo_id, descricao, organizacao_id" .
1021                                  "  FROM cargo" .
1022                                  " WHERE (cargo_id = ?)";
1023
1024                $result = $this->db->query($query, array($jobTitleID));
1025                if (!$result)
1026                        return false;
1027
1028                $output = $result->fetchRow();
1029
1030                return $output;
1031        }
1032
1033        /**
1034         * Busca um cargo a partir da sua descrição.
1035         *
1036         * Este método irá mostrar os atributos de um cargo, buscando pela sua descrição.
1037         * @param string $description O nome do cargo.
1038         * @param int $organizationID O id da organização.
1039         * @return array Uma array associativa contendo os atributos de um cargo:
1040         * - cargo_id
1041         * - descricao
1042         * - organizacao_id
1043         * @access public
1044         */
1045        function getJobTitleByName($description, $organizationID = 1)
1046        {
1047                $query = "SELECT cargo_id, descricao, organizacao_id" .
1048                                 "  FROM cargo" .
1049                                 " WHERE (UPPER(descricao) = UPPER(?) and (organizacao_id = ?))";
1050
1051                $result = $this->db->query($query, array($description, (int) $organizationID));
1052                if (!$result)
1053                        return false;
1054
1055                $output = $result->fetchRow();
1056
1057                return $output;
1058        }
1059
1060        /**
1061         * Busca um funcionário pelo seu ID.
1062         *
1063         * Este método retorna os atributos de um funcionário buscando pelo se id.
1064         * O ID corresponde ao uidNumber do funcionário no catálogo LDAP.
1065         * Se necessitar de outros atributos como o nome, cpf, email, matrícula, é necessário fazer uma consulta ao Ldap.
1066         * @param int $employeeID O ID do funcionário.
1067         * @return array Uma array associativa contendo os atributos de um funcionário:
1068         * - funcionario_id
1069         * - area_id
1070         * - localidade_id
1071         * - centro_custo_id
1072         * - organizacao_id
1073         * - funcionario_status_id
1074         * - cargo_id
1075         * - nivel: o nível numérico dentro do cargo
1076         * - funcionario_categoria_id
1077         * - titulo: nome pelo qual o funcionário e reconhecido na organização, por exemplo: gerente comercial
1078         * @access public
1079         */
1080        function getEmployee($employeeID)
1081        {
1082                if (!is_numeric($employeeID))
1083                        return false;
1084
1085                $query  = "SELECT funcionario_id, area_id, localidade_id, centro_custo_id, organizacao_id,
1086                                                        funcionario_status_id, cargo_id, nivel, funcionario_categoria_id, titulo" .
1087                                  "  FROM funcionario" .
1088                                  " WHERE (funcionario_id = ?)";
1089
1090                $result = $this->db->query($query, array($employeeID));
1091                if (!$result)
1092                        return false;
1093
1094                $output = $result->fetchRow();
1095
1096                return $output;
1097        }
1098
1099        /**
1100         * Busca lista de funcionários de uma área pelo ID da área.
1101         *
1102         * Este método retornará todos os funcionários de uma área.
1103         * @param int $areaID O ID da área.
1104         * @param boolean $onlyActiveUsers true para retornar somente usuários ativos e false caso contrário
1105         * @return array Uma array sequencial de arrays associativos contendo contendo o ID dos funcionários de uma área:
1106         * - funcionario_id
1107         * @access public
1108         */
1109        function getEmployeesAreaID($areaID, $onlyActiveUsers = false)
1110        {
1111                if($onlyActiveUsers){
1112                        $query = "SELECT funcionario_id " .
1113                                         "FROM funcionario " .
1114                                         "INNER JOIN funcionario_status " .
1115                                         "ON (funcionario.funcionario_status_id = funcionario_status.funcionario_status_id) " .
1116                                         "WHERE (area_id = ?) AND (funcionario_status.exibir = 'S')";
1117                } else {
1118                        $query = "SELECT funcionario_id " .
1119                                     "FROM funcionario " .
1120                                         "WHERE (area_id = ?)";
1121                }
1122
1123                $result = $this->db->query($query, array($areaID));
1124                if (!$result)
1125                        return false;
1126
1127                $output = $result->GetArray(-1);
1128
1129                return $output;
1130        }
1131
1132        /**
1133         * Busca um status de funcionário pelo seu ID.
1134         *
1135         * Este método irá retornar os dados de um status de funcionário, buscando pelo ID solicitado.
1136         * @param int $employeeStatusID O ID do status.
1137         * @return array Uma array associativa contendo os atributos de um status de funcionário:
1138         * - funcionario_status_id
1139         * - descricao
1140         * - exibir: indicativo booleado 'S' funcionário será listado no organograma, 'N' funcionário ficará oculto na aba organograma.
1141         * @access public
1142         */
1143        function getEmployeeStatus($employeeStatusID)
1144        {
1145                $query = "SELECT funcionario_status_id, descricao, exibir " .
1146                                 "  FROM funcionario_status" .
1147                                 " WHERE (funcionario_status_id = ?)";
1148
1149                $result = $this->db->query($query, array($employeeStatusID));
1150                if (!$result)
1151                        return false;
1152
1153                $output = $result->fetchRow();
1154
1155                return $output;
1156        }
1157
1158        /**
1159         * Busca o ID da área (podendo ser de outros níveis) de um funcionário.
1160         *
1161         * Este método irá retornar o ID da área do funcionário. Fará uma busca para cima na hierarquia se for solicitado.
1162         * @param int $employeeID O ID do funcionário do qual se quer saber a área.
1163         * @param int $areaStatusID O ID do status de área (nível) da área do funcionário que se quer. Utilizar -1 caso se queira a área imediata do funcionário.
1164         * - Por exemplo: o funcionário está em uma área de status 5 (Divisão) e se quer a área superior de nível 3 (Diretoria).
1165         * @return int O ID da área do funcionário.
1166         * @access public
1167         */
1168        function getEmployeeAreaID($employeeID, $areaStatusID = -1)
1169        {
1170                $employee = $this->getEmployee($employeeID);
1171                if (!$employee)
1172                        return false;
1173
1174                /* requer a área do funcionário */
1175                if ($areaStatusID == -1)
1176                        return $employee['area_id'];
1177                else
1178                {
1179                        /* verifica se a área do funcionário já está no nível solicitado */
1180                        $currentArea = $this->getArea($employee['area_id']);
1181                        if ($currentArea['area_status_id'] == $areaStatusID)
1182                                return $currentArea['area_id'];
1183                        else
1184                                return $this->getParentAreaID($currentArea['area_id'], $areaStatusID);
1185                }
1186        }
1187
1188        /**
1189         * Busca o ID da localidade de um funcionário.
1190         *
1191         * Este método buscará o funcionário pelo seu ID e retornará o ID da sua localidade.
1192         * @param int $employeeID O ID do funcionário.
1193         * @return int O ID da localidade do funcionário.
1194         * @access public
1195         */
1196        function getEmployeeLocalID($employeeID)
1197        {
1198                $employee = $this->getEmployee($employeeID);
1199                if (!$employee)
1200                        return false;
1201
1202                return $employee['localidade_id'];
1203        }
1204
1205        /**
1206         * Busca o ID do status de um funcionário.
1207         *
1208         * Este método buscará um funcionário pelo seu ID e retornará o ID de status do funcionário.
1209         * Status de funcionário corresponde à sua situação: ativo, desligado, etc.
1210         * @param int $employeeID O ID do funcionário.
1211         * @return int O ID do status do funcionário.
1212         * @access public
1213         */
1214        function getEmployeeStatusID($employeeID)
1215        {
1216                $employee = $this->getEmployee($employeeID);
1217                if (!$employee)
1218                        return false;
1219
1220                return $employee['funcionario_status_id'];
1221        }
1222
1223        /**
1224         * Busca o ID do centro de custo de um funcionário.
1225         *
1226         * Este método irá buscar um funcionário pelo seu ID e retornará o ID do centro de custo do funcionário.
1227         * O centro de custo não é obrigatório por funcionário. Neste caso, se necessário, busque o centro de custo da área ou da localidade.
1228         * @param int $employeeID O ID do funcionário.
1229         * @return int O ID do centro de custo do funcionário.
1230         * @access public
1231         */
1232        function getEmployeeCostCenterID($employeeID)
1233        {
1234                $employee = $this->getEmployee($employeeID);
1235                if (!$employee)
1236                        return false;
1237
1238                $costCenterID = $employee['centro_custo_id'];
1239                if(!empty($costCenterID)){
1240                        return $costCenterID;
1241                } else {
1242                        $employeeArea = $this->getArea($employee['area_id']);
1243                        return $employeeArea['centro_custo_id'];
1244                }
1245        }
1246
1247        /**
1248         * Busca o ID do cargo de um funcionário.
1249         *
1250         * Este método buscará um funcionário pelo seu ID e retornará o ID do cargo do funcionário.
1251         * @param int $employeeID O ID do funcionário.
1252         * @return int O ID do cargo do funcionário.
1253         * @access public
1254         */
1255        function getEmployeeJobTitleID($employeeID)
1256        {
1257                $employee = $this->getEmployee($employeeID);
1258                if (!$employee)
1259                        return false;
1260
1261                return $employee['cargo_id'];
1262        }
1263
1264        /**
1265         * Busca o ID da categoria de um funcionário.
1266         *
1267         * Este método buscará um funcionário pelo seu ID e retornará o ID da categoria do funcionário.
1268         * A categoria corresponde ao tipo de vínculo do funcionário com a organizacao. Por exemplo:
1269         * - funcionário
1270         * - estagiário
1271         * - terceirizado, etc
1272         * @param int $employeeID O ID do funcionário.
1273         * @return int O ID do categoria do funcionário.
1274         * @access public
1275         */
1276        function getEmployeeCategoryID($employeeID)
1277        {
1278                $employee = $this->getEmployee($employeeID);
1279                if (!$employee)
1280                        return false;
1281
1282                return $employee['funcionario_categoria_id'];
1283        }
1284
1285        /**
1286         * Busca o nível de um funcionário.
1287         *
1288         * Este método buscará o funcionário pelo seu ID e retornará o nível do funcionário dentro do cargo.
1289         * Geralmente um cargo (por exemplo: auxiliar tecnico) é composto por níveis de evolução na carreira: 1,2,3,...
1290         * @param int $employeeID O ID do funcionário.
1291         * @return int A quantidade de níveis do funcionário.
1292         * @access public
1293         */
1294        function getEmployeeLevel($employeeID)
1295        {
1296                $employee = $this->getEmployee($employeeID);
1297                if (!$employee)
1298                        return false;
1299
1300                if ($employee['nivel'] === null)
1301                        return false;
1302
1303                return $employee['nivel'];
1304        }
1305
1306        /**
1307         * Busca o ID do titular da área de um funcionário.
1308         *
1309         * Este método buscará o titular da área do funcionário, e poderá subir na hierarquia, buscando o titular de áreas superiores à área do funcionário.
1310         * @param int $employeeID O ID do funcionário.
1311         * @param int $areaStatusID O ID do status de área (nível) da área do funcionário que se quer o titular. Utilizar -1 caso se queira o titular da área imediata do funcionário.
1312         * @return int O ID do titular da área do funcionário:
1313         * - titular_funcionario_id
1314         * @access public
1315         */
1316        function getEmployeeSupervisorID($employeeID, $areaStatusID = -1)
1317        {
1318                return $this->getAreaSupervisorID($this->getEmployeeAreaID($employeeID, $areaStatusID));
1319        }
1320
1321        /**
1322         * Busca o ID do titular atual da área do funcionário.
1323         *
1324         * Caso haja um substituto, este será o titular atual; caso contrário, o titular atual é o próprio titular da área.
1325         * @param int $employeeID O ID do funcionário.
1326         * @param int $areaStatusID O ID do status de área (nível) da área do funcionário que se quer o titular atual. Utilizar -1 caso se queira o titular atual da área imediata do funcionário.
1327         * @return int O ID do titular atual da área do funcionário:
1328         * - titular_funcionário_id ou
1329         * - substituto_funcionario_id
1330         * @access public
1331         */
1332        function getEmployeeCurrentSupervisorID($employeeID, $areaStatusID = -1)
1333        {
1334                return $this->getAreaCurrentSupervisorID($this->getEmployeeAreaID($employeeID, $areaStatusID));
1335        }
1336
1337        /**
1338         * Busca o ID do responsável administrativo atual de uma área.
1339         *
1340         * A precedência para definir quem é o responsável administrativo é: auxiliar administrativo, substituto e titular.
1341         * @param int $employeeID O ID do funcionário.
1342         * @param int $areaStatusID O ID do status de área (nível) da área do funcionário que se quer o responsável administrativo. Utilizar -1 caso se queira o responsável administrativo da área imediata do funcionário.
1343         * @return int O ID do responsável administrativo atual da área do funcionário:
1344         * - titular_funcionário_id ou
1345         * - substituto_funcionario_id ou
1346         * - auxiliar_funcionario_id
1347         * @access public
1348         */
1349        function getEmployeeCurrentAdministrativeResponsibleID($employeeID, $areaStatusID = -1)
1350        {
1351                return $this->getAreaCurrentAdministrativeResponsibleID($this->getEmployeeAreaID($employeeID, $areaStatusID));
1352        }
1353}
1354?>
Note: See TracBrowser for help on using the repository browser.