✏️ 正在编辑: FolhaPontoFolgas.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/application/models/FolhaPontoFolgas.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_FolhaPontoFolgas { private $_id; private $_funcionarioId; private $_data_inicial; private $_data_final; private $_descricao; /** @var int */ public const TIPO_DATA = 1, TIPO_HORA = 2 ; /** @var string */ public const TIPO_DATA_DESC = 'Data', TIPO_HORA_DESC = 'Hora' ; /** @var string */ private $horas; /** @var int */ private $tipo; public function getId() { return $this->_id; } public function setId($id) { $this->_id = $id; } public function getFuncionarioId() { return $this->_funcionarioId; } public function setFuncionarioId($funcionarioId) { $this->_funcionarioId = $funcionarioId; } public function getDataInicial() { return $this->_data_inicial; } public function setDataInicial($data_inicial) { $data = new Zend_Date($data_inicial, Zend_Date::DATES, 'pt'); $this->_data_inicial = $data->toString('yyyy-MM-dd'); } public function getDataFinal() { return $this->_data_final; } public function setDataFinal($data_final) { $data = new Zend_Date($data_final, Zend_Date::DATES, 'pt'); $this->_data_final = $data->toString('yyyy-MM-dd'); } /** * @return string */ public function getHoras(): ?string { return $this->horas; } /** * @param string $horas */ public function setHoras(string $horas): void { $this->horas = $horas; } /** * @return int */ public function getTipo(): int { return $this->tipo; } /** * @param int $tipo */ public function setTipo(int $tipo): void { $this->tipo = $tipo; } public function getDescricao() { return $this->_descricao; } public function setDescricao($descricao) { $this->_descricao = $descricao; } public function __construct($options = null) { if (is_array($options)) { $this->setOptions($options); } } public function setOptions($options) { $methods = get_class_methods($this); foreach ($options as $key => $value) { $explode = explode("_", $key); $methodName = ''; foreach ($explode as $v) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'set' . ucfirst($key); if (in_array($method, $methods)) { $this->$method($value); } } return $this; } public function _toArray() { $dbtable = new Model_DbTable_FolhaPontoFolgas(); $info = $dbtable->info(); $methods = get_class_methods($this); $data = []; foreach ($info['cols'] as $key) { $col = $key; $explode = explode("_", $key); $methodName = ''; foreach ($explode as $v) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'get' . ucfirst($key); if (in_array($method, $methods)) { $data[$col] = $this->$method(); } } return $data; } public function exibir($id) { $dbtable = new Model_DbTable_FolhaPontoFolgas(); return $dbtable->fetchRow(["id = ?" => $id]); } public function salvar(Model_FolhaPontoFolgas $folha) { try { $dbtable = new Model_DbTable_FolhaPontoFolgas(); $result = false; $dadosFolga = $folha->_toArray(); foreach ($folha->_funcionarioId as $funcionarioId) { unset($dadosFolga['funcionario_id']); $dadosFolga['funcionario_id'] = $funcionarioId; $dadosFolga['horas'] = $this->horasResolve($funcionarioId); if ($folha->getId() > 0) { $dbtable->update($dadosFolga, ["id = ?" => $folha->getId()]); $result = [ 'id' => $folha->getId(), 'status' => 'success', 'msg' => 'Dados salvos com sucesso.' ]; } else { $result = [ 'id' => $dbtable->insert($dadosFolga), 'status' => 'success', 'msg' => 'Dados salvos com sucesso.' ]; } } } catch ( Zend_Exception $e ) { return [ 'id' => null, 'status' => 'error', 'msg' => $e->getMessage() ]; } return $result; } public function excluir($id) { if ($id > 0) { $dbtable = new Model_DbTable_FolhaPontoFolgas(); return $dbtable->delete(["id = ?" => $id]); } return null; } public static function contarDiasUteis($diasAgente, $idAgente) { $date = new Zend_Date(); $diaAtual = $date->get(Zend_Date::DAY); $ultimaData = $date->setDay($diaAtual)->get('yyyy-MM-dd'); $primeiraData = $date->setDay(1)->get('yyyy-MM-dd'); $diasSemana = explode(',', $diasAgente); $diasUteisAgente = 0; $count = 1; while ($primeiraData <= $ultimaData) { if (self::anularDiasFolga($primeiraData, $idAgente) && is_numeric(array_search(date('w', strtotime($primeiraData)), $diasSemana))) { $diasUteisAgente += 1; } $count += 1; $primeiraData = $date->setDay($count)->get('yyyy-MM-dd'); } return $diasUteisAgente; } public static function anularDiasFolga($data, $funcionarioId) { $dbTableFolgas = new Model_DbTable_FolhaPontoFolgas(); return $dbTableFolgas->selectDiaFolga($data, $funcionarioId) ? false : true; } /** * @param int $funcionario * @return string */ public function horasResolve(int $funcionario): string { return (int) $this->tipo === self::TIPO_DATA ? Model_Usuario::getJornadaTrabalho($funcionario)['jornada'] : $this->horas ; } /** * @param $mesAno * @param int $funcionario * @return stdClass * @throws Zend_Db_Table_Exception */ public function getFolgas(string $mesAno, int $funcionario): stdClass { $jornada = Model_Usuario::getJornadaTrabalho($funcionario); $folgas = (new Model_DbTable_FolhaPontoFolgas())->findFolgas($mesAno, $funcionario); return (new Service_Folga())->resolve($jornada, $folgas); } /** * @param string $mesAno * @param int $funcionario * @return int * @throws Zend_Db_Table_Exception */ public function getDiasFolgados(string $mesAno, int $funcionario): int { $folgas = $this->getFolgas($mesAno, $funcionario); return !empty($folgas) ? count(get_object_vars($folgas)) : 0 ; } }
💾 保存文件
← 返回文件管理器