Ignore:
Timestamp:
06/14/12 18:22:31 (12 years ago)
Author:
eduardow
Message:

Ticket #2851 - Novos campos no organograma - Workflow.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.4/workflow/inc/class.so_orgchart.inc.php

    r3290 r6507  
    706706                $supervisors = '{' . implode(', ', $areaInfo) . '}'; 
    707707 
    708                 $query = "SELECT funcionario_id, funcionario_status_id, centro_custo_id, localidade_id, organizacao_id, area_id, cargo_id, nivel, funcionario_categoria_id, titulo FROM funcionario WHERE ((area_id = ?) AND (organizacao_id = ?)) OR (funcionario_id = ANY (?))"; 
     708                $query = "SELECT funcionario_id, funcionario_status_id, centro_custo_id, localidade_id, organizacao_id, area_id, cargo_id, nivel, funcionario_categoria_id, titulo, funcao, to_char(data_admissao,'DD/MM/YYYY') as data_admissao, apelido FROM funcionario WHERE ((area_id = ?) AND (organizacao_id = ?)) OR (funcionario_id = ANY (?))";  
    709709                $result = $this->db->query($query, array($areaID, $organizationID, $supervisors)); 
    710710                $this->_checkError($result); 
     
    784784 
    785785                /* load employee information */ 
    786                 $query = "SELECT f.funcionario_id, f.funcionario_status_id, f.centro_custo_id, f.localidade_id, f.organizacao_id, f.area_id, f.cargo_id, f.nivel, f.funcionario_categoria_id, f.titulo, a.sigla AS area_sigla FROM funcionario f, area a WHERE (f.area_id = a.area_id) AND (f.organizacao_id = $organizationID) AND (f.funcionario_id IN (" . implode(',', array_keys($unifiedResult))  ."))"; 
     786                $query = "SELECT f.funcionario_id, f.funcionario_status_id, f.centro_custo_id, f.localidade_id, f.organizacao_id, f.area_id, f.cargo_id, f.nivel, f.funcionario_categoria_id, f.titulo, f.apelido, f.funcao, f.data_admisao, a.sigla AS area_sigla FROM funcionario f, area a WHERE (f.area_id = a.area_id) AND (f.organizacao_id = $organizationID) AND (f.funcionario_id IN (" . implode(',', array_keys($unifiedResult))  ."))"; 
    787787                $result = $this->db->query($query); 
    788788                $this->_checkError($result); 
     
    801801        } 
    802802 
     803         
     804        /**  
     805         * Valida se o formato da data está correto..  
     806         * @param $date data a ser validada.  
     807         **/  
     808                  
     809        function validateDate($date)  
     810        {  
     811                $date_pattern = '/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/[12][0-9]{3}$/';  
     812          
     813                if (!preg_match($date_pattern, $date))  
     814                        $this->endExecution("Formato inválido para data (dd/mm/aaaa).");  
     815        }  
     816                  
    803817        /** 
    804818         * Adiciona um funcionário. 
     819         * @param int $employeeID O ID do funcionário.  
     820         * @param int $organizationID O ID da organização.  
     821         * @param int $areaID O ID da área.  
     822         * @param int $costCenterID O ID do centro de custo.  
     823         * @param int $localID O ID da localidade.  
     824         * @param int $employeeStatusID O ID do status do funcionário.  
     825         * @param int $jobTitleID O ID do cargo do funcionário.  
     826         * @param int $level O nível do cargo do funcionário.  
     827         * @param int $title O título do funcionário.  
     828         * @param int $nickname O apelido do funcionário.  
     829         * @param int $jobDesc A descrição do cargo (função).  
     830         * @param int $admDate Data de admissão do funcionário.  
     831         * @return bool TRUE se a ação foi concluída com êxito e FALSE caso contrário.  
     832         * @access public  
     833         */  
     834        function addEmployee($employeeID, $organizationID, $areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title, $nickname, $jobDesc, $admDate)  
     835        {  
     836                $this->_checkAccess($organizationID);  
     837                $this->validateDate($admDate);  
     838                  
     839                $query = 'SELECT area.sigla FROM funcionario, area WHERE (funcionario.area_id = area.area_id) AND (funcionario.funcionario_id = ?)';  
     840                if (($row = $this->db->query($query, $employeeID)->fetchRow()))  
     841                {  
     842                        $errors = array(  
     843                                "O funcionário \"" . Factory::getInstance('WorkflowLDAP')->getName($employeeID) . "\" já pertença à área \"{$row['sigla']}\".",  
     844                                '-----------------',  
     845                                'Caso você queira colocá-lo na área selecionada, siga o procedimento: faça uma busca por seu nome, clique para editá-lo e, troque pela área desejada.'  
     846                        );  
     847                        $this->endExecution($errors);  
     848                }  
     849         
     850                $query = "INSERT INTO funcionario(funcionario_id, organizacao_id, area_id, centro_custo_id, localidade_id, funcionario_status_id, cargo_id, nivel, funcionario_categoria_id, titulo, apelido, funcao, data_admissao) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";  
     851                $result = $this->db->query($query, array($employeeID, $organizationID, $areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title, $nickname, $jobDesc, $admDate));  
     852                $this->_checkError($result);  
     853          
     854                return (($result === false) ? false : true);  
     855        }  
     856                  
     857        /**  
     858         * Atualiza o funcionário.  
    805859         * @param int $employeeID O ID do funcionário. 
    806860         * @param int $organizationID O ID da organização. 
     
    812866         * @param int $level O nível do cargo do funcionário. 
    813867         * @param int $employeeCategoryID O ID da categoria do funcionário. 
    814          * @return bool TRUE se a ação foi concluída com êxito e FALSE caso contrário. 
    815          * @access public 
    816          */ 
    817         function addEmployee($employeeID, $organizationID, $areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title) 
    818         { 
    819                 $this->_checkAccess($organizationID); 
    820  
    821                 $query = 'SELECT area.sigla FROM funcionario, area WHERE (funcionario.area_id = area.area_id) AND (funcionario.funcionario_id = ?)'; 
    822                 if (($row = $this->db->query($query, $employeeID)->fetchRow())) 
    823                 { 
    824                         $errors = array( 
    825                                 "O funcionário \"" . Factory::getInstance('WorkflowLDAP')->getName($employeeID) . "\" já pertença à área \"{$row['sigla']}\".", 
    826                                 '-----------------', 
    827                                 'Caso você queira colocá-lo na área selecionada, siga o procedimento: faça uma busca por seu nome, clique para editá-lo e, troque pela área desejada.' 
    828                         ); 
    829                         $this->endExecution($errors); 
    830                 } 
    831  
    832                 $query = "INSERT INTO funcionario(funcionario_id, organizacao_id, area_id, centro_custo_id, localidade_id, funcionario_status_id, cargo_id, nivel, funcionario_categoria_id, titulo) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
    833                 $result = $this->db->query($query, array($employeeID, $organizationID, $areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title)); 
    834                 $this->_checkError($result); 
    835  
    836                 return (($result === false) ? false : true); 
    837         } 
    838  
    839         /** 
    840          * Atualiza o funcionário. 
    841          * @param int $employeeID O ID do funcionário. 
    842          * @param int $organizationID O ID da organização. 
    843          * @param int $areaID O ID da área. 
    844          * @param int $costCenterID O ID do centro de custo. 
    845          * @param int $localID O ID da localidade. 
    846          * @param int $employeeStatusID O ID do status do funcionário. 
    847          * @param int $jobTitleID O ID do cargo do funcionário. 
    848          * @param int $level O nível do cargo do funcionário. 
    849          * @param int $employeeCategoryID O ID da categoria do funcionário. 
    850          * @return bool TRUE se a ação foi concluída com êxito e FALSE caso contrário. 
    851          * @access public 
    852          */ 
    853         function updateEmployee($employeeID, $organizationID, $areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title) 
    854         { 
    855                 $this->_checkAccess($organizationID); 
    856  
    857                 $query = "UPDATE funcionario SET area_id = ?, centro_custo_id = ?, localidade_id = ?, funcionario_status_id = ?, cargo_id = ?, nivel = ?, funcionario_categoria_id = ?, titulo = ? WHERE (funcionario_id = ?) AND (organizacao_id = ?)"; 
    858                 $result = $this->db->query($query, array($areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title, $employeeID, $organizationID)); 
     868         * @param int $title O título do funcionário.  
     869         * @param int $nickname O apelido do funcionário.  
     870         * @param int $jobDesc A descrição do cargo (função).  
     871         * @param int $admDate Data de admissão do funcionário.  
     872         * @return bool TRUE se a ação foi concluída com êxito e FALSE caso contrário.  
     873         * @access public  
     874         */  
     875        function updateEmployee($employeeID, $organizationID, $areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title, $nickname, $jobDesc, $admDate)  
     876        {  
     877                $this->_checkAccess($organizationID);  
     878                $this->validateDate($admDate);  
     879                                  
     880                $query = "UPDATE funcionario SET area_id = ?, centro_custo_id = ?, localidade_id = ?, funcionario_status_id = ?, cargo_id = ?, nivel = ?, funcionario_categoria_id = ?, titulo = ?, apelido = ?, funcao = ?, data_admissao = ? WHERE (funcionario_id = ?) AND (organizacao_id = ?)";  
     881                $result = $this->db->query($query, array($areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title,$nickname, $jobDesc, $admDate, $employeeID, $organizationID));  
    859882                $this->_checkError($result); 
    860883 
Note: See TracChangeset for help on using the changeset viewer.