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

Revision 3072, 43.5 KB checked in by adeildosantos, 14 years ago (diff)

Ticket #1146 - Realizada padronizacao na assinatura do metodo getorganizationareas

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