Index: /branches/2.4/workflow/inc/class.so_orgchart.inc.php =================================================================== --- /branches/2.4/workflow/inc/class.so_orgchart.inc.php (revision 3290) +++ /branches/2.4/workflow/inc/class.so_orgchart.inc.php (revision 6507) @@ -706,5 +706,5 @@ $supervisors = '{' . implode(', ', $areaInfo) . '}'; - $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 (?))"; + $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 (?))"; $result = $this->db->query($query, array($areaID, $organizationID, $supervisors)); $this->_checkError($result); @@ -784,5 +784,5 @@ /* load employee information */ - $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)) ."))"; + $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)) ."))"; $result = $this->db->query($query); $this->_checkError($result); @@ -801,6 +801,60 @@ } + + /** + * Valida se o formato da data está correto.. + * @param $date data a ser validada. + **/ + + function validateDate($date) + { + $date_pattern = '/^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/[12][0-9]{3}$/'; + + if (!preg_match($date_pattern, $date)) + $this->endExecution("Formato inválido para data (dd/mm/aaaa)."); + } + /** * Adiciona um funcionário. + * @param int $employeeID O ID do funcionário. + * @param int $organizationID O ID da organização. + * @param int $areaID O ID da área. + * @param int $costCenterID O ID do centro de custo. + * @param int $localID O ID da localidade. + * @param int $employeeStatusID O ID do status do funcionário. + * @param int $jobTitleID O ID do cargo do funcionário. + * @param int $level O nível do cargo do funcionário. + * @param int $title O título do funcionário. + * @param int $nickname O apelido do funcionário. + * @param int $jobDesc A descrição do cargo (função). + * @param int $admDate Data de admissão do funcionário. + * @return bool TRUE se a ação foi concluída com êxito e FALSE caso contrário. + * @access public + */ + function addEmployee($employeeID, $organizationID, $areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title, $nickname, $jobDesc, $admDate) + { + $this->_checkAccess($organizationID); + $this->validateDate($admDate); + + $query = 'SELECT area.sigla FROM funcionario, area WHERE (funcionario.area_id = area.area_id) AND (funcionario.funcionario_id = ?)'; + if (($row = $this->db->query($query, $employeeID)->fetchRow())) + { + $errors = array( + "O funcionário \"" . Factory::getInstance('WorkflowLDAP')->getName($employeeID) . "\" já pertença à área \"{$row['sigla']}\".", + '-----------------', + '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.' + ); + $this->endExecution($errors); + } + + $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(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + $result = $this->db->query($query, array($employeeID, $organizationID, $areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title, $nickname, $jobDesc, $admDate)); + $this->_checkError($result); + + return (($result === false) ? false : true); + } + + /** + * Atualiza o funcionário. * @param int $employeeID O ID do funcionário. * @param int $organizationID O ID da organização. @@ -812,49 +866,18 @@ * @param int $level O nível do cargo do funcionário. * @param int $employeeCategoryID O ID da categoria do funcionário. - * @return bool TRUE se a ação foi concluída com êxito e FALSE caso contrário. - * @access public - */ - function addEmployee($employeeID, $organizationID, $areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title) - { - $this->_checkAccess($organizationID); - - $query = 'SELECT area.sigla FROM funcionario, area WHERE (funcionario.area_id = area.area_id) AND (funcionario.funcionario_id = ?)'; - if (($row = $this->db->query($query, $employeeID)->fetchRow())) - { - $errors = array( - "O funcionário \"" . Factory::getInstance('WorkflowLDAP')->getName($employeeID) . "\" já pertença à área \"{$row['sigla']}\".", - '-----------------', - '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.' - ); - $this->endExecution($errors); - } - - $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(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - $result = $this->db->query($query, array($employeeID, $organizationID, $areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title)); - $this->_checkError($result); - - return (($result === false) ? false : true); - } - - /** - * Atualiza o funcionário. - * @param int $employeeID O ID do funcionário. - * @param int $organizationID O ID da organização. - * @param int $areaID O ID da área. - * @param int $costCenterID O ID do centro de custo. - * @param int $localID O ID da localidade. - * @param int $employeeStatusID O ID do status do funcionário. - * @param int $jobTitleID O ID do cargo do funcionário. - * @param int $level O nível do cargo do funcionário. - * @param int $employeeCategoryID O ID da categoria do funcionário. - * @return bool TRUE se a ação foi concluída com êxito e FALSE caso contrário. - * @access public - */ - function updateEmployee($employeeID, $organizationID, $areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title) - { - $this->_checkAccess($organizationID); - - $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 = ?)"; - $result = $this->db->query($query, array($areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title, $employeeID, $organizationID)); + * @param int $title O título do funcionário. + * @param int $nickname O apelido do funcionário. + * @param int $jobDesc A descrição do cargo (função). + * @param int $admDate Data de admissão do funcionário. + * @return bool TRUE se a ação foi concluída com êxito e FALSE caso contrário. + * @access public + */ + function updateEmployee($employeeID, $organizationID, $areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title, $nickname, $jobDesc, $admDate) + { + $this->_checkAccess($organizationID); + $this->validateDate($admDate); + + $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 = ?)"; + $result = $this->db->query($query, array($areaID, $costCenterID, $localID, $employeeStatusID, $jobTitleID, $level, $employeeCategoryID, $title,$nickname, $jobDesc, $admDate, $employeeID, $organizationID)); $this->_checkError($result); Index: /branches/2.4/workflow/inc/class.bo_orgchart.inc.php =================================================================== --- /branches/2.4/workflow/inc/class.bo_orgchart.inc.php (revision 5921) +++ /branches/2.4/workflow/inc/class.bo_orgchart.inc.php (revision 6507) @@ -481,5 +481,5 @@ function addEmployee($params) { - $result = $this->so->addEmployee($params['funcionario_id'], $params['organizacao_id'], $params['area_id'], $this->_nullReplace($params['centro_custo_id']), $params['localidade_id'], $params['funcionario_status_id'], $this->_nullReplace($params['cargo_id']), $this->_nullReplace($params['nivel']), $this->_nullReplace($params['funcionario_categoria_id']), $params['titulo']); + $result = $this->so->addEmployee($params['funcionario_id'], $params['organizacao_id'], $params['area_id'], $this->_nullReplace($params['centro_custo_id']), $params['localidade_id'], $params['funcionario_status_id'], $this->_nullReplace($params['cargo_id']), $this->_nullReplace($params['nivel']), $this->_nullReplace($params['funcionario_categoria_id']), $params['titulo'], $params['apelido'], $params['funcao'], $params['data_admissao']); $this->disconnect_all(); @@ -495,5 +495,5 @@ function updateEmployee($params) { - $result = $this->so->updateEmployee($params['funcionario_id'], $params['organizacao_id'], $params['area_id'], $this->_nullReplace($params['centro_custo_id']), $params['localidade_id'], $params['funcionario_status_id'], $this->_nullReplace($params['cargo_id']), $this->_nullReplace($params['nivel']), $this->_nullReplace($params['funcionario_categoria_id']), $params['titulo']); + $result = $this->so->updateEmployee($params['funcionario_id'], $params['organizacao_id'], $params['area_id'], $this->_nullReplace($params['centro_custo_id']), $params['localidade_id'], $params['funcionario_status_id'], $this->_nullReplace($params['cargo_id']), $this->_nullReplace($params['nivel']), $this->_nullReplace($params['funcionario_categoria_id']), $params['titulo'], $params['apelido'], $params['funcao'], $params['data_admissao']); $this->disconnect_all(); Index: /branches/2.4/workflow/js/orgchart/organization.js =================================================================== --- /branches/2.4/workflow/js/orgchart/organization.js (revision 3167) +++ /branches/2.4/workflow/js/orgchart/organization.js (revision 6507) @@ -703,8 +703,10 @@ content += ''; content += ''; + content += '