source: branches/2.2/workflow/inc/local/classes/class.wf_orgchart.php @ 6205

Revision 6205, 44.8 KB checked in by asaikawa, 8 years ago (diff)

Ticket #2743 - Desfazendo a inclusao do metodo, pois comitei na versao incorreta

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