namespace ArquivoSolicitacao; class ArquivoSolicitacao { private $id_arquivo; private $fk_id_solicitacao; private $nome; private $fk_comentario_solicitacao; function __construct() { $this->id_arquivo = NULL; $this->fk_id_solicitacao = NULL; $this->nome = NULL; } /** * Get the value of id_arquivo */ public function getIdArquivo() { return $this->id_arquivo; } /** * Set the value of id_arquivo * * @return self */ public function setIdArquivo($id_arquivo) { $this->id_arquivo = $id_arquivo; return $this->id_arquivo; } /** * Get the value of fk_id_solicitacao */ public function getFkIdSolicitacao() { return $this->fk_id_solicitacao; } /** * Set the value of fk_id_solicitacao * * @return self */ public function setFkIdSolicitacao($fk_id_solicitacao) { $this->fk_id_solicitacao = $fk_id_solicitacao; return $this->fk_id_solicitacao; } /** * Get the value of nome */ public function getNome() { return $this->nome; } /** * Set the value of nome * * @return self */ public function setNome($nome) { $this->nome = $nome; return $this->nome; } public function arrayToSolicitacao($array){ $this->id_arquivo = isset($array['id_arquivo']) ? $this->setIdArquivo($array['id_arquivo']) : NULL; $this->fk_id_solicitacao = isset($array['fk_id_solicitacao']) ? $this->setFkIdSolicitacao($array['fk_id_solicitacao']) : NULL; $this->nome = isset($array['nome']) ? $this->setNome($array['nome']) : NULL; $this->fk_comentario_solicitacao = isset($array['comentario']) ? $this->setFkComentarioSolicitacao($array['comentario']) : NULL; } /** * Get the value of fk_comentario_solicitacao */ public function getFkComentarioSolicitacao() { return $this->fk_comentario_solicitacao; } /** * Set the value of fk_comentario_solicitacao */ public function setFkComentarioSolicitacao($fk_comentario_solicitacao) { $this->fk_comentario_solicitacao = $fk_comentario_solicitacao; return $this->fk_comentario_solicitacao; } } namespace ArquivoSolicitacaoDao; use ArquivoSolicitacao\ArquivoSolicitacao; class ArquivoSolicitacaoDao { public $con; function __construct($con) { $this->con = $con; } public function insert($arqvSolicitacao) { $insertTipo = $this->con->prepare("INSERT INTO pe_arquivo_solicitacao(nome,fk_id_solicitacao) VALUES(?,?)"); $insertTipo->execute(array($arqvSolicitacao->getNome(), $arqvSolicitacao->getFkIdSolicitacao())); if ($insertTipo->rowCount() > 0) return true; else return false; } public function list($id){ $rs = $this->con->prepare("SELECT pa.nome, ps.comentario FROM pe_arquivo_solicitacao as pa INNER JOIN pe_solicitacao as ps ON ps.id_registro = pa.fk_id_solicitacao WHERE id_arquivo = ?"); $rs->execute(array($id)); $ficha = new ArquivoSolicitacao(); if($rs->rowCount() > 0){ $ficha->arrayToSolicitacao($rs->fetch()); return $ficha; } else{ return $rs->errorInfo(); } } public function listBySolicitacao($id) { $consultaTipos = $this->con->prepare("SELECT * FROM pe_arquivo_solicitacao WHERE fk_id_solicitacao=?"); $consultaTipos->execute(array($id)); $ficha = new ArquivoSolicitacao(); if ($consultaTipos->rowCount() > 0){ $ficha->arrayToSolicitacao($consultaTipos->fetch()); return $ficha; } else return false; } public function delete($id) { $consultaTipos = $this->con->prepare("DELETE FROM pe_arquivo_solicitacao WHERE id_arquivo_solicitacao=?"); $consultaTipos->execute(array($id)); if ($consultaTipos->rowCount() > 0) return true; else return false; } } namespace AtrasoDao; use Funcionario\Funcionario; use Atraso\Atraso; class AtrasoDao { public $con; function __construct($con) { $this->con = $con; } public function insert($atraso) { $insertAtraso = $this->con->prepare("INSERT INTO pe_atraso(fk_id_funcionario, horario_retorno, motivo) VALUES(?, ?, ?)"); $insertAtraso->execute(array($atraso->getFkIdFuncionario(), $atraso->getHorarioRetorno(), $atraso->getMotivo())); return $insertAtraso->rowCount() > 0 ? true : false; } public function listAll() { $atraso = null; $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con); $consultaAtraso = $this->con->prepare("SELECT * FROM pe_atraso LEFT JOIN pe_funcionario ON pe_funcionario.id_funcionario= pe_atraso.fk_id_funcionario WHERE pe_funcionario.fk_id_administrador IN ($placeholders)" . $setorFilter['sql'] . " ORDER BY data DESC"); $consultaAtraso->execute(array_merge($admIds, $setorFilter['params'])); foreach ($consultaAtraso->fetchAll() as $c) { $funcionario[] = new Funcionario(); $atrasoObject[] = new Atraso(); $funcionario[count($funcionario) - 1]->arrayToFuncionario($c); $atrasoObject[count($atrasoObject) - 1]->arrayToAtraso(($c)); $atraso[] = array($atrasoObject[count($atrasoObject) - 1], $funcionario[count($funcionario) - 1]); } return ($atraso != null) ? $atraso : null; } } namespace EventosDao; class EventosDao{ public $con; function __construct($con){ $this->con = $con; } public function addEvento($array) { $query = $this->con->prepare("INSERT INTO pe_eventos(id_evento, tipo, descricao, hora_inicio, hora_fim, data_inicio, data_fim,fk_id_administrador) VALUES(?,?,?,?,?,?,?,?)"); $query->execute($array); return $query->rowCount() > 0 ? true : $query->errorInfo(); } public function updateEvento($array) { $query = $this->con->prepare("UPDATE pe_eventos SET data_inicio = :inicio, data_fim = :fim WHERE id_evento = :id"); $query->bindValue(':inicio', $array[0]); $query->bindValue(':fim', $array[1]); $query->bindValue(':id', $array[2]); $query->execute(); return $query->rowCount() > 0 ? true : $query->errorInfo(); } public function updateInfoEvento($array) { $query = $this->con->prepare("UPDATE pe_eventos SET descricao = :descricao, tipo = :titulo, hora_inicio = :inicio, hora_fim = :fim WHERE id_evento = :id"); $query->execute($array); return $query->rowCount() > 0 ? true : $query->errorInfo(); } public function listAllEventosByFunc($id){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT e.id_evento, e.hora_inicio, e.hora_fim, e.tipo, e.data_inicio, e.data_fim, e.descricao FROM pe_eventos as e INNER JOIN pe_eventos_has_pe_funcionario as has ON has.fk_id_evento = e.id_evento INNER JOIN pe_funcionario as f ON f.id_funcionario = has.fk_id_funcionario WHERE e.fk_id_administrador IN ($placeholders) AND f.id_funcionario = ? GROUP BY e.id_evento"); $query->execute(array_merge($admIds, array($id))); return $query->fetchAll(); } public function listAllEventos(){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT e.id_evento, e.hora_inicio, e.hora_fim, e.tipo, e.data_inicio, e.data_fim, e.descricao FROM pe_eventos as e INNER JOIN pe_eventos_has_pe_funcionario as has ON has.fk_id_evento = e.id_evento INNER JOIN pe_funcionario as f ON f.id_funcionario = has.fk_id_funcionario WHERE e.fk_id_administrador IN ($placeholders) GROUP BY e.id_evento"); $query->execute($admIds); return $query->rowCount() > 0 ? $query->fetchAll() : 0; } public function listAllByType($type) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT id_evento FROM pe_eventos WHERE fk_id_administrador IN ($placeholders) AND tipo = ? AND data_inicio >= CURRENT_DATE() - 1"); $query->execute(array_merge($admIds, array($type))); return $query->fetchAll(); } public function listAllEventos_funcionarios($evento) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT f.id_funcionario, f.nome FROM pe_eventos as e INNER JOIN pe_eventos_has_pe_funcionario as has ON has.fk_id_evento = e.id_evento INNER JOIN pe_funcionario as f ON f.id_funcionario = has.fk_id_funcionario WHERE e.fk_id_administrador IN ($placeholders) AND has.fk_id_evento = ?"); $query->execute(array_merge($admIds, array($evento))); return $query->fetchAll(); } public function listAllEventosByFuncionario($funcionario, $data, $tipo) { $inicioMes = $data . "-01"; $proximoMes = date('Y-m-d', strtotime($inicioMes . ' +1 month')); $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT e.data_inicio, e.data_fim,hora_inicio,hora_fim FROM pe_eventos as e INNER JOIN pe_eventos_has_pe_funcionario as has ON has.fk_id_evento = e.id_evento INNER JOIN pe_funcionario as f ON f.id_funcionario = has.fk_id_funcionario WHERE e.fk_id_administrador IN ($placeholders) AND has.fk_id_funcionario = ? AND e.tipo = ? AND e.data_inicio < ? AND e.data_fim >= ?"); $query->execute(array_merge($admIds, array($funcionario, $tipo, $proximoMes, $inicioMes))); return $query->fetchAll(); } public function listEventosByFuncionarioMes($funcionario,$data) { $inicioMes = $data . "-01"; $proximoMes = date('Y-m-d', strtotime($inicioMes . ' +1 month')); $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT e.data_inicio, e.data_fim,hora_inicio,hora_fim FROM pe_eventos as e INNER JOIN pe_eventos_has_pe_funcionario as has ON has.fk_id_evento = e.id_evento INNER JOIN pe_funcionario as f ON f.id_funcionario = has.fk_id_funcionario WHERE e.fk_id_administrador IN ($placeholders) AND has.fk_id_funcionario = ? AND e.data_inicio < ? AND e.data_fim >= ?"); $query->execute(array_merge($admIds, array($funcionario, $proximoMes, $inicioMes))); return $query->fetchAll(); } public function addHas($array) { $query = $this->con->prepare("INSERT INTO pe_eventos_has_pe_funcionario(fk_id_evento, fk_id_funcionario) VALUES(?,?)"); $query->execute($array); return $query->rowCount() > 0 ? true : $query->errorInfo(); } public function deleteHas($array) { $query = $this->con->prepare("DELETE FROM pe_eventos_has_pe_funcionario WHERE fk_id_evento = ? AND fk_id_funcionario = ?"); $query->execute($array); return $query->rowCount() > 0 ? true : $query->errorInfo(); } public function removeEvento($id) { $query1 = $this->con->prepare("DELETE FROM pe_eventos WHERE id_evento = ? AND fk_id_administrador = ?"); $query1->execute(array($id, ADM_ID)); if($query1->rowCount() != 0){ $query2 = $this->con->prepare("DELETE FROM pe_eventos_has_pe_funcionario WHERE fk_id_evento = ?"); $query2->execute(array($id)); return $query2->rowCount() > 0 ? true : $query2->errorInfo(); } return $query1->rowCount() > 0 ? true : $query1->errorInfo(); } } namespace FaturaDao; use Fatura\Fatura; class FaturaDao { public $con; function __construct($con) { $this->con = $con; } public function insert($array) { $insertFatura = $this->con->prepare("INSERT INTO pe_fatura(fk_id_administrador,valor,fk_id_status,data,data_vencimento, usuarios_ativos, valor_un ) VALUES(:fk_id_administrador,:valor,:fk_id_status,:data,:data_vencimento,:usuarios_ativos, :valor_un)"); $insertFatura->execute($array); return $insertFatura->rowCount() > 0 ? true : false; } public function listAll() { $atraso = null; $consultaFatura = $this->con->prepare("SELECT * FROM pe_fatura WHERE fk_id_administrador=? "); $consultaFatura->execute(array(ADM_ID)); foreach ($consultaFatura->fetchAll() as $c) { $fatura = new Fatura(); $atraso[] = $fatura->arrayToFatura($c); } return ($atraso != null) ? $atraso : null; } } namespace Fuso; class Fuso { private $id_fuso; private $gmt; private $referencia_servidor; private $nome; function __construct(){ $this->id_fuso = NULL; $this->gmt = NULL; $this->referencia_servidor = NULL; $this->nome = NULL; } /** * Get the value of id_fuso */ public function getIdFuso() { return $this->id_fuso; } /** * Set the value of id_fuso */ public function setIdFuso($id_fuso) { $this->id_fuso = $id_fuso; return $this->id_fuso; } /** * Get the value of gmt */ public function getGmt() { return $this->gmt; } /** * Set the value of gmt */ public function setGmt($gmt) { $this->gmt = $gmt; return $this->gmt; } /** * Get the value of referencia_servidor */ public function getReferenciaServidor() { return $this->referencia_servidor; } /** * Set the value of referencia_servidor */ public function setReferenciaServidor($referencia_servidor) { $this->referencia_servidor = $referencia_servidor; return $this->referencia_servidor; } /** * Get the value of nome */ public function getNome() { return $this->nome; } /** * Set the value of nome */ public function setNome($nome) { $this->nome = $nome; return $this->nome; } public function arrayToFuso($array){ $id_fuso = isset($array['id_fuso']) ? $this->setIdFuso($array['id_fuso']) : NULL; $gmt = isset($array['gmt']) ? $this->setGmt($array['gmt']) : NULL; $referencia_servidor = isset($array['referencia_servidor']) ? $this->setReferenciaServidor($array['referencia_servidor']) : NULL; $nome = isset($array['nome']) ? $this->setNome($array['nome']) : NULL; } } namespace Ficha; use Local\Local; use Tipo\Tipo; use Funcionario\Funcionario; class Ficha { use fichaInfosLocal, fichaInfosFuncionario, fichaInfosTipoRegistro; private $id_ficha_ponto; private $data; private $fk_id_funcionario; private $fk_id_tipo_registro; private $fk_id_local; private $latitude; private $longitude; private $fk_id_administrador; private $alterado; private $mobile; private $fk_id_status_reconhecimento_facial; private $valido; private $origem_registro; private $meio; private $fk_id_equipamento; private $hash_registro; private $localObjeto; private $registroTipoObjeto; private $funcionarioObjeto; function __construct() { $this->id_ficha_ponto = NULL; $this->data = NULL; $this->fk_id_funcionario = NULL; $this->fk_id_tipo_registro = NULL; $this->fk_id_local = NULL; $this->latitude = NULL; $this->longitude = NULL; $this->fk_id_administrador = NULL; $this->alterado = NULL; $this->mobile = NULL; $this->fk_id_status_reconhecimento_facial = NULL; $this->valido = NULL; $this->localObjeto = new Local(); $this->registroTipoObjeto = new Tipo(); $this->funcionarioObjeto = new Funcionario(); } public function getData() { return $this->data; } public function getFkIdFuncionario() { return $this->fk_id_funcionario; } public function getFkIdTipoRegistro() { return $this->fk_id_tipo_registro; } public function getFkIdLocal() { return $this->fk_id_local; } public function getLatitude() { return $this->latitude; } public function getLongitude() { return $this->longitude; } public function getAlterado() { return $this->alterado; } /** * Get the value of fk_id_administrador */ public function getFkIdAdministrador() { return $this->fk_id_administrador; } /** * Set the value of fk_id_administrador * * @return self */ public function setFkIdAdministrador($fk_id_administrador) { $this->fk_id_administrador = $fk_id_administrador; return $this->fk_id_administrador; } /** * Get the value of mobile */ public function getMobile() { return $this->mobile; } /** * Set the value of mobile * * @return self */ public function setMobile($mobile) { $this->mobile = $mobile; return $this->mobile; } /** * Set the value of data * * @return self */ public function setData($data) { $this->data = $data; return $this->data; } /** * Set the value of fk_id_tipo_registro * * @return self */ public function setFkIdTipoRegistro($fk_id_tipo_registro) { $this->fk_id_tipo_registro = $fk_id_tipo_registro; return $this->fk_id_tipo_registro; } public function arrayToFicha($array){ $this->id_ficha_ponto = isset($array['id_ficha_ponto']) ? $this->setIdFichaPonto($array['id_ficha_ponto']) : NULL; $this->data = isset($array['data']) ? $this->setData($array['data']) : NULL; $this->fk_id_funcionario = isset($array['fk_id_funcionario']) ? $this->setFkIdFuncionario($array['fk_id_funcionario']) : NULL; $this->fk_id_tipo_registro = isset($array['fk_id_tipo_registro']) ? $this->setFkIdTipoRegistro($array['fk_id_tipo_registro']) : NULL; $this->fk_id_local = isset($array['fk_id_local']) ? $this->setFkIdLocal($array['fk_id_local']) : NULL; $this->latitude = isset($array['latitude']) ? $this->setLatitude($array['latitude']) : NULL; $this->longitude = isset($array['longitude']) ? $this->setLongitude($array['longitude']) : NULL; $this->fk_id_administrador = isset($array['fk_id_administrador']) ? $this->setFkIdAdministrador($array['fk_id_administrador']) : NULL; $this->alterado = isset($array['alterado']) ? $this->setAlterado($array['alterado']) : NULL; $this->mobile = isset($array['mobile']) ? $this->setMobile($array['mobile']) : NULL; $this->fk_id_status_reconhecimento_facial = isset($array['fk_id_status_reconhecimento_facial']) ? $this->setFkIdStatusReconhecimentoFacial($array['fk_id_status_reconhecimento_facial']) : NULL; $this->valido = isset($array['valido']) ? $this->setValido($array['valido']) : NULL; $this->origem_registro = isset($array['origem_registro']) ? $this->setOrigemRegistro($array['origem_registro']) : NULL; $this->meio = isset($array['meio']) ? $this->setMeio($array['meio']) : NULL; $this->fk_id_equipamento = isset($array['fk_id_equipamento']) ? $this->setFkIdEquipamento($array['fk_id_equipamento']) : NULL; $this->hash_registro = isset($array['hash_registro']) ? $this->setHashRegistro($array['hash_registro']) : NULL; isset($array['l_lat']) ? $this->setLocalLatitude($array['l_lat']) : $this->setLocalLatitude(''); isset($array['l_long']) ? $this->setLocalLongitude($array['l_long']) : $this->setLocalLongitude(''); isset($array['nome_local']) ? $this->setLocalNome($array['nome_local']) : $this->setLocalNome(''); isset($array['raio']) ? $this->setLocalRaio($array['raio']) : $this->setLocalRaio(''); isset($array['nome']) ? $this->setFuncionarioNome($array['nome']) : $this->setFuncionarioNome(''); isset($array['tipo']) ? $this->setTipoRegistroNome($array['tipo']) : $this->setTipoRegistroNome(''); } /** * Get the value of id_ficha_ponto */ public function getIdFichaPonto() { return $this->id_ficha_ponto; } /** * Set the value of id_ficha_ponto */ public function setIdFichaPonto($id_ficha_ponto) { $this->id_ficha_ponto = $id_ficha_ponto; return $this->id_ficha_ponto; } /** * Set the value of fk_id_funcionario */ public function setFkIdFuncionario($fk_id_funcionario) { $this->fk_id_funcionario = $fk_id_funcionario; return $this->fk_id_funcionario; } /** * Set the value of fk_id_local */ public function setFkIdLocal($fk_id_local) { $this->fk_id_local = $fk_id_local; return $this->fk_id_local; } /** * Set the value of latitude */ public function setLatitude($latitude) { $this->latitude = $latitude; return $this->latitude; } /** * Set the value of longitude */ public function setLongitude($longitude) { $this->longitude = $longitude; return $this->longitude; } /** * Get the value of fk_id_status_reconhecimento_facial */ public function getFkIdStatusReconhecimentoFacial() { return $this->fk_id_status_reconhecimento_facial; } /** * Set the value of fk_id_status_reconhecimento_facial */ public function setFkIdStatusReconhecimentoFacial($fk_id_status_reconhecimento_facial) { $this->fk_id_status_reconhecimento_facial = $fk_id_status_reconhecimento_facial; return $this->fk_id_status_reconhecimento_facial; } /** * Get the value of valido */ public function getValido() { return $this->valido; } /** * Set the value of valido */ public function setValido($valido) { $this->valido = $valido; return $this->valido; } /** * Set the value of alterado */ public function setAlterado($alterado) { $this->alterado = $alterado; return $this->alterado; } public function getOrigemRegistro() { return $this->origem_registro; } public function setOrigemRegistro($v) { $this->origem_registro = $v; return $v; } public function getMeio() { return $this->meio; } public function setMeio($v) { $this->meio = $v; return $v; } public function getFkIdEquipamento() { return $this->fk_id_equipamento; } public function setFkIdEquipamento($v) { $this->fk_id_equipamento = $v; return $v; } public function getHashRegistro() { return $this->hash_registro; } public function setHashRegistro($v) { $this->hash_registro = $v; return $v; } } trait fichaInfosLocal{ public function setLocalLatitude($latitude){ $this->localObjeto->setLatitude($latitude); } public function getLocalLatitude(){ return $this->localObjeto->getLatitude(); } public function setLocalLongitude($longitude){ $this->localObjeto->setLongitude($longitude); } public function getLocalLongitude(){ return $this->localObjeto->getLongitude(); } public function setLocalNome($nome_local){ $this->localObjeto->setNome($nome_local); } public function getLocalNome(){ return $this->localObjeto->getNome(); } public function setLocalRaio($raio){ $this->localObjeto->setRaio($raio); } public function getLocalRaio(){ return $this->localObjeto->getRaio(); } } trait fichaInfosFuncionario{ public function setFuncionarioNome($nome_funcionario){ $this->funcionarioObjeto->setNome($nome_funcionario); } public function getFuncionarioNome(){ return $this->funcionarioObjeto->getNome(); } } trait fichaInfosTipoRegistro{ public function setTipoRegistroNome($tipo){ $this->registroTipoObjeto->setNome($tipo); } public function getTipoRegistroNome(){ return $this->registroTipoObjeto->getNome(); } } namespace FichaDao; use Ficha\Ficha; class FichaDao { public $con; function __construct($con) { $this->con = $con; } public function listAll($order = "data ASC") { $ficha = null; $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaFichas = $this->con->prepare("SELECT * FROM pe_ficha_ponto WHERE fk_id_administrador IN ($placeholders) AND valido=1 ORDER BY $order"); $consultaFichas->execute($admIds); foreach ($consultaFichas->fetchAll() as $c) { $ficha[] = new Ficha(); $ficha[count($ficha) - 1]->arrayToFicha($c); } return ($ficha != null) ? $ficha : null; } public function countDiasTrabalhados($id_funcionario, $data) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaDias = $this->con->prepare("SELECT (SUM(fk_id_tipo_registro)%4) as valido, MIN(fk_id_tipo_registro) as menor, MAX(fk_id_tipo_registro) as maior FROM pe_ficha_ponto WHERE fk_id_administrador IN ($placeholders) AND valido=1 AND fk_id_funcionario=? AND YEAR(?)=YEAR(data) AND MONTH(?)=MONTH(data) GROUP BY MONTH(data),YEAR(data),DAY(data) "); $consultaDias->execute(array_merge($admIds, array($id_funcionario, $data, $data))); return ($consultaDias != null) ? $consultaDias->rowCount() : null; } public function countDiasValidos($id_funcionario, $data) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaDias = $this->con->prepare("SELECT (SUM(fk_id_tipo_registro)%4) as valido, MIN(fk_id_tipo_registro) as menor, MAX(fk_id_tipo_registro) as maior FROM pe_ficha_ponto WHERE fk_id_administrador IN ($placeholders) AND valido=1 AND fk_id_funcionario=? AND YEAR(?)=YEAR(data) AND MONTH(?)=MONTH(data) GROUP BY MONTH(data),YEAR(data),DAY(data) "); $consultaDias->execute(array_merge($admIds, array($id_funcionario, $data, $data))); $cont = 0; foreach ($consultaDias->fetchAll() as $dia) { if ($dia['valido'] == 0 && $dia['menor'] == 1 && $dia['maior'] == 3) { $cont++; } } return $cont; } public function listPorFuncionario($funcionario) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaFichas = $this->con->prepare("SELECT p.id_ficha_ponto, p.latitude, p.longitude, p.data, r.nome as tipo FROM pe_ficha_ponto as p INNER JOIN pe_tipo_registro as r ON r.id_tipo_registro = p.fk_id_tipo_registro WHERE p.fk_id_administrador IN ($placeholders) AND p.fk_id_funcionario=? AND p.latitude <> '' AND p.longitude <> '' ORDER BY p.data DESC"); $consultaFichas->execute(array_merge($admIds, array($funcionario))); foreach ($consultaFichas->fetchAll() as $c) { $fichas[] = new Ficha(); $fichas[count($fichas) - 1]->arrayToFicha($c); } return ($consultaFichas->rowCount()) ? $fichas : array(); } public function listPorFuncionarioPeriodo($funcionario, $dias) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaFichas = $this->con->prepare("SELECT l.latitude as l_lat, l.longitude as l_long, l.nome as nome_local, l.raio, p.id_ficha_ponto, p.latitude, p.longitude, p.data, r.nome as tipo FROM pe_ficha_ponto as p INNER JOIN pe_tipo_registro as r ON r.id_tipo_registro = p.fk_id_tipo_registro INNER JOIN pe_funcionario as f ON f.id_funcionario = p.fk_id_funcionario INNER JOIN pe_local as l ON l.id_local = f.fk_id_local WHERE p.fk_id_administrador IN ($placeholders) AND p.fk_id_funcionario=? AND p.valido = 1 AND p.mobile <> 0 AND DATE(p.data) >= DATE(NOW()) - INTERVAL ? DAY ORDER BY p.data DESC"); $consultaFichas->execute(array_merge($admIds, array($funcionario, $dias))); foreach ($consultaFichas->fetchAll() as $c) { $fichas[] = new Ficha(); $fichas[count($fichas) - 1]->arrayToFicha($c); } return ($consultaFichas->rowCount()) ? $fichas : array(); } public function listAllPorPeriodo($dias) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con, 'f.fk_id_setor'); $consultaFichas = $this->con->prepare("SELECT f.id_funcionario as fk_id_funcionario, f.nome, p.id_ficha_ponto, p.latitude, p.longitude, p.data, r.nome as tipo FROM pe_ficha_ponto as p INNER JOIN pe_tipo_registro as r ON r.id_tipo_registro = p.fk_id_tipo_registro INNER JOIN pe_funcionario as f ON f.id_funcionario = p.fk_id_funcionario WHERE p.fk_id_administrador IN ($placeholders) AND p.valido = 1 AND p.mobile = 1 AND DATE(p.data) >= DATE(NOW()) - INTERVAL ? DAY" . $setorFilter['sql'] . " ORDER BY p.data DESC LIMIT 5"); $consultaFichas->execute(array_merge($admIds, array($dias), $setorFilter['params'])); if ($consultaFichas->rowCount()) { foreach ($consultaFichas->fetchAll() as $c) { $fichas[] = new Ficha(); $fichas[count($fichas) - 1]->arrayToFicha($c); } return $fichas; } return array(); } public function listAllAFD($funcionario, $order = "data ASC") { $ficha = null; $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaFichas = $this->con->prepare("SELECT * FROM pe_ficha_ponto WHERE fk_id_administrador IN ($placeholders) AND fk_id_funcionario=? ORDER BY $order"); $consultaFichas->execute(array_merge($admIds, array($funcionario))); foreach ($consultaFichas->fetchAll() as $c) { $ficha[] = new Ficha(); $ficha[count($ficha) - 1]->arrayToFicha($c); } return ($ficha != null) ? $ficha : null; } public function listDataTable() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaFichas = $this->con->prepare("SELECT p.mobile, p.id_ficha_ponto, f.nome AS funcionario, p.data, t.nome AS tipo, l.nome as nome_local FROM pe_ficha_ponto as p INNER JOIN pe_funcionario as f ON f.id_funcionario = p.fk_id_funcionario INNER JOIN pe_tipo_registro as t ON t.id_tipo_registro = p.fk_id_tipo_registro LEFT JOIN pe_local as l ON l.id_local = p.fk_id_local WHERE p.fk_id_administrador IN ($placeholders) AND p.valido = 1 ORDER BY p.data DESC"); $consultaFichas->execute($admIds); return $consultaFichas->fetchAll(); } public function insertManual($ficha) { $idContrato = resolverContratoFuncionario($ficha->getFkIdFuncionario(), $this->con, $ficha->getFkIdAdministrador(), $ficha->getFkIdLocal()); $prepara = $this->con->prepare("INSERT INTO pe_ficha_ponto(fk_id_funcionario,fk_id_tipo_registro,fk_id_local,fk_id_administrador,data,alterado,fk_id_contrato) VALUES(?,?,?,?,?,?,?)"); $prepara->execute(array( $ficha->getFkIdFuncionario(), $ficha->getFkIdTipoRegistro(), $ficha->getFkIdLocal(), $ficha->getFkIdAdministrador(), $ficha->getData(), $ficha->getAlterado(), $idContrato )); return $prepara->rowCount() > 0 ? true : $prepara->errorInfo(); } public function baterPonto($ficha) { $idContrato = resolverContratoFuncionario($ficha->getFkIdFuncionario(), $this->con, $ficha->getFkIdAdministrador(), $ficha->getFkIdLocal()); $origemRegistro = method_exists($ficha, 'getOrigemRegistro') && $ficha->getOrigemRegistro() ? $ficha->getOrigemRegistro() : 'web'; $prepara = $this->con->prepare("INSERT INTO pe_ficha_ponto(fk_id_funcionario,fk_id_tipo_registro,fk_id_local,fk_id_administrador,data,latitude,longitude,fk_id_contrato,origem_registro) VALUES(?,?,?,?,?,?,?,?,?)"); $prepara->execute(array( $ficha->getFkIdFuncionario(), $ficha->getFkIdTipoRegistro(), $ficha->getFkIdLocal(), $ficha->getFkIdAdministrador(), $ficha->getData(), $ficha->getLatitude(), $ficha->getLongitude(), $idContrato, $origemRegistro )); if ($prepara->rowCount() > 0) { return intval($this->con->lastInsertId()); } return $prepara->errorInfo(); } public function insert($ficha) { $idContrato = resolverContratoFuncionario($ficha->getFkIdFuncionario(), $this->con, $ficha->getFkIdAdministrador(), $ficha->getFkIdLocal()); $insertFicha = $this->con->prepare("INSERT INTO pe_ficha_ponto(data,fk_id_funcionario,fk_id_tipo_registro,fk_id_local,latitude,longitude,fk_id_administrador,alterado,fk_id_contrato) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)"); $insertFicha->execute(array( $ficha->getData(), $ficha->getFkIdFuncionario(), $ficha->getFkIdTipoRegistro(), $ficha->getFkIdLocal(), $ficha->getLatitude(), $ficha->getLongitude(), $ficha->getFkIdAdministrador(), $ficha->getAlterado(), $idContrato )); if ($insertFicha->rowCount() > 0) return true; else return false; } public function list($id) { $consultaFichas = $this->con->prepare("SELECT * FROM pe_ficha_ponto WHERE id_ficha_ponto=? AND valido=1"); $consultaFichas->execute(array($id)); $ficha = new Ficha(); $ficha->arrayToFicha($consultaFichas->fetch()); return $ficha; } public function ativaPonto($id) { $consultaFichas = $this->con->prepare("UPDATE pe_ficha_ponto SET valido=1 WHERE id_ficha_ponto=?"); $consultaFichas->execute(array($id)); return $consultaFichas->rowCount() > 0 ? true : $consultaFichas->errorInfo(); } public function delete($id) { $consultaFichas = $this->con->prepare("UPDATE pe_ficha_ponto SET valido = 0 WHERE id_ficha_ponto = ?"); $consultaFichas->execute(array($id)); return $consultaFichas->rowCount() > 0 ? true : $consultaFichas->errorInfo(); } public function listByFuncionario($id) { $ficha = null; $consultaFichas = $this->con->prepare("SELECT * FROM pe_ficha_ponto WHERE fk_id_funcionario=? AND valido=1 ORDER BY data"); $consultaFichas->execute(array($id)); foreach ($consultaFichas->fetchAll() as $c) { $ficha[] = new Ficha(); $ficha[count($ficha) - 1]->arrayToFicha($c); } return ($ficha != null) ? $ficha : null; } public function listByFuncionarioDay($id_funcionario, $date) { $ficha = null; $setorFilter = buildSetorFilterSql($this->con); if (!empty($setorFilter['params'])) { $consultaFichas = $this->con->prepare("SELECT pe_ficha_ponto.* FROM pe_ficha_ponto LEFT JOIN pe_funcionario ON pe_funcionario.id_funcionario=pe_ficha_ponto.fk_id_funcionario WHERE fk_id_funcionario=? AND data LIKE ? AND valido = 1" . $setorFilter['sql'] . " ORDER BY data"); $consultaFichas->execute(array_merge(array($id_funcionario, $date . "%"), $setorFilter['params'])); } else { $consultaFichas = $this->con->prepare("SELECT * FROM pe_ficha_ponto WHERE fk_id_funcionario=? AND data LIKE ? AND valido = 1 ORDER BY data"); $consultaFichas->execute(array($id_funcionario, $date . "%")); } foreach ($consultaFichas->fetchAll() as $c) { if ($consultaFichas->rowCount() > 0) { $ficha[] = new Ficha(); $ficha[count($ficha) - 1]->arrayToFicha($c); } } return ($ficha != null) ? $ficha : null; } public function listByFuncionarioDayAll($id_funcionario, $date) { //lista inclusive dias excluidos $ficha = null; $consultaFichas = $this->con->prepare("SELECT * FROM pe_ficha_ponto WHERE fk_id_funcionario=? AND valido = 1 AND data LIKE ? ORDER BY data"); $consultaFichas->execute(array($id_funcionario, $date . "%")); foreach ($consultaFichas->fetchAll() as $c) { if ($consultaFichas->rowCount() > 0) { $ficha[] = new Ficha(); $ficha[count($ficha) - 1]->arrayToFicha($c); } } return ($ficha != null) ? $ficha : null; } public function firstPoint($id) { $consultaFichas = $this->con->prepare("SELECT * FROM pe_ficha_ponto WHERE fk_id_funcionario = ? AND valido = 1 AND data <> '0000-00-00 00:00:00' ORDER BY data ASC LIMIT 1"); $consultaFichas->execute(array($id)); $c = $consultaFichas->fetch(); if ($consultaFichas->rowCount() > 0) { $ficha = new Ficha(); $ficha->arrayToFicha($c); return $ficha; } else { return null; } } public function lastPointAllTime($id) { $ficha = null; $consultaFichas = $this->con->prepare("SELECT * FROM pe_ficha_ponto WHERE fk_id_funcionario=? AND valido=1 ORDER BY data DESC LIMIT 1"); $consultaFichas->execute(array($id)); $c = $consultaFichas->fetch(); $ficha = new Ficha(); $ficha->arrayToFicha($c); return ($ficha != null) ? $ficha : null; } public function pointsToday() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con, 'f.fk_id_setor'); $jornadaFilter = buildJornadaFilterSql('f.fk_id_jornada'); $consultaFichas = $this->con->prepare("SELECT r.nome AS tipo, f.nome, fp.data, fp.latitude AS ponto_lat, fp.longitude AS ponto_lng, l.latitude AS local_lat, l.longitude AS local_lng, fp.mobile, f.modo_viagem, l.raio FROM pe_ficha_ponto as fp INNER JOIN pe_funcionario as f ON f.id_funcionario = fp.fk_id_funcionario INNER JOIN pe_local as l ON l.id_local = fp.fk_id_local INNER JOIN pe_tipo_registro as r ON r.id_tipo_registro = fp.fk_id_tipo_registro WHERE fp.data >= CURDATE() AND fp.data < CURDATE() + INTERVAL 1 DAY AND fp.valido = 1 AND fp.fk_id_administrador IN ($placeholders)" . $setorFilter['sql'] . $jornadaFilter['sql'] . " ORDER BY fp.data DESC"); $consultaFichas->execute(array_merge($admIds, $setorFilter['params'], $jornadaFilter['params'])); return $consultaFichas->fetchAll(); } public function lastPoint($id) { $ficha = null; $consultaFichas = $this->con->prepare("SELECT * FROM pe_ficha_ponto WHERE fk_id_funcionario=? AND data > CURDATE() AND valido=1 ORDER BY data DESC LIMIT 1"); $consultaFichas->execute(array($id)); $c = $consultaFichas->fetch(); if ($consultaFichas->rowCount() > 0) { $ficha = new Ficha(); $ficha->arrayToFicha($c); } return ($ficha != null) ? $ficha : null; } public function lastPoints($id) { $ficha = null; $consultaFichas = $this->con->prepare("SELECT * FROM pe_ficha_ponto WHERE fk_id_funcionario=? AND data > CURDATE() AND valido=1 ORDER BY data DESC LIMIT 2"); $consultaFichas->execute(array($id)); foreach ($consultaFichas->fetchAll() as $c) { if ($consultaFichas->rowCount() > 0) { $ficha[] = new Ficha(); $ficha[count($ficha) - 1]->arrayToFicha($c); } } return ($ficha != null) ? $ficha : null; } public function updateReconhecimentoFacial($status, $id) { $consultaFichas = $this->con->prepare("UPDATE pe_ficha_ponto SET fk_id_status_reconhecimento_facial=? WHERE id_ficha_ponto=? "); $consultaFichas->execute(array($status, $id)); return ($consultaFichas->rowCount() > 0) ? true : false; } public function listByFuncionarioDateRange($idFuncionario, $dataInicio, $dataFim, $idContrato = null) { $sql = "SELECT * FROM pe_ficha_ponto WHERE fk_id_funcionario = ? AND DATE(data) >= ? AND DATE(data) <= ? AND valido = 1"; $params = array($idFuncionario, $dataInicio, $dataFim); if ($idContrato) { $sql .= " AND fk_id_contrato = ?"; $params[] = $idContrato; } $sql .= " ORDER BY data ASC"; $stmt = $this->con->prepare($sql); $stmt->execute($params); $result = array(); foreach ($stmt->fetchAll() as $row) { $dateKey = date('Y-m-d', strtotime($row['data'])); if (!isset($result[$dateKey])) $result[$dateKey] = array(); $ficha = new Ficha(); $ficha->arrayToFicha($row); $result[$dateKey][] = $ficha; } return $result; } public function updateFuncionario($fk_id_funcionario, $id_ficha_ponto) { $consultaFichas = $this->con->prepare("UPDATE pe_ficha_ponto SET fk_id_funcionario=? WHERE id_ficha_ponto=? "); $consultaFichas->execute(array($fk_id_funcionario, $id_ficha_ponto)); return ($consultaFichas->rowCount() > 0) ? true : false; } public function listRegistrosDia($dia, $filtros = array()) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con, 'f.fk_id_setor'); $temRegistro = isset($filtros['tem_registro']) ? $filtros['tem_registro'] : 'todos'; if ($temRegistro === 'sem') { // Funcionarios SEM registro no dia $sql = "SELECT f.id_funcionario, f.nome, f.codigo, j.nome_jornada AS jornada_nome, s.nome AS setor_nome, 0 AS total_registros, NULL AS registros_json FROM pe_funcionario f LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = f.fk_id_jornada LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor WHERE f.fk_id_administrador IN ($placeholders) AND f.status = 1 AND f.id_funcionario NOT IN ( SELECT DISTINCT fk_id_funcionario FROM pe_ficha_ponto WHERE DATE(data) = ? AND valido = 1 AND fk_id_administrador IN ($placeholders) )" . $setorFilter['sql']; $params = array_merge($admIds, array($dia), $admIds, $setorFilter['params']); } else { // Funcionarios COM registro (ou todos) $sql = "SELECT f.id_funcionario, f.nome, f.codigo, j.nome_jornada AS jornada_nome, s.nome AS setor_nome, COUNT(p.id_ficha_ponto) AS total_registros, GROUP_CONCAT( CONCAT(p.id_ficha_ponto, '|', p.data, '|', p.fk_id_tipo_registro, '|', IFNULL(p.latitude,''), '|', IFNULL(p.longitude,''), '|', IFNULL(p.mobile,0), '|', IFNULL(p.alterado,0), '|', IFNULL(r.nome,''), '|', IFNULL(p.origem_registro,'web'), '|', IFNULL(p.fk_id_equipamento,''), '|', IFNULL(p.meio,'')) ORDER BY p.data ASC SEPARATOR ';;' ) AS registros_json FROM pe_funcionario f INNER JOIN pe_ficha_ponto p ON p.fk_id_funcionario = f.id_funcionario AND DATE(p.data) = ? AND p.valido = 1 INNER JOIN pe_tipo_registro r ON r.id_tipo_registro = p.fk_id_tipo_registro LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = f.fk_id_jornada LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor WHERE f.fk_id_administrador IN ($placeholders) AND f.status = 1" . $setorFilter['sql']; $params = array_merge(array($dia), $admIds, $setorFilter['params']); } // Filtro por funcionario if (!empty($filtros['funcionario'])) { $sql .= " AND f.id_funcionario = ?"; $params[] = intval($filtros['funcionario']); } // Filtro por setor if (!empty($filtros['setor'])) { $sql .= " AND f.fk_id_setor = ?"; $params[] = intval($filtros['setor']); } // Filtro por jornada if (!empty($filtros['jornada'])) { $sql .= " AND f.fk_id_jornada = ?"; $params[] = intval($filtros['jornada']); } if ($temRegistro !== 'sem') { $sql .= " GROUP BY f.id_funcionario"; } $sql .= " ORDER BY f.nome ASC"; $stmt = $this->con->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } /** * Relatório de validações faciais (app/totem Rekognition + coletor meio=facial). * @param array $filtros data_inicio, data_fim, funcionario, setor, equipamento, status, origem */ public function listValidacoesFaciais($filtros = array()) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con); $sql = "SELECT p.id_ficha_ponto, p.data, p.fk_id_tipo_registro, tr.nome AS tipo_nome, p.origem_registro, p.meio, p.fk_id_status_reconhecimento_facial AS status_rf, p.fk_id_equipamento, eq.nome AS equipamento_nome, p.latitude, p.longitude, f.id_funcionario, f.nome AS funcionario_nome, f.codigo AS cpf, s.nome AS setor_nome, l.nome AS local_nome FROM pe_ficha_ponto p INNER JOIN pe_funcionario f ON f.id_funcionario = p.fk_id_funcionario INNER JOIN pe_tipo_registro tr ON tr.id_tipo_registro = p.fk_id_tipo_registro LEFT JOIN pe_equipamento eq ON eq.id_equipamento = p.fk_id_equipamento LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor LEFT JOIN pe_local l ON l.id_local = p.fk_id_local WHERE p.valido = 1 AND p.fk_id_administrador IN ($placeholders) AND ( p.meio = 'facial' OR p.fk_id_status_reconhecimento_facial IN (0, 1) )" . $setorFilter['sql']; $params = array_merge($admIds, $setorFilter['params']); if (!empty($filtros['data_inicio'])) { $sql .= " AND DATE(p.data) >= ?"; $params[] = $filtros['data_inicio']; } if (!empty($filtros['data_fim'])) { $sql .= " AND DATE(p.data) <= ?"; $params[] = $filtros['data_fim']; } if (!empty($filtros['funcionario'])) { $sql .= " AND f.id_funcionario = ?"; $params[] = intval($filtros['funcionario']); } if (!empty($filtros['setor'])) { $sql .= " AND f.fk_id_setor = ?"; $params[] = intval($filtros['setor']); } if (!empty($filtros['equipamento'])) { $sql .= " AND p.fk_id_equipamento = ?"; $params[] = intval($filtros['equipamento']); } if (isset($filtros['status']) && $filtros['status'] !== '' && $filtros['status'] !== null) { // aprovado=1, reprovado=0, dispositivo=dispositivo (meio facial + status -1/null) if ($filtros['status'] === 'dispositivo') { $sql .= " AND p.meio = 'facial' AND (p.fk_id_status_reconhecimento_facial IS NULL OR p.fk_id_status_reconhecimento_facial NOT IN (0,1))"; } else { $sql .= " AND p.fk_id_status_reconhecimento_facial = ?"; $params[] = intval($filtros['status']); } } if (!empty($filtros['origem'])) { $sql .= " AND p.origem_registro = ?"; $params[] = $filtros['origem']; } $sql .= " ORDER BY p.data DESC LIMIT 2000"; $stmt = $this->con->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } public function updateDataRegistro($idFichaPonto, $novaData, $novaHora) { $stmt = $this->con->prepare("UPDATE pe_ficha_ponto SET data = ?, alterado = 1 WHERE id_ficha_ponto = ? AND valido = 1"); $stmt->execute(array($novaData . ' ' . $novaHora . ':00', $idFichaPonto)); return $stmt->rowCount() > 0; } } namespace Foto; class Foto { private $id_foto_funcionario; private $nome_foto; private $url; private $fk_id_funcionario; private $file_temp; private $file_index; private $hash; public function __construct(){ $this->id_foto_funcionario = NULL; $this->nome_foto = NULL; $this->url = NULL; $this->fk_id_funcionario = NULL; $this->file_temp = NULL; $this->file_index = NULL; $this->hash = NULL; } /** * Get the value of id_foto_funcionario */ public function getIdFotoFuncionario() { return $this->id_foto_funcionario; } /** * Set the value of id_foto_funcionario */ public function setIdFotoFuncionario($id_foto_funcionario) { $this->id_foto_funcionario = $id_foto_funcionario; return $this->id_foto_funcionario; } /** * Get the value of nome_foto */ public function getNomeFoto() { return $this->nome_foto; } /** * Set the value of nome_foto */ public function setNomeFoto($nome_foto) { $this->nome_foto = $nome_foto; return $this->nome_foto; } /** * Get the value of url */ public function getUrl() { return $this->url; } /** * Set the value of url */ public function setUrl($url) { $this->url = $url; return $this->url; } /** * Get the value of fk_id_funcionario */ public function getFkIdFuncionario() { return $this->fk_id_funcionario; } /** * Set the value of fk_id_funcionario */ public function setFkIdFuncionario($fk_id_funcionario) { $this->fk_id_funcionario = $fk_id_funcionario; return $this->fk_id_funcionario; } /** * Get the value of file_temp */ public function getFileTemp() { return $this->file_temp; } /** * Set the value of file_temp */ public function setFileTemp($file_temp) { $this->file_temp = $file_temp; return $this->file_temp; } /** * Get the value of file_index */ public function getFileIndex() { return $this->file_index; } /** * Set the value of file_index */ public function setFileIndex($file_index) { $this->file_index = $file_index; return $this->file_index; } public function arrayToFoto($array){ $this->id_foto_funcionario = isset($array['id_foto_funcionario']) ? $this->setIdFotoFuncionario($array['id_foto_funcionario']) : NULL; $this->nome_foto = isset($array['nome_foto']) ? $this->setNomeFoto($array['nome_foto']) : NULL; $this->url = isset($array['url']) ? $this->setUrl($array['url']) : NULL; $this->fk_id_funcionario = isset($array['fk_id_funcionario']) ? $this->setFkIdFuncionario($array['fk_id_funcionario']) : NULL; $this->file_temp = isset($array['file_temp']) ? $this->setFileTemp($array['file_temp']) : NULL; $this->file_index = isset($array['file_index']) ? $this->setFileIndex($array['file_index']) : NULL; $this->hash = isset($array['hash']) ? $this->setFileIndex($array['hash']) : NULL; } /** * Get the value of hash */ public function getHash() { return $this->hash; } /** * Set the value of hash */ public function setHash($hash): self { $this->hash = $hash; return $this; } } namespace FotoDao; use Foto\Foto; use PDO; class FotoDao { public $con; function __construct($con) { $this->con = $con; } public function listAllByFuncionario($id) { $fotos = null; $query = $this->con->prepare("SELECT * FROM pe_fotos_funcionario WHERE fk_id_funcionario = ?"); $query->execute(array($id)); foreach ($query->fetchAll() as $c) { $fotos[] = new Foto(); $fotos[count($fotos) - 1]->arrayToFoto($c); } return $query->rowCount() > 0 ? $fotos : false; } public function listAll($id) { $fotos = null; $query = $this->con->prepare("SELECT * FROM pe_fotos_funcionario WHERE id_foto_funcionario =?"); $query->execute(array($id)); foreach ($query->fetchAll() as $c) { $fotos[] = new Foto(); $fotos[count($fotos) - 1]->arrayToFoto($c); } return $query->rowCount() > 0 ? $fotos : false; } public function listAllByAdm($id_administrador) { $fotos = null; $query = $this->con->prepare("SELECT pe_fotos_funcionario.*, pe_funcionario.fk_id_administrador FROM pe_fotos_funcionario left join pe_funcionario on pe_funcionario.id_funcionario=pe_fotos_funcionario.fk_id_funcionario WHERE pe_funcionario.fk_id_administrador=?"); $query->execute(array($id_administrador)); foreach ($query->fetchAll() as $c) { $fotos[] = new Foto(); $fotos[count($fotos) - 1]->arrayToFoto($c); } return $query->rowCount() > 0 ? $fotos : false; } public function list($id, $index){ $query = $this->con->prepare("SELECT ff.* FROM pe_fotos_funcionario as ff INNER JOIN pe_funcionario as f ON f.id_funcionario = ff.fk_id_funcionario WHERE ff.fk_id_funcionario = ? AND ff.file_index = ?"); $query->execute(array($id, $index)); $fotos = new Foto(); $fotos->arrayToFoto($query->fetch()); return $query->rowCount() > 0 ? $fotos : 0; } public function insert($foto){ $query = $this->con->prepare("INSERT INTO pe_fotos_funcionario (nome_foto, url, fk_id_funcionario, file_temp, file_index) VALUES (?, ?, ?, ?, ?)"); $query->execute(array($foto->getNomeFoto(), $foto->getUrl(), $foto->getFkIdFuncionario(), $foto->getFileTemp(), $foto->getFileIndex())); return $query->rowCount(); } public function delete($data) { $query = $this->con->prepare("DELETE FROM pe_fotos_funcionario WHERE file_temp = ?"); $query->execute($data); return $query->rowCount(); } public function deleteByName($name) { $query = $this->con->prepare("DELETE FROM pe_fotos_funcionario WHERE nome_foto = ? "); $query->execute(array($name)); return $query->rowCount(); } public function update($data) { $query = $this->con->prepare("UPDATE pe_fotos_funcionario SET nome_foto = :nome_foto, file_temp = :file_temp WHERE fk_id_funcionario = :fk_id_funcionario AND file_index = :file_index"); $query->execute($data); return $query->rowCount(); } } namespace GestorGeralDao; use GestorGeral\GestorGeral; class GestorGeralDao { public $con; function __construct($con){ $this->con = $con; } public function listDataTable(){ $query = $this->con->prepare("SELECT * FROM pe_gestor_geral as g INNER JOIN pe_gestor_geral_administrador as ga ON ga.fk_id_gestor_geral = g.id_gestor_geral WHERE ga.fk_id_administrador = ?"); $query->execute(array(ADM_ID)); foreach ($query->fetchAll() as $c) { $gestor[] = new GestorGeral(); $gestor[count($gestor) - 1]->arrayToGestor($c); } return $query->rowCount() ? $gestor : array(); } public function listGestor(){ $query = $this->con->prepare("SELECT * FROM pe_gestor_geral as g INNER JOIN pe_gestor_geral_administrador as ga ON ga.fk_id_gestor_geral = g.id_gestor_geral WHERE ga.fk_id_administrador = ?"); $query->execute(array(ADM_ID)); $gestor = new GestorGeral(); $gestor->arrayToGestor($query->fetch()); return $gestor; } public function listGestorAdmin($id_gestor){ $query = $this->con->prepare("SELECT a.*, l.foto FROM pe_gestor_geral as g INNER JOIN pe_gestor_geral_administrador as ga ON ga.fk_id_gestor_geral = g.id_gestor_geral INNER JOIN pe_administrador as a ON a.id_administrador = ga.fk_id_administrador INNER JOIN pe_login as l ON a.fk_id_login = l.id_login WHERE g.id_gestor_geral = ?"); $query->execute(array($id_gestor)); foreach ($query->fetchAll() as $c) { $gestor[] = new GestorGeral(); $gestor[count($gestor) - 1]->arrayToGestor($c); } return $query->rowCount() ? $gestor : array(); } public function listClass($id_gestor){ $query = $this->con->prepare("SELECT a.*,g.*, l.foto FROM pe_gestor_geral as g INNER JOIN pe_gestor_geral_administrador as ga ON ga.fk_id_gestor_geral = g.id_gestor_geral INNER JOIN pe_administrador as a ON a.id_administrador = ga.fk_id_administrador INNER JOIN pe_login as l ON a.fk_id_login = l.id_login WHERE a.id_administrador =? AND g.id_gestor_geral = ?"); $query->execute(array(ADM_ID, $id_gestor)); $gestor = new GestorGeral(); $gestor->arrayToGestor($query->fetch()); return $gestor; } public function update($gestor){ $query = $this->con->prepare("UPDATE pe_gestor_geral SET nome = ?, cargo = ? WHERE id_gestor_geral = ?"); $query->execute(array($gestor->getNome(), $gestor->getCargo(), $gestor->getIdGestorGeral())); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function insert($gestor){ $query = $this->con->prepare("INSERT INTO pe_gestor_geral (nome,cargo,fk_id_login) VALUES(?,?,?)"); $query->execute(array($gestor->getNome(), $gestor->getCargo(), $gestor->getFkIdLogin())); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function insertReturnId($gestor){ $query = $this->con->prepare("INSERT INTO pe_gestor_geral (nome,cargo,fk_id_login) VALUES(?,?,?)"); $query->execute(array($gestor->getNome(), $gestor->getCargo(), $gestor->getFkIdLogin())); return $query->rowCount() > 0 ? $this->con->lastInsertId() : $query->errorInfo(); } public function insertHas($gestor){ $query = $this->con->prepare("INSERT INTO pe_gestor_geral_administrador (fk_id_gestor_geral,fk_id_administrador) VALUES(?,?)"); $query->execute(array($gestor->getFkIdGestorGeral(), $gestor->getFkIdAdministrador())); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function listEmpresasByLogin($id_login){ $query = $this->con->prepare( "SELECT a.id_administrador, a.nome, a.cnpj, a.razao_social, a.fk_id_plano, a.dia_fechamento FROM pe_gestor_geral g INNER JOIN pe_gestor_geral_administrador ga ON ga.fk_id_gestor_geral = g.id_gestor_geral INNER JOIN pe_administrador a ON a.id_administrador = ga.fk_id_administrador WHERE g.fk_id_login = ? ORDER BY a.nome" ); $query->execute(array($id_login)); return $query->rowCount() > 0 ? $query->fetchAll() : array(); } } namespace HoraAcumulada; class HoraAcumulada { private $id_hora_acumulada; private $fk_id_funcionario; private $horas; private $fk_id_administrador; private $data; private $comentario; private $mes; private $ano; private $mes_fechado; private $tipo_lancamento; function __construct() { $this->id_hora_acumulada = null; $this->fk_id_funcionario = null; $this->horas = null; $this->fk_id_administrador = null; $this->data = null; $this->comentario = null; $this->mes = null; $this->ano = null; $this->mes_fechado = null; $this->tipo_lancamento = 'manual'; } public function arrayToHoraAcumulada($array){ $this->id_hora_acumulada = isset($array['id_hora_acumulada']) ? $this->setIdHoraAcumulada($array['id_hora_acumulada']) : NULL; $this->fk_id_funcionario = isset($array['fk_id_funcionario']) ? $this->setFkIdFuncionario($array['fk_id_funcionario']) : NULL; $this->horas = isset($array['horas']) ? $this->setHoras($array['horas']) : NULL; $this->fk_id_administrador = isset($array['fk_id_administrador']) ? $this->setFkIdAdministrador($array['fk_id_administrador']) : NULL; $this->data = isset($array['data']) ? $this->setData($array['data']) : NULL; $this->comentario = isset($array['comentario']) ? $this->setComentario($array['comentario']) : NULL; $this->mes = isset($array['mes']) ? $this->setMes($array['mes']) : NULL; $this->ano = isset($array['ano']) ? $this->setAno($array['ano']) : NULL; $this->mes_fechado = isset($array['mes_fechado']) ? $this->setMesFechado($array['mes_fechado']) : NULL; $this->tipo_lancamento = isset($array['tipo_lancamento']) ? $this->setTipoLancamento($array['tipo_lancamento']) : 'manual'; } /** * Get the value of id_hora_acumulada */ public function getIdHoraAcumulada() { return $this->id_hora_acumulada; } /** * Set the value of id_hora_acumulada */ public function setIdHoraAcumulada($id_hora_acumulada) { $this->id_hora_acumulada = $id_hora_acumulada; return $this->id_hora_acumulada; } /** * Get the value of fk_id_funcionario */ public function getFkIdFuncionario() { return $this->fk_id_funcionario; } /** * Set the value of fk_id_funcionario */ public function setFkIdFuncionario($fk_id_funcionario) { $this->fk_id_funcionario = $fk_id_funcionario; return $this->fk_id_funcionario; } /** * Get the value of horas */ public function getHoras() { return $this->horas; } /** * Set the value of horas */ public function setHoras($horas) { $this->horas = $horas; return $this->horas; } /** * Get the value of fk_id_administrador */ public function getFkIdAdministrador() { return $this->fk_id_administrador; } /** * Set the value of fk_id_administrador */ public function setFkIdAdministrador($fk_id_administrador) { $this->fk_id_administrador = $fk_id_administrador; return $this->fk_id_administrador; } /** * Get the value of data */ public function getData() { return $this->data; } /** * Set the value of data */ public function setData($data) { $this->data = $data; return $this->data; } /** * Get the value of comentario */ public function getComentario() { return $this->comentario; } /** * Set the value of comentario */ public function setComentario($comentario) { $this->comentario = $comentario; return $this->comentario; } /** * Get the value of mes */ public function getMes() { return $this->mes; } /** * Set the value of mes */ public function setMes($mes) { $this->mes = $mes; return $this->mes; } /** * Get the value of ano */ public function getAno() { return $this->ano; } /** * Set the value of ano */ public function setAno($ano) { $this->ano = $ano; return $this->ano; } /** * Get the value of mes_fechado */ public function getMesFechado() { return $this->mes_fechado; } /** * Set the value of mes_fechado */ public function setMesFechado($mes_fechado): self { $this->mes_fechado = $mes_fechado; return $this; } public function getTipoLancamento() { return $this->tipo_lancamento; } public function setTipoLancamento($tipo_lancamento) { $this->tipo_lancamento = $tipo_lancamento; return $this->tipo_lancamento; } } namespace HoraAcumuladaDao; use HoraAcumulada\HoraAcumulada; use RegraCalculoDao\RegraCalculoDao; class HoraAcumuladaDao { public $con; function __construct($con) { $this->con = $con; } public function horasToSegundos($horas) { if ($horas === null || $horas === '') { return 0; } $horas = trim((string) $horas); $neg = (strpos($horas, '-') === 0); $horas = ltrim($horas, '-+'); $parts = explode(':', $horas); $h = isset($parts[0]) ? intval($parts[0]) : 0; $m = isset($parts[1]) ? intval($parts[1]) : 0; $s = isset($parts[2]) ? intval($parts[2]) : 0; $total = ($h * 3600) + ($m * 60) + $s; return $neg ? -$total : $total; } public function segundosToHoras($segundos) { $segundos = intval($segundos); $neg = $segundos < 0; $segundos = abs($segundos); $h = floor($segundos / 3600); $m = floor(($segundos % 3600) / 60); return ($neg ? '-' : '') . sprintf('%02d:%02d', $h, $m); } public function listAll() { $horas = null; $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaHoras = $this->con->prepare("SELECT * FROM pe_hora_acumulada WHERE fk_id_administrador IN ($placeholders)"); $consultaHoras->execute($admIds); foreach ($consultaHoras->fetchAll() as $c) { $horas[] = new HoraAcumulada(); $horas[count($horas) - 1]->arrayToHoraAcumulada($c); } return ($horas != null) ? $horas : null; } public function listDataTable(){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaHoras = $this->con->prepare("SELECT h.id_hora_acumulada, f.nome, h.data, h.horas, h.comentario, h.mes, h.ano, h.tipo_lancamento FROM pe_hora_acumulada as h INNER JOIN pe_funcionario as f ON f.id_funcionario = h.fk_id_funcionario WHERE h.fk_id_administrador IN ($placeholders) ORDER BY h.id_hora_acumulada DESC"); $consultaHoras->execute($admIds); return $consultaHoras->fetchAll(); } /** * Saldo por funcionário com vencimento pela regra vigente (crédito positivo mais antigo ainda no saldo). */ public function listDataTableSaldo(){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaHoras = $this->con->prepare("SELECT h.id_hora_acumulada, h.fk_id_funcionario, h.horas, h.mes, h.ano, h.data, f.id_funcionario, f.nome FROM pe_hora_acumulada AS h INNER JOIN pe_funcionario AS f ON f.id_funcionario = h.fk_id_funcionario WHERE h.fk_id_administrador IN ($placeholders) AND h.ano < 2100 AND f.status = 1 ORDER BY h.ano ASC, h.mes ASC, h.id_hora_acumulada ASC"); $consultaHoras->execute($admIds); $rows = $consultaHoras->fetchAll(\PDO::FETCH_ASSOC); $byFunc = array(); foreach ($rows as $r) { $fid = intval($r['id_funcionario']); if (!isset($byFunc[$fid])) { $byFunc[$fid] = array( 'id_funcionario' => $fid, 'nome' => $r['nome'], 'lancamentos' => array() ); } $byFunc[$fid]['lancamentos'][] = $r; } $regraDao = new RegraCalculoDao($this->con); $hoje = date('Y-m-d'); $result = array(); foreach ($byFunc as $fid => $data) { $saldoSeg = 0; $credits = array(); foreach ($data['lancamentos'] as $l) { $seg = $this->horasToSegundos($l['horas']); $saldoSeg += $seg; $mesRef = intval($l['mes']); $anoRef = intval($l['ano']); if ($mesRef <= 0 || $anoRef <= 0) { $ts = strtotime($l['data']); $mesRef = intval(date('n', $ts)); $anoRef = intval(date('Y', $ts)); } if ($seg > 0) { $credits[] = array('seg' => $seg, 'mes' => $mesRef, 'ano' => $anoRef); } elseif ($seg < 0) { $remain = abs($seg); while ($remain > 0 && count($credits) > 0) { if ($credits[0]['seg'] <= $remain) { $remain -= $credits[0]['seg']; array_shift($credits); } else { $credits[0]['seg'] -= $remain; $remain = 0; } } } } $regra = $regraDao->obterRegraVigente($fid, $hoje); $validade = 18; if ($regra !== null) { $v = $regra->getBancoHorasValidadeMeses(); $validade = ($v === null || $v === '') ? 0 : intval($v); } $dataLabel = 'Sem expiração'; $vencido = 0; $oldest = (!empty($credits) && $saldoSeg > 0) ? $credits[0] : null; if ($validade > 0 && $oldest) { $base = new \DateTime(sprintf('%04d-%02d-01', $oldest['ano'], $oldest['mes'])); $base->modify('+' . $validade . ' months'); $base->modify('last day of this month'); $dataLabel = $base->format('d/m/Y'); $vencido = ($hoje > $base->format('Y-m-d')) ? 1 : 0; } $result[] = array( 'id_hora_acumulada' => isset($data['lancamentos'][0]['id_hora_acumulada']) ? $data['lancamentos'][0]['id_hora_acumulada'] : 0, 'id_funcionario' => $fid, 'nome' => $data['nome'], 'horas' => $this->segundosToHoras($saldoSeg), 'data' => $dataLabel, 'vencido' => $vencido, 'saldo_segundos' => $saldoSeg, 'validade_meses' => $validade ); } return $result; } public function getSaldoSegundos($idFuncionario) { $consultaHoras = $this->con->prepare( "SELECT horas FROM pe_hora_acumulada WHERE fk_id_funcionario = ? AND ano < 2100" ); $consultaHoras->execute(array($idFuncionario)); $saldo = 0; foreach ($consultaHoras->fetchAll(\PDO::FETCH_ASSOC) as $row) { $saldo += $this->horasToSegundos($row['horas']); } return $saldo; } /** * Info de saldo/vencimento para um funcionário (sem varrer todos). */ public function obterInfoSaldo($idFuncionario) { $consultaHoras = $this->con->prepare("SELECT h.id_hora_acumulada, h.horas, h.mes, h.ano, h.data, f.nome, f.id_funcionario FROM pe_hora_acumulada AS h INNER JOIN pe_funcionario AS f ON f.id_funcionario = h.fk_id_funcionario WHERE h.fk_id_funcionario = ? AND h.ano < 2100 ORDER BY h.ano ASC, h.mes ASC, h.id_hora_acumulada ASC"); $consultaHoras->execute(array($idFuncionario)); $lancamentos = $consultaHoras->fetchAll(\PDO::FETCH_ASSOC); $saldoSeg = 0; $credits = array(); $nome = ''; foreach ($lancamentos as $l) { $nome = $l['nome']; $seg = $this->horasToSegundos($l['horas']); $saldoSeg += $seg; $mesRef = intval($l['mes']); $anoRef = intval($l['ano']); if ($mesRef <= 0 || $anoRef <= 0) { $ts = strtotime($l['data']); $mesRef = intval(date('n', $ts)); $anoRef = intval(date('Y', $ts)); } if ($seg > 0) { $credits[] = array('seg' => $seg, 'mes' => $mesRef, 'ano' => $anoRef); } elseif ($seg < 0) { $remain = abs($seg); while ($remain > 0 && count($credits) > 0) { if ($credits[0]['seg'] <= $remain) { $remain -= $credits[0]['seg']; array_shift($credits); } else { $credits[0]['seg'] -= $remain; $remain = 0; } } } } $regraDao = new RegraCalculoDao($this->con); $hoje = date('Y-m-d'); $regra = $regraDao->obterRegraVigente($idFuncionario, $hoje); $validade = 18; if ($regra !== null) { $v = $regra->getBancoHorasValidadeMeses(); $validade = ($v === null || $v === '') ? 0 : intval($v); } $dataLabel = 'Sem expiração'; $vencido = 0; $dataYmd = null; $oldest = (!empty($credits) && $saldoSeg > 0) ? $credits[0] : null; if ($validade > 0 && $oldest) { $base = new \DateTime(sprintf('%04d-%02d-01', $oldest['ano'], $oldest['mes'])); $base->modify('+' . $validade . ' months'); $base->modify('last day of this month'); $dataLabel = $base->format('d/m/Y'); $dataYmd = $base->format('Y-m-d'); $vencido = ($hoje > $dataYmd) ? 1 : 0; } return array( 'id_funcionario' => intval($idFuncionario), 'nome' => $nome, 'horas' => $this->segundosToHoras($saldoSeg), 'data' => $dataLabel, 'data_ymd' => $dataYmd, 'vencido' => $vencido, 'saldo_segundos' => $saldoSeg, 'validade_meses' => $validade ); } public function getDataVencimento($idFuncionario) { $info = $this->obterInfoSaldo($idFuncionario); return $info['data_ymd']; } public function isVencido($idFuncionario) { $info = $this->obterInfoSaldo($idFuncionario); return !empty($info['vencido']); } public function inserirCompensacao($idFuncionario, $horasInversas, $comentario, $tipoLancamento) { $hora = new HoraAcumulada(); $hora->setFkIdFuncionario($idFuncionario); $hora->setHoras($horasInversas); $hora->setFkIdAdministrador(ADM_ID); $hora->setData(date('Y-m-d H:i:s')); $hora->setComentario($comentario); $hora->setMes(intval(date('n'))); $hora->setAno(intval(date('Y'))); $hora->setTipoLancamento($tipoLancamento); return $this->insert($hora); } public function insert($horaAcumulada){ $tipo = $horaAcumulada->getTipoLancamento() ?: 'manual'; $insertHoras = $this->con->prepare("INSERT INTO pe_hora_acumulada(fk_id_funcionario,horas,fk_id_administrador,data,comentario,mes,ano,tipo_lancamento) VALUES(?,?,?,?,?,?,?,?)"); $insertHoras->execute(array( $horaAcumulada->getFkIdFuncionario(), $horaAcumulada->getHoras(), $horaAcumulada->getFkIdAdministrador(), $horaAcumulada->getData(), $horaAcumulada->getComentario(), $horaAcumulada->getMes(), $horaAcumulada->getAno(), $tipo )); return $insertHoras->rowCount() > 0 ? true : $insertHoras->errorInfo(); } public function delete($array){ $deleteHoras = $this->con->prepare("DELETE FROM pe_hora_acumulada WHERE fk_id_administrador=:fk_id_administrador AND id_hora_acumulada=:id_hora_acumulada"); $deleteHoras->execute($array); return $deleteHoras->rowCount() > 0 ? true : $deleteHoras->errorInfo(); } public function list($id){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaHoras = $this->con->prepare("SELECT h.* FROM pe_hora_acumulada as h INNER JOIN pe_funcionario as f ON f.id_funcionario = h.fk_id_funcionario WHERE h.id_hora_acumulada=? AND h.fk_id_administrador IN ($placeholders)"); $consultaHoras->execute(array_merge(array($id), $admIds)); $horas = new HoraAcumulada(); $horas->arrayToHoraAcumulada($consultaHoras->fetch()); return $horas; } public function listByFuncionario($id) { $horas =null; $consultaHoras = $this->con->prepare("SELECT * FROM pe_hora_acumulada WHERE fk_id_funcionario=?"); $consultaHoras->execute(array($id)); foreach ($consultaHoras->fetchAll() as $c) { $horas[] = new HoraAcumulada(); $horas[count($horas) - 1]->arrayToHoraAcumulada($c); } return ($horas != null) ? $horas : null; } public function getTotal($id) { $seg = $this->getSaldoSegundos($id); return $this->segundosToHoras($seg); } } namespace Horarios; class Horarios{ private $hora; private $tipo; function __construct($array) { $this->tipo = $array['tipo']; $this->hora = $array['hora']; } /** * Get the value of hora */ public function getHora() { return $this->hora; } /** * Set the value of hora * * @return self */ public function setHora($hora) { $this->hora = $hora; return $this->hora; } /** * Get the value of tipo */ public function getTipo() { return $this->tipo; } /** * Set the value of tipo * * @return self */ public function setTipo($tipo) { $this->tipo = $tipo; return $this->tipo; } } namespace HistoricoJornada; class HistoricoJornada { private $id_historico_jornada; private $fk_id_funcionario; private $fk_id_jornada; private $data_inicio; private $data_fim; private $ativo; private $jornadaTrabalho; private $valido; function __construct() { $this->id_historico_jornada = null; $this->fk_id_funcionario = null; $this->fk_id_jornada = null; $this->data_inicio = null; $this->data_fim = null; $this->ativo = null; $this->jornadaTrabalho = null; $this->valido = null; } /** * Get the value of id_historico_jornada */ public function getIdHistoricoJornada() { return $this->id_historico_jornada; } /** * Set the value of id_historico_jornada */ public function setIdHistoricoJornada($id_historico_jornada) { $this->id_historico_jornada = $id_historico_jornada; return $this->id_historico_jornada; } /** * Get the value of fk_id_funcionario */ public function getFkIdFuncionario() { return $this->fk_id_funcionario; } /** * Set the value of fk_id_funcionario */ public function setFkIdFuncionario($fk_id_funcionario) { $this->fk_id_funcionario = $fk_id_funcionario; return $this->fk_id_funcionario; } /** * Get the value of fk_id_jornada */ public function getFkIdJornada() { return $this->fk_id_jornada; } /** * Set the value of fk_id_jornada */ public function setFkIdJornada($fk_id_jornada) { $this->fk_id_jornada = $fk_id_jornada; return $this->fk_id_jornada; } /** * Get the value of data_inicio */ public function getDataInicio() { return $this->data_inicio; } /** * Set the value of data_inicio */ public function setDataInicio($data_inicio) { $this->data_inicio = $data_inicio; return $this->data_inicio; } /** * Get the value of data_fim */ public function getDataFim() { return $this->data_fim; } /** * Set the value of data_fim */ public function setDataFim($data_fim) { $this->data_fim = $data_fim; return $this->data_fim; } /** * Get the value of ativo */ public function getAtivo() { return $this->ativo; } /** * Set the value of ativo */ public function setAtivo($ativo) { $this->ativo = $ativo; return $this->ativo; } /** * Get the value of jornadaTrabalho */ public function getJornadaTrabalho() { return $this->jornadaTrabalho; } /** * Set the value of jornadaTrabalho */ public function setJornadaTrabalho($jornadaTrabalho) { $this->jornadaTrabalho = $jornadaTrabalho; return $this->jornadaTrabalho; } /** * Get the value of valido */ public function getValido() { return $this->valido; } /** * Set the value of valido */ public function setValido($valido) { $this->valido = $valido; return $this->valido; } public function arrayToHistorico($array){ $this->id_historico_jornada = isset($array['id_historico_jornada']) ? $this->setIdHistoricoJornada($array['id_historico_jornada']) : NULL; $this->fk_id_funcionario = isset($array['fk_id_funcionario']) ? $this->setFkIdFuncionario($array['fk_id_funcionario']) : NULL; $this->fk_id_jornada = isset($array['fk_id_jornada']) ? $this->setFkIdJornada($array['fk_id_jornada']) : NULL; $this->data_inicio = isset($array['data_inicio']) ? $this->setDataInicio($array['data_inicio']) : NULL; $this->data_fim = isset($array['data_fim']) ? $this->setDataFim($array['data_fim']) : NULL; $this->ativo = isset($array['ativo']) ? $this->setAtivo($array['ativo']) : NULL; $this->jornadaTrabalho = isset($array['jornadaTrabalho']) ? $this->setJornadaTrabalho($array['jornadaTrabalho']) : NULL; $this->valido = isset($array['valido']) ? $this->setValido($array['valido']) : NULL; } } namespace HistoricoJornadaDao; use HistoricoJornada\HistoricoJornada; class HistoricoJornadaDao { public $con; private $jornada; private $historico; public function __construct($con) { $this->con = $con; } public function listAll($fk_id_funcionario) { $consultaHoras = $this->con->prepare("SELECT * FROM pe_historico_jornada WHERE fk_id_funcionario=?"); $consultaHoras->execute(array($fk_id_funcionario)); $historico=[]; foreach ($consultaHoras->fetchAll() as $c) { $historico[] = new HistoricoJornada(); $historico[count($historico) - 1]->arrayToHistorico($c); } return $historico; } public function insert($historicojornada){ $insertLocal = $this->con->prepare("INSERT INTO pe_historico_jornada(fk_id_funcionario, data_inicio, data_fim, ativo, fk_id_jornada) VALUES(?, ?, ?, ?, ?)"); $insertLocal->execute(array($historicojornada->getFkIdFuncionario(), $historicojornada->getDataInicio(), $historicojornada->getDataFim(), $historicojornada->getAtivo(), $historicojornada->getFkIdJornada())); return ($insertLocal->rowCount() > 0) ? true : $insertLocal->errorInfo(); } public function update($historicojornada){ $insertLocal = $this->con->prepare("UPDATE pe_historico_jornada SET fk_id_funcionario=?, data_inicio=?, data_fim=?, ativo=?, fk_id_jornada=? WHERE id_historico_jornada=?"); $insertLocal->execute(array($historicojornada->getFkIdFuncionario(), $historicojornada->getDataInicio(), $historicojornada->getDataFim(), $historicojornada->getAtivo(), $historicojornada->getFkIdJornada(),$historicojornada->getIdHistoricoJornada())); return ($insertLocal->rowCount() > 0) ? true : $insertLocal->errorInfo(); } public function delete($historicojornada){ $insertLocal = $this->con->prepare("DELETE FROM pe_historico_jornada WHERE id_historico_jornada=?"); $insertLocal->execute(array($historicojornada->getIdHistoricoJornada())); return ($insertLocal->rowCount() > 0) ? true : $insertLocal->errorInfo(); } public function listJornadaByFuncionarioData($funcionario, $data) { $horas = null; $consultaHoras = $this->con->prepare("SELECT *, TIMESTAMPDIFF(DAY,data_inicio,:data) as dias, TIMESTAMPDIFF(DAY,data_inicio,:data)/:semana as semanas , TIMESTAMPDIFF(DAY,data_inicio,:data)%:semana as resto_semanas FROM pe_historico_jornada WHERE fk_id_funcionario=:fk_id_funcionario AND :data >= data_inicio AND :data <= data_fim ORDER BY data_inicio DESC"); $consultaHoras->execute(array(":data" => $data, ":fk_id_funcionario" => $funcionario->getIdFuncionario(), ":semana" => 7)); $cont = $consultaHoras->rowCount(); if ($cont == 0) return $funcionario->getFkIdJornada(); $consultaHoras2 = $this->con->prepare("SELECT *, TIMESTAMPDIFF(DAY,data_inicio,:data) as dias, TIMESTAMPDIFF(DAY,data_inicio,:data)/:semana as semanas , TIMESTAMPDIFF(DAY,data_inicio,:data)%:semana as resto_semanas,TIMESTAMPDIFF(DAY,data_inicio,:data)/:semana/:jornadas as indice,TIMESTAMPDIFF(DAY,data_inicio,:data)/:semana%:jornadas as resto_indice FROM pe_historico_jornada WHERE fk_id_funcionario=:fk_id_funcionario AND :data >= data_inicio AND :data <= data_fim ORDER BY data_inicio DESC"); $consultaHoras2->execute(array(":data" => $data, ":fk_id_funcionario" => $funcionario->getIdFuncionario(), ":semana" => 7, ":jornadas" => $cont)); $resultado = $consultaHoras2->fetchAll(); $indice = intval($resultado[0]['resto_indice']); return $resultado[$indice]['fk_id_jornada']; } } namespace IntervaloHorarios; use Horarios\Horarios; class IntervaloHorarios { private $horarios = []; function getHora($index) { if (($this->horarios) > 0) return $this->horarios[$index]; else return null; } function getCarga() { $cont = 0; $i = 0; $hours = []; while ($cont < count($this->horarios)) { if (isset($this->horarios[$i])) { $hours[] = $this->horarios[$i]; $cont++; } $i++; } $cont = 0; $hh = []; $i = 0; while ($i <= count($hours)) { if ($i % 2 != 0) { if (count($hours) > $cont){ $hh[] = diferencaHoras($hours[$cont]->getHora(), $hours[$cont - 1]->getHora()); } else { $hh[] = diferencaHoras($hours[$cont-1]->getHora(), $hours[$cont-1]->getHora()); } } $i++; $cont++; } return AddPlayTime($hh); } function getHoraCumprida() { $i = 0; while ($i < count($this->horarios)) { //remove os horarios iguais if (isset($this->horarios[$i]) && isset($this->horarios[$i + 1])) if ($i + 1 <= count($this->horarios) && $this->horarios[$i]->getHora() == $this->horarios[$i + 1]->getHora()) { "REMOVENDO" . $this->horarios[$i + 1]->getHora(); //unset($this->horarios[$i + 1]); } $i++; } $i = 0; foreach ($this->horarios as $horario) { //verifica se nao foi excluido if (isset($this->horarios[$i])) //verifica se começa com 0 if ($this->horarios[$i]->getTipo() == 0 && $i == 0) { //remove "REMOVENDO " . $this->horarios[$i]->getHora(); unset($this->horarios[$i]); $i++; while ($i < count($this->horarios)) { if (isset($this->horarios[$i])) { if ($this->horarios[$i]->getTipo() == 0) break; "REMOVENDO " . $this->horarios[$i]->getHora(); unset($this->horarios[$i]); "PAI"; } $i++; } break; } else if ($this->horarios[$i]->getTipo() == 0 && $i > 0 && $i < count($this->horarios)) { $i++; if (isset($this->horarios[$i]) && $this->horarios[$i]->getTipo() != 0) while ($i < count($this->horarios)) { if (isset($this->horarios[$i]) && $this->horarios[$i]->getTipo() != 0) { if (($i - 1) % 2 == 0) { "REMOVENDO " . $this->horarios[$i - 1]->getHora(); unset($this->horarios[$i - 1]); } while ($i < count($this->horarios)) { if (isset($this->horarios[$i])) { if ($this->horarios[$i]->getTipo() == 0 && $i % 2 == 0) { break; } else if ($this->horarios[$i]->getTipo() == 0 && $i % 2 != 0) { "REMOVENDO " . $this->horarios[$i]->getHora(); unset($this->horarios[$i]); "PAI"; break; } else if ($this->horarios[$i]->getTipo() == 1) { "REMOVENDO " . $this->horarios[$i]->getHora(); unset($this->horarios[$i]); "PAI"; } } $i++; } } $i++; } break; } $i++; } } function addHora(Horarios $hora) { $aux = 0; $index = 0; $i = 0; $add = 0; if (count($this->horarios) == 0) { $add = 1; $this->horarios[$i] = $hora; } else foreach ($this->horarios as $horario) { if ($this->converteMinuto($hora->getHora()) <= $this->converteMinuto($horario->getHora())) { $add = 1; //recebe a posicao $index = $i; //guarda o min para a troca $aux = $this->horarios[$i]; $this->horarios[$i] = $hora; $hora = $aux; $i++; while ($i < count($this->horarios)) { $aux = $this->horarios[$i]; $this->horarios[$i] = $hora; $hora = $aux; $i++; } $this->horarios[$i] = $hora; break; } $i++; } if ($add == 0) { $this->horarios[$i] = $hora; } return $this->horarios; } function converteMinuto($dt1) { list($hora, $minuto) = explode(':', $dt1); //return em minutos return ($hora * 60) + ($minuto); } function get() { return $this->horarios; } } namespace Intervalo; use Horarios\Horarios; class Intervalo { private $horarios = []; function remove_time_interval($original_times, $times_to_remove) { $remove_start = strtotime($times_to_remove[0]); $remove_end = strtotime($times_to_remove[1]); for ($i = 0; $i < count($original_times); $i += 2) { $start = strtotime($original_times[$i]); $end = strtotime($original_times[$i + 1]); if ($start >= $remove_start && $end <= $remove_end) { continue; } elseif ($start < $remove_start && $end > $remove_end) { $this->horarios[] = $original_times[$i]; $this->horarios[] = date("H:i:s", $remove_start); $this->horarios[] = date("H:i:s", $remove_end); $this->horarios[] = $original_times[$i + 1]; } elseif ($start < $remove_start && $end > $remove_start && $end <= $remove_end) { $this->horarios[] = $original_times[$i]; $this->horarios[] = date("H:i:s", $remove_start); } elseif ($start >= $remove_start && $start < $remove_end && $end > $remove_end) { $this->horarios[] = date("H:i:s", $remove_end); $this->horarios[] = $original_times[$i + 1]; } else { $this->horarios[] = $original_times[$i]; $this->horarios[] = $original_times[$i + 1]; } } return $this->horarios; } function getHora($index) { if (($this->horarios) > 0) return $this->horarios[$index]; else return null; } function getCarga() { $cont = 0; $i = 0; $hours = []; while ($cont < count($this->horarios)) { if (isset($this->horarios[$i])) { $hours[] = $this->horarios[$i]; $cont++; } $i++; } $cont = 0; $hh = []; $i = 0; for ($i = 1; $i <= count($hours); $i += 2) { $hh[] = diferencaHorasHorasMinutosSegundos($hours[$i - 1], $hours[$i]); } return AddPlayTime($hh); } function getHoraCumprida() { $i = 0; while ($i < count($this->horarios)) { //remove os horarios iguais if (isset($this->horarios[$i]) && isset($this->horarios[$i + 1])) if ($i + 1 <= count($this->horarios) && $this->horarios[$i]->getHora() == $this->horarios[$i + 1]->getHora()) { "REMOVENDO" . $this->horarios[$i + 1]->getHora(); //unset($this->horarios[$i + 1]); } $i++; } $i = 0; foreach ($this->horarios as $horario) { //verifica se nao foi excluido if (isset($this->horarios[$i])) //verifica se começa com 0 if ($this->horarios[$i]->getTipo() == 0 && $i == 0) { //remove "REMOVENDO " . $this->horarios[$i]->getHora(); unset($this->horarios[$i]); $i++; while ($i < count($this->horarios)) { if (isset($this->horarios[$i])) { if ($this->horarios[$i]->getTipo() == 0) break; "REMOVENDO " . $this->horarios[$i]->getHora(); unset($this->horarios[$i]); "PAI"; } $i++; } break; } else if ($this->horarios[$i]->getTipo() == 0 && $i > 0 && $i < count($this->horarios)) { $i++; if (isset($this->horarios[$i]) && $this->horarios[$i]->getTipo() != 0) while ($i < count($this->horarios)) { if (isset($this->horarios[$i]) && $this->horarios[$i]->getTipo() != 0) { if (($i - 1) % 2 == 0) { "REMOVENDO " . $this->horarios[$i - 1]->getHora(); unset($this->horarios[$i - 1]); } while ($i < count($this->horarios)) { if (isset($this->horarios[$i])) { if ($this->horarios[$i]->getTipo() == 0 && $i % 2 == 0) { break; } else if ($this->horarios[$i]->getTipo() == 0 && $i % 2 != 0) { "REMOVENDO " . $this->horarios[$i]->getHora(); unset($this->horarios[$i]); "PAI"; break; } else if ($this->horarios[$i]->getTipo() == 1) { "REMOVENDO " . $this->horarios[$i]->getHora(); unset($this->horarios[$i]); "PAI"; } } $i++; } } $i++; } break; } $i++; } } function addHora(Horarios $hora) { $aux = 0; $index = 0; $i = 0; $add = 0; if (count($this->horarios) == 0) { $add = 1; $this->horarios[$i] = $hora; } else foreach ($this->horarios as $horario) { if ($this->converteMinuto($hora->getHora()) <= $this->converteMinuto($horario->getHora())) { $add = 1; //recebe a posicao $index = $i; //guarda o min para a troca $aux = $this->horarios[$i]; $this->horarios[$i] = $hora; $hora = $aux; $i++; while ($i < count($this->horarios)) { $aux = $this->horarios[$i]; $this->horarios[$i] = $hora; $hora = $aux; $i++; } $this->horarios[$i] = $hora; break; } $i++; } if ($add == 0) { $this->horarios[$i] = $hora; } return $this->horarios; } function converteMinuto($dt1) { list($hora, $minuto) = explode(':', $dt1); //return em minutos return ($hora * 60) + ($minuto); } function get() { return $this->horarios; } } namespace JornadaDao; use Jornada\Jornada; class JornadaDao { public $con; function __construct($con) { $this->con = $con; } public function listAll() { $login = null; $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaLogins = $this->con->prepare("SELECT * FROM pe_jornada WHERE fk_id_administrador IN ($placeholders) AND _delete <> 1"); $consultaLogins->execute($admIds); foreach ($consultaLogins->fetchAll() as $c) { $login[] = new Jornada(); $login[count($login) - 1]->arrayToJornada($c); } return ($login != null) ? $login : null; } public function listDataTable() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaLogins = $this->con->prepare("SELECT * FROM pe_jornada WHERE fk_id_administrador IN ($placeholders) AND _delete <> 1"); $consultaLogins->execute($admIds); return $consultaLogins->fetchAll(); } public function insert($jornada) { $insertLogins = $this->con->prepare("INSERT INTO pe_jornada(nome_jornada, periodo, esquema, pausa, dia_inicio, fk_id_administrador, tolerancia_registros, tolerancia_total, cruza_meia_noite, fk_id_tipo_hora_extra, fk_id_tipo_hora_banco, esquema_customizado, dias_ciclo) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $insertLogins->execute(array( $jornada->getNomeJornada(), $jornada->getPeriodo(), $jornada->getEsquema(), $jornada->getPausa(), $jornada->getDiaInicio(), $jornada->getFkIdAdministrador(), $jornada->getToleranciaRegistros(), $jornada->getToleranciaTotal(), $jornada->getCruzaMeiaNoite(), $jornada->getFkIdTipoHoraExtra() ?: null, $jornada->getFkIdTipoHoraBanco() ?: null, $jornada->getEsquemaCustomizado(), $jornada->getDiasCiclo() )); return $insertLogins->rowCount() > 0 ? $this->con->lastInsertId() : $insertLogins->errorInfo(); } public function delete($id) { $delete = $this->con->prepare("UPDATE pe_jornada SET _delete = 1 WHERE id_jornada_trabalho = ? AND fk_id_administrador = ?"); $delete->execute(array($id, ADM_ID)); return $delete->rowCount() > 0 ? true : $delete->errorInfo(); } public function update($jornada) { $stmt = $this->con->prepare("UPDATE pe_jornada SET nome_jornada = ?, tolerancia_registros = ?, tolerancia_total = ?, cruza_meia_noite = ?, fk_id_tipo_hora_extra = ?, fk_id_tipo_hora_banco = ?, esquema_customizado = ?, dias_ciclo = ? WHERE id_jornada_trabalho = ?"); $stmt->execute(array( $jornada->getNomeJornada(), $jornada->getToleranciaRegistros(), $jornada->getToleranciaTotal(), $jornada->getCruzaMeiaNoite(), $jornada->getFkIdTipoHoraExtra() ?: null, $jornada->getFkIdTipoHoraBanco() ?: null, $jornada->getEsquemaCustomizado(), $jornada->getDiasCiclo(), $jornada->getIdJornadaTrabalho() )); return $stmt->rowCount() >= 0 ? true : $stmt->errorInfo(); } public function list($id) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaLogins = $this->con->prepare("SELECT * FROM pe_jornada as j WHERE j.id_jornada_trabalho = ? AND j.fk_id_administrador IN ($placeholders)"); $consultaLogins->execute(array_merge(array($id), $admIds)); if ($consultaLogins->rowCount() > 0){ $jornada = new Jornada(); $jornada->arrayToJornada($consultaLogins->fetch()); return $jornada; } else{ return null; } } } namespace JornadaTrabalhoDao; use JornadaTrabalho\JornadaTrabalho; class JornadaTrabalhoDao { public $con; function __construct($con) { $this->con = $con; } public function listAll() { $jornada = null; $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaLogins = $this->con->prepare("SELECT * FROM pe_jornada_trabalho WHERE fk_id_administrador IN ($placeholders)"); $consultaLogins->execute($admIds); foreach ($consultaLogins->fetchAll() as $c) { $jornada[] = new JornadaTrabalho(); $jornada[count($jornada) - 1]->arrayToJornadaTrab($c); } return ($jornada != null) ? $jornada : null; } public function insert($jornadaTrab) { $query = $this->con->prepare("INSERT INTO pe_jornada_trabalho(fk_id_jornada_trabalho,dia,entrada,inicio_pausa,fim_pausa,saida,duracao_em_horas,fk_id_administrador) VALUES (?,?,?,?,?,?,?,?)"); $query->execute(array($jornadaTrab->getFkIdJornadaTrabalho(), $jornadaTrab->getDia(), $jornadaTrab->getEntrada(), $jornadaTrab->getInicioPausa(), $jornadaTrab->getFimPausa(), $jornadaTrab->getSaida(), $jornadaTrab->getDuracaoEmHoras(), $jornadaTrab->getFkIdAdministrador())); return $query->rowCount() > 0 ? true : $query->errorInfo(); } public function delete($id) { $delete = $this->con->prepare("DELETE FROM pe_jornada_trabalho WHERE fk_id_jornada_trabalho = ? AND fk_id_administrador = ?"); $delete->execute(array($id, ADM_ID)); return $delete->rowCount() > 0 ? true : $delete->errorInfo(); } public function update($jornadaTrab) { $query = $this->con->prepare("UPDATE pe_jornada_trabalho SET entrada = ?, inicio_pausa = ?, fim_pausa = ?, saida = ?, duracao_em_horas = ? WHERE fk_id_jornada_trabalho = ? AND dia = ? AND fk_id_administrador = ?"); $query->execute(array($jornadaTrab->getEntrada(), $jornadaTrab->getInicioPausa(), $jornadaTrab->getFimPausa(), $jornadaTrab->getSaida(), $jornadaTrab->getDuracaoEmHoras(), $jornadaTrab->getFkIdJornadaTrabalho(), $jornadaTrab->getDia(), $jornadaTrab->getFkIdJornadaTrabalho())); return $query->rowCount() == 1 ? true : $query->errorCode(); } public function list($id) { $jornada = null; $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaLogins = $this->con->prepare("SELECT * FROM pe_jornada_trabalho WHERE fk_id_jornada_trabalho=? AND fk_id_administrador IN ($placeholders) ORDER BY dia ASC"); $consultaLogins->execute(array_merge(array($id), $admIds)); foreach ($consultaLogins->fetchAll() as $c) { $jornada[] = new JornadaTrabalho(); $jornada[count($jornada) - 1]->arrayToJornadaTrab($c); } return ($consultaLogins->rowCount() > 0) ? $jornada : null; } public function listByDay($id, $day) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaLogins = $this->con->prepare("SELECT * FROM pe_jornada_trabalho WHERE fk_id_jornada_trabalho=? AND dia = ? AND fk_id_administrador IN ($placeholders)"); $consultaLogins->execute(array_merge(array($id, $day), $admIds)); $c = $consultaLogins->fetch(); $jornada = new JornadaTrabalho(); $jornada->arrayToJornadaTrab($c); return ($consultaLogins->rowCount() > 0) ? $jornada : null; } } namespace Login; class Login { private $id_login; private $email; private $senha; private $fk_id_tipo_usuario; private $foto; function __construct() { $this->id_login = null; $this->email = null; $this->senha = null; $this->fk_id_tipo_usuario = null; $this->foto = null; } /** * Get the value of id_login */ public function getIdLogin() { return $this->id_login; } /** * Set the value of id_login */ public function setIdLogin($id_login) { $this->id_login = $id_login; return $this->id_login; } /** * Get the value of email */ public function getEmail() { return $this->email; } /** * Set the value of email */ public function setEmail($email) { $this->email = $email; return $this->email; } /** * Get the value of senha */ public function getSenha() { return $this->senha; } /** * Set the value of senha */ public function setSenha($senha) { $this->senha = $senha; return $this->senha; } /** * Get the value of fk_id_tipo_usuario */ public function getFkIdTipoUsuario() { return $this->fk_id_tipo_usuario; } /** * Set the value of fk_id_tipo_usuario */ public function setFkIdTipoUsuario($fk_id_tipo_usuario) { $this->fk_id_tipo_usuario = $fk_id_tipo_usuario; return $this->fk_id_tipo_usuario; } /** * Get the value of foto */ public function getFoto() { return $this->foto; } /** * Set the value of foto */ public function setFoto($foto) { $this->foto = $foto; return $this->foto; } public function arrayToLogin($array){ $this->id_login = isset($array['id_login']) ? $this->setIdLogin($array['id_login']) : NULL; $this->email = isset($array['email']) ? $this->setEmail($array['email']) : NULL; $this->senha = isset($array['senha']) ? $this->setSenha($array['senha']) : NULL; $this->fk_id_tipo_usuario = isset($array['fk_id_tipo_usuario']) ? $this->setFkIdTipoUsuario($array['fk_id_tipo_usuario']) : NULL; $this->foto = isset($array['foto']) ? $this->setFoto($array['foto']) : NULL; } } namespace LoginDao; use Login\Login; class LoginDao { public $con; function __construct($con) { $this->con = $con; } public function listAll() { $login = null; $consultaLogins = $this->con->prepare("SELECT * FROM pe_login WHERE fk_id_administrador=?"); $consultaLogins->execute(array(ADM_ID)); foreach ($consultaLogins->fetchAll() as $c) { $login[] = new Login(); $login[count($login) - 1]->arrayToLogin($c); } return ($login != null) ? $login : null; } public function insert($login) { $insertLogins = $this->con->prepare("INSERT INTO pe_login(email,senha,fk_id_tipo_usuario,foto) VALUES (?, ?, ?, ?)"); $insertLogins->execute(array($login->getEmail(), $login->getSenha(), $login->getFkIdTipoUsuario(), $login->getFoto())); if ($insertLogins->rowCount() > 0) return true; else return false; } public function insertReturnId($login) { $insertLogins = $this->con->prepare("INSERT INTO pe_login(email,senha,fk_id_tipo_usuario,foto) VALUES (?, ?, ?, ?)"); $insertLogins->execute(array($login->getEmail(), $login->getSenha(), $login->getFkIdTipoUsuario(), $login->getFoto())); return $insertLogins->rowCount() > 0 ? $this->con->lastInsertId() : $insertLogins->errorInfo(); } public function updateSenha($id_login, $newpass, $oldpass) { $updateLogins = $this->con->prepare("UPDATE pe_login SET senha = ? WHERE id_login = ? AND senha = ?"); $updateLogins->execute(array($newpass, $id_login, $oldpass)); if ($updateLogins->rowCount() > 0) return true; else return false; } public function updateSenhaByEmail($login) { $updateLogins = $this->con->prepare("UPDATE pe_login SET senha = ? WHERE email = ?"); $updateLogins->execute(array($login->getSenha(), $login->getEmail())); if ($updateLogins->rowCount() > 0) return true; else return false; } public function list($id) { $consultaLogins = $this->con->prepare("SELECT * FROM pe_login WHERE id_login = ?"); $consultaLogins->execute(array($id)); if ($consultaLogins->rowCount() > 0){ $login = new Login(); $login->arrayToLogin($consultaLogins->fetch()); return $login; } else{ return false; } } public function listByEmail($email) { $consultaLogins = $this->con->prepare("SELECT * FROM pe_login WHERE email = ?"); $consultaLogins->execute(array($email)); $login = new Login(); $login->arrayToLogin($consultaLogins->fetch()); return $login; } public function listByEmailPassword($email, $password) { $consultaLogins = $this->con->prepare("SELECT * FROM pe_login WHERE email = ? AND senha = ?"); $consultaLogins->execute(array($email, crip($password))); $login = new Login(); $login->arrayToLogin($consultaLogins->fetch()); return $login; } public function countLogin() { return count($this->listAll()); } } namespace Notificacoes; class Notificacoes { private $id_notificacao; private $titulo; private $mensagem; private $data; private $fk_id_administrador; private $lida; private $link; function __construct() { $this->id_notificacao = null; $this->titulo = null; $this->mensagem = null; $this->data = null; $this->lida = null; $this->link = null; $this->fk_id_administrador = null; } public function getJson() { return [ 'id_notificacao' => $this->getIdNotificacao(), 'titulo' => $this->getTitulo(), 'mensagem' => $this->getMensagem(), 'data' => $this->getData(), 'lida' => $this->getLida(), 'link' => $this->getLink(), 'fk_id_administrador' => $this->getFkIdAdministrador(), ]; } /** * Get the value of id_notificacao */ public function getIdNotificacao() { return $this->id_notificacao; } /** * Set the value of id_notificacao * * @return self */ public function setIdNotificacao($id_notificacao) { $this->id_notificacao = $id_notificacao; return $this->id_notificacao; } /** * Get the value of titulo */ public function getTitulo() { return $this->titulo; } /** * Set the value of titulo * * @return self */ public function setTitulo($titulo) { $this->titulo = $titulo; return $this->titulo; } /** * Get the value of mensagem */ public function getMensagem() { return $this->mensagem; } /** * Set the value of mensagem * * @return self */ public function setMensagem($mensagem) { $this->mensagem = $mensagem; return $this->mensagem; } /** * Get the value of data */ public function getData() { return $this->data; } /** * Set the value of data * * @return self */ public function setData($data) { $this->data = $data; return $this->data; } /** * Get the value of lida */ public function getLida() { return $this->lida; } /** * Set the value of lida * * @return self */ public function setLida($lida) { $this->lida = $lida; return $this->lida; } /** * Get the value of fk_id_administrador */ public function getFkIdAdministrador() { return $this->fk_id_administrador; } /** * Set the value of fk_id_administrador * * @return self */ public function setFkIdAdministrador($fk_id_administrador) { $this->fk_id_administrador = $fk_id_administrador; return $this->fk_id_administrador; } /** * Get the value of link */ public function getLink() { return $this->link; } /** * Set the value of link * * @return self */ public function setLink($link) { $this->link = $link; return $this->link; } public function arrayToNotificacao($array){ $this->id_notificacao = isset($array['id_notificacao']) ? $this->setIdNotificacao($array['id_notificacao']) : NULL; $this->titulo = isset($array['titulo']) ? $this->setTitulo($array['titulo']) : NULL; $this->mensagem = isset($array['mensagem']) ? $this->setMensagem($array['mensagem']) : NULL; $this->data = isset($array['data']) ? $this->setData($array['data']) : NULL; $this->fk_id_administrador = isset($array['fk_id_administrador']) ? $this->setFkIdAdministrador($array['fk_id_administrador']) : NULL; $this->lida = isset($array['lida']) ? $this->setLida($array['lida']) : NULL; $this->link = isset($array['link']) ? $this->setLink($array['link']) : NULL; } } namespace NotificacoesDao; use Notificacoes\Notificacoes; class NotificacoesDao { public $con; function __construct($con) { $this->con = $con; } public function listAll() { $local = null; $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaLocais = $this->con->prepare("SELECT * FROM pe_notificacoes WHERE fk_id_administrador IN ($placeholders) ORDER BY data DESC"); $consultaLocais->execute($admIds); foreach ($consultaLocais->fetchAll() as $c) { $local[] = new Notificacoes(); $local[count($local) - 1]->arrayToNotificacao($c); } return ($local != null) ? $local : null; } public function listAllJson($limit = 10) { $local = null; $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaNotificacoes = $this->con->prepare("SELECT * FROM pe_notificacoes WHERE fk_id_administrador IN ($placeholders) ORDER BY data DESC LIMIT $limit "); $consultaNotificacoes->execute($admIds); foreach ($consultaNotificacoes->fetchAll() as $c) { $notificacao = new Notificacoes(); $notificacao->arrayToNotificacao($c); $local[] = $notificacao->getJson(); } return ($local != null) ? $local : null; } public function listAllJsonByDate($data,$limit = 10) { $local = null; $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaNotificacoes = $this->con->prepare("SELECT * FROM pe_notificacoes WHERE fk_id_administrador IN ($placeholders) AND data>? ORDER BY data DESC LIMIT $limit "); $consultaNotificacoes->execute(array_merge($admIds, array($data))); foreach ($consultaNotificacoes->fetchAll() as $c) { $notificacao = new Notificacoes(); $notificacao->arrayToNotificacao($c); $local[] = $notificacao->getJson(); } return ($local != null) ? $local : null; } public function listDataTable() { $local = null; $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaLocais = $this->con->prepare("SELECT * FROM pe_notificacoes WHERE fk_id_administrador IN ($placeholders)"); $consultaLocais->execute($admIds); return $consultaLocais->fetchAll(); } public function insert($array) { $insertNotificacoes = $this->con->prepare(" INSERT INTO pe_notificacoes(titulo,mensagem,fk_id_administrador) VALUES (:titulo,:mensagem,:fk_id_administrador )"); $insertNotificacoes->execute($array); if ($insertNotificacoes->rowCount() > 0) return true; else return false; } /* @param Notificacoes $notificacao Object Notification */ public function insertObg(Notificacoes $notificacao) { $insertNotificacoes = $this->con->prepare(" INSERT INTO pe_notificacoes(titulo,mensagem,fk_id_administrador) VALUES (?,?,?)"); $insertNotificacoes->execute(array($notificacao->getTitulo(), $notificacao->getMensagem(), $notificacao->getFkIdAdministrador())); if ($insertNotificacoes->rowCount() > 0) return true; else return false; } public function list($id) { $consultaLocais = $this->con->prepare("SELECT * FROM pe_notificacoes WHERE id_notificacao=?"); $consultaLocais->execute(array($id)); $local = new Notificacoes(); $local->arrayToNotificacao($consultaLocais->fetch()); return $local = new Notificacoes($consultaLocais->fetch()); } public function setLida($id) { $atualizaNotificacao = $this->con->prepare("UPDATE pe_notificacoes SET lida=? WHERE id_notificacao=?"); $atualizaNotificacao->execute(array(1, $id)); if ($atualizaNotificacao->rowCount() > 0) return true; else return false; } public function setAllLida() { if (defined("ADM_ID")) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $atualizaNotificacao = $this->con->prepare("UPDATE pe_notificacoes SET lida=? WHERE fk_id_administrador IN ($placeholders)"); $atualizaNotificacao->execute(array_merge(array(1), $admIds)); if ($atualizaNotificacao->rowCount() > 0) { return true; } else { return false; } } return false; } } namespace Plano; class Plano { private $id_plano; private $max_colaboradores; private $nome; private $descricao; private $valor_colaborador; function __construct() { $this->id_plano = null; $this->max_colaboradores = null; $this->nome = null; $this->descricao = null; $this->valor_colaborador = null; } /** * Get the value of id_plano */ public function getIdPlano() { return $this->id_plano; } /** * Set the value of id_plano * * @return self */ public function setIdPlano($id_plano) { $this->id_plano = $id_plano; return $this->id_plano; } /** * Get the value of max_colaboradores */ public function getMaxColaboradores() { return $this->max_colaboradores; } /** * Set the value of max_colaboradores * * @return self */ public function setMaxColaboradores($max_colaboradores) { $this->max_colaboradores = $max_colaboradores; return $this->max_colaboradores; } /** * Get the value of nome */ public function getNome() { return $this->nome; } /** * Set the value of nome * * @return self */ public function setNome($nome) { $this->nome = $nome; return $this->nome; } /** * Get the value of valor_colaborador */ public function getValorColaborador() { return $this->valor_colaborador; } /** * Set the value of valor_colaborador * * @return self */ public function setValorColaborador($valor_colaborador) { $this->valor_colaborador = $valor_colaborador; return $this->valor_colaborador; } /** * Get the value of descricao */ public function getDescricao() { return $this->descricao; } /** * Set the value of descricao * * @return self */ public function setDescricao($descricao) { $this->descricao = $descricao; return $this->descricao; } public function arrayToPlano($array){ $this->id_plano = isset($array['id_plano']) ? $this->setIdPlano($array['id_plano']) : NULL; $this->max_colaboradores = isset($array['max_colaboradores']) ? $this->setMaxColaboradores($array['max_colaboradores']) : NULL; $this->nome = isset($array['nome']) ? $this->setNome($array['nome']) : NULL; $this->descricao = isset($array['descricao']) ? $this->setDescricao($array['descricao']) : NULL; $this->valor_colaborador = isset($array['valor_colaborador']) ? $this->setValorColaborador($array['valor_colaborador']) : NULL; } } namespace PlanoDao; use Plano\Plano; class PlanoDao { public $con; function __construct($con) { $this->con = $con; } public function listAll() { $login = null; $consultaLogins = $this->con->prepare("SELECT * FROM pe_plano"); $consultaLogins->execute(); foreach ($consultaLogins->fetchAll() as $c) { $login[] = new Plano(); $login[count($login) - 1]->arrayToPlano($c); } return ($login != null) ? $login : null; } public function insert($array) { $insertLogins = $this->con->prepare(" INSERT INTO pe_plano(nome,descricao,max_colaboradores,valor_colaborador) VALUES (:nome,:descricao,:max_colaboradores,:valor_colaborador)"); $insertLogins->execute($array); if ($insertLogins->rowCount() > 0) return true; else return false; } public function list($id) { $consultaLogins = $this->con->prepare("SELECT * FROM pe_plano WHERE id_plano=?"); $consultaLogins->execute(array($id)); $plano = new Plano(); $plano->arrayToPlano($consultaLogins->fetch()); return $plano; } public function listByColaboradores($quantidade_colaboradores) { $consultaLogins = $this->con->prepare("SELECT * FROM pe_plano WHERE max_colaboradores>=? LIMIT 1"); $consultaLogins->execute(array($quantidade_colaboradores)); $plano = new Plano(); $plano->arrayToPlano($consultaLogins->fetch()); return $plano; } } namespace PagamentoDao; use Pagamento\Pagamento; class PagamentoDao { public $con; function __construct($con) { $this->con = $con; } public function insert($array) { $insertPagamento = $this->con->prepare("INSERT INTO pe_pagamento(fk_id_ordem_pagamento,data,link,fk_id_tipo_pagamento,qr_code) VALUES(fk_id_ordem_pagamento,data,link,fk_id_tipo_pagamento,qr_code)"); $insertPagamento->execute($array); return $insertPagamento->rowCount() > 0 ? true : false; } public function listAll() { $atraso = null; $consultaPagamento = $this->con->prepare("SELECT * FROM pe_pagamento "); $consultaPagamento->execute(array(ADM_ID)); foreach ($consultaPagamento->fetchAll() as $c) { $atraso[] = new Pagamento(); $atraso[count($atraso) - 1]->arrayToPagamento($c); } return ($atraso != null) ? $atraso : null; } } namespace ResponsavelSetorDao; use ResponsavelSetor\ResponsavelSetor; class ResponsavelSetorDao { public $con; function __construct($con) { $this->con = $con; } public function listDataTable(){ $query = $this->con->prepare("SELECT rs.*, s.nome as setor FROM peResponsavelSetor as rs INNER JOIN peSetor as s ON s.id_setor = rs.fk_id_setor WHERE s.fk_id_administrador = ?"); $query->execute(array(ADM_ID)); return $query->fetchAll(); } public function listClass($id){ $query = $this->con->prepare("SELECT rs.* FROM peResponsavelSetor as rs INNER JOIN peSetor as s ON s.id_setor = rs.fk_id_setor WHERE s.fk_id_administrador = ? AND id_responsavel_setor = ?"); $query->execute(array(ADM_ID, $id)); $responsavel = new ResponsavelSetor(); $responsavel->arrayToResponsavelSetor($query->fetch()); return $responsavel; } public function update($responsavel){ $query = $this->con->prepare("UPDATE peResponsavelSetor SET nome = :nome, fk_id_setor = :fk_id_setor WHERE id_responsavel_setor = :id_responsavel_setor"); $query->execute(array($responsavel->getNome(), $responsavel->getFkIdSetor(), $responsavel->getIdResponsavelSetor())); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function insert($responsavel){ $query = $this->con->prepare("INSERT INTO peResponsavelSetor(nome,fk_id_setor,fk_id_login) VALUES(?, ?, ?)"); $query->execute(array($responsavel->getNome(), $responsavel->getFkIdSetor(), $responsavel->getFkIdLogin())); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } } namespace Relatorios; class Relatorios { private $id_relatorio; private $fk_id_funcionario; private $data; private $fk_id_administrador; private $arquivo; function __construct() { $this->id_relatorio = null; $this->fk_id_funcionario = null; $this->data = null; $this->fk_id_administrador = null; $this->arquivo = null; } /** * Get the value of id_relatorio */ public function getIdRelatorio() { return $this->id_relatorio; } /** * Set the value of id_relatorio * * @return self */ public function setIdRelatorio($id_relatorio) { $this->id_relatorio = $id_relatorio; return $this->id_relatorio; } /** * Get the value of fk_id_funcionario */ public function getFkIdFuncionario() { return $this->fk_id_funcionario; } /** * Set the value of fk_id_funcionario * * @return self */ public function setFkIdFuncionario($fk_id_funcionario) { $this->fk_id_funcionario = $fk_id_funcionario; return $this->fk_id_funcionario; } /** * Get the value of fk_id_administrador */ public function getFkIdAdministrador() { return $this->fk_id_administrador; } /** * Set the value of fk_id_administrador * * @return self */ public function setFkIdAdministrador($fk_id_administrador) { $this->fk_id_administrador = $fk_id_administrador; return $this->fk_id_administrador; } /** * Get the value of arquivo */ public function getArquivo() { return $this->arquivo; } /** * Set the value of arquivo * * @return self */ public function setArquivo($arquivo) { $this->arquivo = $arquivo; return $this->arquivo; } /** * Get the value of data */ public function getData() { return $this->data; } /** * Set the value of data * * @return self */ public function setData($data) { $this->data = $data; return $this->data; } public function arrayToRelatorios($array){ $this->id_relatorio = isset($array['id_relatorio']) ? $this->setIdRelatorio($array['id_relatorio']) : NULL; $this->fk_id_funcionario = isset($array['fk_id_funcionario']) ? $this->setFkIdFuncionario($array['fk_id_funcionario']) : NULL; $this->data = isset($array['data']) ? $this->setData($array['data']) : NULL; $this->fk_id_administrador = isset($array['fk_id_administrador']) ? $this->setFkIdAdministrador($array['fk_id_administrador']) : NULL; $this->arquivo = isset($array['arquivo']) ? $this->setArquivo($array['arquivo']) : NULL; } } namespace RelatoriosDao; use Relatorios\Relatorios; class RelatoriosDao { public $con; function __construct($con) { $this->con = $con; } public function insert($relatorio) { $insertTipo = $this->con->prepare("INSERT INTO pe_relatorios(fk_id_funcionario,fk_id_administrador,arquivo) VALUES(?, ?, ?)"); $insertTipo->execute(array($relatorio->getFkIdFuncionario(), $relatorio->getFkIdAdministrador(), $relatorio->getArquivo())); if ($insertTipo->rowCount() > 0) return true; else return false; } public function list($id) { $consultaTipos = $this->con->prepare("SELECT * FROM pe_relatorios WHERE id_relatorio=?"); $consultaTipos->execute(array($id)); $fichas = new Relatorios(); $fichas->arrayToRelatorios($consultaTipos->fetch()); return $fichas; } public function listAll(){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaTipos = $this->con->prepare("SELECT * FROM pe_relatorios WHERE fk_id_administrador IN ($placeholders)"); $consultaTipos->execute($admIds); $ficha=null; if($consultaTipos->rowCount()>0) foreach ($consultaTipos->fetchAll() as $c) { $ficha[] = new Relatorios(); $ficha[count($ficha) - 1]->arrayToRelatorios($c); } return ($ficha != null) ? $ficha : null; } public function listDataTable(){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $listarRelat = $this->con->prepare("SELECT * FROM pe_relatorios as r INNER JOIN pe_funcionario AS f ON r.fk_id_funcionario = f.id_funcionario WHERE r.fk_id_administrador IN ($placeholders)"); $listarRelat->execute($admIds); return $listarRelat->fetchAll(); } public function listarPresentes($data, $filtros = array()) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con, 'f.fk_id_setor'); $sql = "SELECT f.id_funcionario, f.nome, f.codigo, s.nome AS setor_nome, j.nome_jornada AS jornada_nome, COUNT(p.id_ficha_ponto) AS total_batidas, MIN(p.data) AS primeira_batida, MAX(p.data) AS ultima_batida, SUM(CASE WHEN p.fk_id_tipo_registro = 1 THEN 1 ELSE 0 END) AS entradas, SUM(CASE WHEN p.fk_id_tipo_registro = 2 THEN 1 ELSE 0 END) AS pausas, SUM(CASE WHEN p.fk_id_tipo_registro = 3 THEN 1 ELSE 0 END) AS saidas FROM pe_funcionario f INNER JOIN pe_ficha_ponto p ON p.fk_id_funcionario = f.id_funcionario AND DATE(p.data) = ? AND p.valido = 1 LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = f.fk_id_jornada WHERE f.fk_id_administrador IN ($placeholders) AND f.status = 1" . $setorFilter['sql']; $params = array_merge(array($data), $admIds, $setorFilter['params']); if (!empty($filtros['setor'])) { $sql .= " AND f.fk_id_setor = ?"; $params[] = intval($filtros['setor']); } if (!empty($filtros['jornada'])) { $sql .= " AND f.fk_id_jornada = ?"; $params[] = intval($filtros['jornada']); } if (!empty($filtros['funcionario'])) { $sql .= " AND f.id_funcionario = ?"; $params[] = intval($filtros['funcionario']); } $sql .= " GROUP BY f.id_funcionario ORDER BY f.nome ASC"; $stmt = $this->con->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } public function listarAusentes($data, $filtros = array()) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con, 'f.fk_id_setor'); $sql = "SELECT f.id_funcionario, f.nome, f.codigo, s.nome AS setor_nome, j.nome_jornada AS jornada_nome FROM pe_funcionario f LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = f.fk_id_jornada WHERE f.fk_id_administrador IN ($placeholders) AND f.status = 1 AND f.id_funcionario NOT IN ( SELECT DISTINCT fk_id_funcionario FROM pe_ficha_ponto WHERE DATE(data) = ? AND valido = 1 AND fk_id_administrador IN ($placeholders) )" . $setorFilter['sql']; $params = array_merge($admIds, array($data), $admIds, $setorFilter['params']); if (!empty($filtros['setor'])) { $sql .= " AND f.fk_id_setor = ?"; $params[] = intval($filtros['setor']); } if (!empty($filtros['jornada'])) { $sql .= " AND f.fk_id_jornada = ?"; $params[] = intval($filtros['jornada']); } $sql .= " ORDER BY f.nome ASC"; $stmt = $this->con->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } public function listarAbsenteismo($dataInicio, $dataFim, $filtros = array()) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con, 'f.fk_id_setor'); $sql = "SELECT f.id_funcionario, f.nome, f.codigo, s.nome AS setor_nome, j.nome_jornada AS jornada_nome, COUNT(DISTINCT DATE(p.data)) AS dias_presentes FROM pe_funcionario f LEFT JOIN pe_ficha_ponto p ON p.fk_id_funcionario = f.id_funcionario AND DATE(p.data) BETWEEN ? AND ? AND p.valido = 1 LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = f.fk_id_jornada WHERE f.fk_id_administrador IN ($placeholders) AND f.status = 1" . $setorFilter['sql']; $params = array_merge(array($dataInicio, $dataFim), $admIds, $setorFilter['params']); if (!empty($filtros['setor'])) { $sql .= " AND f.fk_id_setor = ?"; $params[] = intval($filtros['setor']); } $sql .= " GROUP BY f.id_funcionario ORDER BY f.nome ASC"; $stmt = $this->con->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } public function listarSemRegistro($minDias = 3, $filtros = array()) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con, 'f.fk_id_setor'); $sql = "SELECT f.id_funcionario, f.nome, f.codigo, f.email, f.telefone, s.nome AS setor_nome, j.nome_jornada AS jornada_nome, MAX(DATE(p.data)) AS ultima_batida, DATEDIFF(CURDATE(), IFNULL(MAX(DATE(p.data)), f.data_admissao)) AS dias_sem_registro FROM pe_funcionario f LEFT JOIN pe_ficha_ponto p ON p.fk_id_funcionario = f.id_funcionario AND p.valido = 1 LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = f.fk_id_jornada WHERE f.fk_id_administrador IN ($placeholders) AND f.status = 1" . $setorFilter['sql']; $params = array_merge($admIds, $setorFilter['params']); if (!empty($filtros['setor'])) { $sql .= " AND f.fk_id_setor = ?"; $params[] = intval($filtros['setor']); } $sql .= " GROUP BY f.id_funcionario HAVING dias_sem_registro >= ? ORDER BY dias_sem_registro DESC"; $params[] = intval($minDias); $stmt = $this->con->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } public function listarEscalasJornadas($filtros = array()) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con, 'f.fk_id_setor'); $sql = "SELECT f.id_funcionario, f.nome, f.codigo, s.nome AS setor_nome, j.nome_jornada AS jornada_nome, j.id_jornada_trabalho AS id_jornada, j.periodo, j.esquema FROM pe_funcionario f LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = f.fk_id_jornada WHERE f.fk_id_administrador IN ($placeholders) AND f.status = 1" . $setorFilter['sql']; $params = array_merge($admIds, $setorFilter['params']); if (!empty($filtros['setor'])) { $sql .= " AND f.fk_id_setor = ?"; $params[] = intval($filtros['setor']); } if (!empty($filtros['jornada'])) { $sql .= " AND f.fk_id_jornada = ?"; $params[] = intval($filtros['jornada']); } $sql .= " ORDER BY j.nome_jornada ASC, f.nome ASC"; $stmt = $this->con->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } public function listarCadastroServidores($filtros = array()) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con, 'f.fk_id_setor'); $sql = "SELECT f.id_funcionario, f.nome, f.codigo, f.email, f.telefone, f.data_admissao, f.data_nascimento, f.pis, s.nome AS setor_nome, j.nome_jornada AS jornada_nome, l.nome AS local_nome FROM pe_funcionario f LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = f.fk_id_jornada LEFT JOIN pe_local l ON l.id_local = f.fk_id_local WHERE f.fk_id_administrador IN ($placeholders) AND f.status = 1" . $setorFilter['sql']; $params = array_merge($admIds, $setorFilter['params']); if (!empty($filtros['setor'])) { $sql .= " AND f.fk_id_setor = ?"; $params[] = intval($filtros['setor']); } if (!empty($filtros['jornada'])) { $sql .= " AND f.fk_id_jornada = ?"; $params[] = intval($filtros['jornada']); } $sql .= " ORDER BY f.nome ASC"; $stmt = $this->con->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } public function listarAniversariantes($mes, $filtros = array()) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con, 'f.fk_id_setor'); $sql = "SELECT f.id_funcionario, f.nome, f.data_nascimento, s.nome AS setor_nome, TIMESTAMPDIFF(YEAR, f.data_nascimento, CURDATE()) AS idade FROM pe_funcionario f LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor WHERE f.fk_id_administrador IN ($placeholders) AND f.status = 1 AND f.data_nascimento IS NOT NULL AND MONTH(f.data_nascimento) = ?" . $setorFilter['sql']; $params = array_merge($admIds, array(intval($mes)), $setorFilter['params']); if (!empty($filtros['setor'])) { $sql .= " AND f.fk_id_setor = ?"; $params[] = intval($filtros['setor']); } $sql .= " ORDER BY DAY(f.data_nascimento) ASC"; $stmt = $this->con->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } public function listarIrregularidades($dataInicio, $dataFim, $filtros = array()) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con, 'f.fk_id_setor'); $sql = "SELECT f.id_funcionario, f.nome, f.codigo, s.nome AS setor_nome, j.nome_jornada AS jornada_nome, DATE(p.data) AS dia, TIME(p.data) AS hora, p.fk_id_tipo_registro AS tipo FROM pe_funcionario f INNER JOIN pe_ficha_ponto p ON p.fk_id_funcionario = f.id_funcionario AND DATE(p.data) BETWEEN ? AND ? AND p.valido = 1 LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = f.fk_id_jornada WHERE f.fk_id_administrador IN ($placeholders) AND f.status = 1" . $setorFilter['sql']; $params = array_merge(array($dataInicio, $dataFim), $admIds, $setorFilter['params']); if (!empty($filtros['setor'])) { $sql .= " AND f.fk_id_setor = ?"; $params[] = intval($filtros['setor']); } if (!empty($filtros['funcionario'])) { $sql .= " AND f.id_funcionario = ?"; $params[] = intval($filtros['funcionario']); } $sql .= " ORDER BY f.nome ASC, DATE(p.data) ASC, p.data ASC"; $stmt = $this->con->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } /** * Agrupa batidas e classifica irregularidades (ímpares, sem saída, sem entrada). * * @return array{data: array, meta: array} */ public function montarIrregularidades($dataInicio, $dataFim, $filtros = array()) { $batidas = $this->listarIrregularidades($dataInicio, $dataFim, $filtros); $porFunc = array(); foreach ($batidas as $b) { $fid = $b['id_funcionario']; if (!isset($porFunc[$fid])) { $porFunc[$fid] = array( 'id_funcionario' => $fid, 'nome' => $b['nome'], 'codigo' => $b['codigo'], 'setor_nome' => $b['setor_nome'], 'jornada_nome' => $b['jornada_nome'], 'dias' => array(), ); } $dia = $b['dia']; if (!isset($porFunc[$fid]['dias'][$dia])) { $porFunc[$fid]['dias'][$dia] = array(); } $porFunc[$fid]['dias'][$dia][] = array( 'hora' => $b['hora'], 'tipo' => intval($b['tipo']), ); } $irregularidades = array( 'marcacoes_impares' => array(), 'sem_saida' => array(), 'sem_entrada' => array(), ); foreach ($porFunc as $func) { foreach ($func['dias'] as $dia => $regs) { $countRegs = count($regs); if ($countRegs % 2 !== 0) { $irregularidades['marcacoes_impares'][] = array( 'nome' => $func['nome'], 'setor' => $func['setor_nome'], 'dia' => $dia, 'total_batidas' => $countRegs, ); } $temEntrada = false; $temSaida = false; foreach ($regs as $r) { if ($r['tipo'] == 1) { $temEntrada = true; } if ($r['tipo'] == 3) { $temSaida = true; } } if ($temEntrada && !$temSaida) { $irregularidades['sem_saida'][] = array( 'nome' => $func['nome'], 'setor' => $func['setor_nome'], 'dia' => $dia, ); } if (!$temEntrada && $temSaida) { $irregularidades['sem_entrada'][] = array( 'nome' => $func['nome'], 'setor' => $func['setor_nome'], 'dia' => $dia, ); } } } $totalIrreg = count($irregularidades['marcacoes_impares']) + count($irregularidades['sem_saida']) + count($irregularidades['sem_entrada']); return array( 'data' => $irregularidades, 'meta' => array( 'data_inicio' => $dataInicio, 'data_fim' => $dataFim, 'batidas_analisadas' => count($batidas), 'funcionarios_com_batida' => count($porFunc), 'total_irregularidades' => $totalIrreg, ), ); } public function listarTiposHoras($dataInicio, $dataFim, $filtros = array()) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $setorFilter = buildSetorFilterSql($this->con, 'f.fk_id_setor'); $sql = "SELECT f.id_funcionario, f.nome, f.codigo, s.nome AS setor_nome, j.nome_jornada AS jornada_nome, f.fk_id_jornada, DATE(p.data) AS dia, TIME(p.data) AS hora, p.fk_id_tipo_registro AS tipo_registro FROM pe_funcionario f INNER JOIN pe_ficha_ponto p ON p.fk_id_funcionario = f.id_funcionario AND DATE(p.data) BETWEEN ? AND ? AND p.valido = 1 LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = f.fk_id_jornada WHERE f.fk_id_administrador IN ($placeholders) AND f.status = 1" . $setorFilter['sql']; $params = array_merge(array($dataInicio, $dataFim), $admIds, $setorFilter['params']); if (!empty($filtros['setor'])) { $sql .= " AND f.fk_id_setor = ?"; $params[] = intval($filtros['setor']); } if (!empty($filtros['funcionario'])) { $sql .= " AND f.id_funcionario = ?"; $params[] = intval($filtros['funcionario']); } $sql .= " ORDER BY f.nome ASC, DATE(p.data) ASC, p.data ASC"; $stmt = $this->con->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } public function listarAfastamentos($dataInicio, $dataFim, $filtros = array()) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $sql = "SELECT e.id_eventos, e.fk_id_funcionario, f.nome, e.tipo AS motivo, e.data_inicio, e.hora_inicio, e.data_fim, e.hora_fim, e.descricao, s.nome AS setor_nome FROM pe_eventos e INNER JOIN pe_funcionario f ON f.id_funcionario = e.fk_id_funcionario LEFT JOIN pe_setor s ON s.id_setor = f.fk_id_setor WHERE f.fk_id_administrador IN ($placeholders) AND f.status = 1 AND e.data_inicio <= ? AND (e.data_fim >= ? OR e.data_fim IS NULL)"; $params = array_merge($admIds, array($dataFim, $dataInicio)); if (!empty($filtros['setor'])) { $sql .= " AND f.fk_id_setor = ?"; $params[] = intval($filtros['setor']); } if (!empty($filtros['motivo'])) { $sql .= " AND e.tipo = ?"; $params[] = $filtros['motivo']; } $sql .= " ORDER BY e.data_inicio DESC"; $stmt = $this->con->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } } namespace SetorDao; use Setor; class SetorDao { public $con; function __construct($con) { $this->con = $con; } public function listDataTable(){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare(" SELECT s.*, sp.nome AS nome_pai FROM pe_setor s LEFT JOIN pe_setor sp ON sp.id_setor = s.fk_id_pai WHERE s.fk_id_administrador IN ($placeholders) ORDER BY s.tipo, s.nome "); $query->execute($admIds); return $query->fetchAll(); } public function listAllClass(){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_setor WHERE fk_id_administrador IN ($placeholders)"); $query->execute($admIds); foreach ($query->fetchAll() as $c) { $setores[] = new Setor\Setor(); $setores[count($setores) - 1]->arrayToSetor($c); } return ($query->rowCount() > 0) ? $setores : NULL; } public function listClass($id_setor){ $setor = new Setor\Setor(); $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_setor WHERE fk_id_administrador IN ($placeholders) AND id_setor=?"); $query->execute(array_merge($admIds, array($id_setor))); $setor->arrayToSetor($query->fetch()); return $setor; } public function listarArvore(){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare(" WITH RECURSIVE arvore AS ( SELECT id_setor, nome, tipo, fk_id_pai, fk_id_administrador, 0 AS nivel FROM pe_setor WHERE fk_id_administrador IN ($placeholders) AND fk_id_pai IS NULL UNION ALL SELECT s.id_setor, s.nome, s.tipo, s.fk_id_pai, s.fk_id_administrador, a.nivel + 1 FROM pe_setor s INNER JOIN arvore a ON s.fk_id_pai = a.id_setor ) SELECT * FROM arvore ORDER BY nivel, nome "); $query->execute($admIds); return $query->fetchAll(); } public function listarPaisDisponiveis($excludeId = null){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $sql = "SELECT id_setor, nome, tipo, fk_id_pai FROM pe_setor WHERE fk_id_administrador IN ($placeholders) AND tipo IN ('secretaria','unidade')"; $params = $admIds; if ($excludeId) { $sql .= " AND id_setor != ?"; $params[] = $excludeId; } $sql .= " ORDER BY tipo, nome"; $query = $this->con->prepare($sql); $query->execute($params); return $query->fetchAll(); } public function obterDescendentes($idSetor){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare(" WITH RECURSIVE arvore AS ( SELECT id_setor FROM pe_setor WHERE id_setor = ? AND fk_id_administrador IN ($placeholders) UNION ALL SELECT s.id_setor FROM pe_setor s INNER JOIN arvore a ON s.fk_id_pai = a.id_setor ) SELECT id_setor FROM arvore "); $query->execute(array_merge(array($idSetor), $admIds)); return array_column($query->fetchAll(), 'id_setor'); } public function update($setor){ $query = $this->con->prepare("UPDATE pe_setor SET nome = ?, descricao = ?, fk_id_pai = ?, tipo = ? WHERE id_setor = ?"); $query->execute(array($setor->getNome(), $setor->getDescricao(), $setor->getFkIdPai(), $setor->getTipo(), $setor->getIdSetor())); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function insert($setor){ $query = $this->con->prepare("INSERT INTO pe_setor (nome, descricao, fk_id_administrador, fk_id_pai, tipo) VALUES(?, ?, ?, ?, ?)"); $query->execute(array($setor->getNome(), $setor->getDescricao(), $setor->getFkIdAdministrador(), $setor->getFkIdPai(), $setor->getTipo())); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } } namespace Solicitacao; class Solicitacao { private $id_registro; private $id_ficha_ponto; private $data; private $fk_id_funcionario; private $fk_id_local; private $fk_id_tipo_registro; private $latitude; private $longitude; private $fk_id_administrador; private $alterado; private $valido; private $fk_id_ficha; private $fk_id_tipo; private $fk_id_status; private $fk_id_novo_registro; private $data_solicitacao; private $comentario; function __construct() { $this->id_ficha_ponto = NULL; $this->data = NULL; $this->fk_id_funcionario = NULL; $this->fk_id_tipo_registro = NULL; $this->fk_id_local = NULL; $this->latitude = NULL; $this->longitude = NULL; $this->fk_id_administrador = NULL; $this->alterado = NULL; $this->valido = NULL; $this->fk_id_ficha = NULL; $this->fk_id_tipo = NULL; $this->fk_id_status = NULL; $this->fk_id_novo_registro = NULL; $this->data_solicitacao = NULL; $this->comentario = NULL; $this->id_registro = NULL; } /** * Get the value of id_ficha_ponto */ public function getIdFichaPonto() { return $this->id_ficha_ponto; } /** * Set the value of id_ficha_ponto */ public function setIdFichaPonto($id_ficha_ponto) { $this->id_ficha_ponto = $id_ficha_ponto; return $this->id_ficha_ponto; } /** * Get the value of data */ public function getData() { return $this->data; } /** * Set the value of data */ public function setData($data) { $this->data = $data; return $this->data; } /** * Get the value of fk_id_funcionario */ public function getFkIdFuncionario() { return $this->fk_id_funcionario; } /** * Set the value of fk_id_funcionario */ public function setFkIdFuncionario($fk_id_funcionario) { $this->fk_id_funcionario = $fk_id_funcionario; return $this->fk_id_funcionario; } /** * Get the value of fk_id_local */ public function getFkIdLocal() { return $this->fk_id_local; } /** * Set the value of fk_id_local */ public function setFkIdLocal($fk_id_local) { $this->fk_id_local = $fk_id_local; return $this->fk_id_local; } /** * Get the value of fk_id_tipo_registro */ public function getFkIdTipoRegistro() { return $this->fk_id_tipo_registro; } /** * Set the value of fk_id_tipo_registro */ public function setFkIdTipoRegistro($fk_id_tipo_registro) { $this->fk_id_tipo_registro = $fk_id_tipo_registro; return $this->fk_id_tipo_registro; } /** * Get the value of latitude */ public function getLatitude() { return $this->latitude; } /** * Set the value of latitude */ public function setLatitude($latitude) { $this->latitude = $latitude; return $this->latitude; } /** * Get the value of longitude */ public function getLongitude() { return $this->longitude; } /** * Set the value of longitude */ public function setLongitude($longitude) { $this->longitude = $longitude; return $this->longitude; } /** * Get the value of fk_id_administrador */ public function getFkIdAdministrador() { return $this->fk_id_administrador; } /** * Set the value of fk_id_administrador */ public function setFkIdAdministrador($fk_id_administrador) { $this->fk_id_administrador = $fk_id_administrador; return $this->fk_id_administrador; } /** * Get the value of alterado */ public function getAlterado() { return $this->alterado; } /** * Set the value of alterado */ public function setAlterado($alterado) { $this->alterado = $alterado; return $this->alterado; } /** * Get the value of valido */ public function getValido() { return $this->valido; } /** * Set the value of valido */ public function setValido($valido) { $this->valido = $valido; return $this->valido; } /** * Get the value of fk_id_ficha */ public function getFkIdFicha() { return $this->fk_id_ficha; } /** * Set the value of fk_id_ficha */ public function setFkIdFicha($fk_id_ficha) { $this->fk_id_ficha = $fk_id_ficha; return $this->fk_id_ficha; } /** * Get the value of fk_id_tipo */ public function getFkIdTipo() { return $this->fk_id_tipo; } /** * Set the value of fk_id_tipo */ public function setFkIdTipo($fk_id_tipo) { $this->fk_id_tipo = $fk_id_tipo; return $this->fk_id_tipo; } /** * Get the value of fk_id_status */ public function getFkIdStatus() { return $this->fk_id_status; } /** * Set the value of fk_id_status */ public function setFkIdStatus($fk_id_status) { $this->fk_id_status = $fk_id_status; return $this->fk_id_status; } /** * Get the value of fk_id_novo_registro */ public function getFkIdNovoRegistro() { return $this->fk_id_novo_registro; } /** * Set the value of fk_id_novo_registro */ public function setFkIdNovoRegistro($fk_id_novo_registro) { $this->fk_id_novo_registro = $fk_id_novo_registro; return $this->fk_id_novo_registro; } /** * Get the value of data_solicitacao */ public function getDataSolicitacao() { return $this->data_solicitacao; } /** * Set the value of data_solicitacao */ public function setDataSolicitacao($data_solicitacao) { $this->data_solicitacao = $data_solicitacao; return $this->data_solicitacao; } /** * Get the value of comentario */ public function getComentario() { return $this->comentario; } /** * Set the value of comentario */ public function setComentario($comentario) { $this->comentario = $comentario; return $this->comentario; } /** * Get the value of id_registro */ public function getIdRegistro() { return $this->id_registro; } /** * Set the value of id_registro */ public function setIdRegistro($id_registro) { $this->id_registro = $id_registro; return $this->id_registro; } public function arrayToSolicitacao($array) { $this->id_ficha_ponto = isset($array['id_ficha_ponto']) ? $this->setIdFichaPonto($array['id_ficha_ponto']) : NULL; $this->data = isset($array['data']) ? $this->setData($array['data']) : NULL; $this->fk_id_funcionario = isset($array['id_funcionario']) ? $this->setFkIdFuncionario($array['id_funcionario']) : NULL; $this->fk_id_local = isset($array['id_local']) ? $this->setFkIdLocal($array['id_local']) : NULL; $this->fk_id_tipo_registro = isset($array['fk_id_tipo_registro']) ? $this->setFkIdTipoRegistro($array['fk_id_tipo_registro']) : NULL; $this->latitude = isset($array['latitude']) ? $this->setLatitude($array['latitude']) : ""; $this->longitude = isset($array['longitude']) ? $this->setLongitude($array['longitude']) : ""; $this->fk_id_administrador = isset($array['id_adm']) ? $this->setFkIdAdministrador($array['id_adm']) : NULL; $this->alterado = isset($array['alterado']) ? $this->setAlterado($array['alterado']) : NULL; $this->valido = isset($array['valido']) ? $this->setValido($array['valido']) : NULL; $this->fk_id_ficha = isset($array['fk_id_ficha']) ? $this->setFkIdFicha($array['fk_id_ficha']) : NULL; $this->fk_id_tipo = isset($array['fk_id_tipo']) ? $this->setFkIdTipo($array['fk_id_tipo']) : NULL; $this->fk_id_status = isset($array['fk_id_status']) ? $this->setFkIdStatus($array['fk_id_status']) : NULL; $this->fk_id_novo_registro = isset($array['fk_id_novo_registro']) ? $this->setFkIdNovoRegistro($array['fk_id_novo_registro']) : NULL; $this->data_solicitacao = isset($array['data_solicitacao']) ? $this->setDataSolicitacao($array['data_solicitacao']) : NULL; $this->comentario = isset($array['comentario']) ? $this->setComentario($array['comentario']) : NULL; $this->id_registro = isset($array['id_registro']) ? $this->setIdRegistro($array['id_registro']) : NULL; } } namespace SolicitacaoFeriasDao; use SolicitacaoBancoHoras\SolicitacaoFerias; class SolicitacaoFeriasDao { public $con; function __construct($con) { $this->con = $con; } public function insert($solicFerias) { $insertTipo = $this->con->prepare("INSERT INTO pe_solicitacao_ferias(fk_id_funcionario, data_solicitacao, data_inicio, data_fim, status, motivo, fk_id_administrador) VALUES(?, ?, ?, ?, ?, ?, ?)"); $insertTipo->execute(array($solicFerias->getFkIdFuncionario(), $solicFerias->getDataSolicitacao(), $solicFerias->getDataInicio(), $solicFerias->getDataFim(), $solicFerias->getStatus(), $solicFerias->getMotivo(), $solicFerias->getFkIdAdministrador())); if ($insertTipo->rowCount() > 0) return true; else return false; } public function listDataTable() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaSolicitacoes = $this->con->prepare("SELECT pe_funcionario.id_funcionario, pe_funcionario.nome, f.id_solicitacao_ferias, f.data_inicio, f.data_fim, f.motivo FROM pe_solicitacao_ferias as f LEFT JOIN pe_funcionario ON f.fk_id_funcionario = pe_funcionario.id_funcionario WHERE f.status = 0 AND f.fk_id_administrador IN ($placeholders)"); $consultaSolicitacoes->execute($admIds); return $consultaSolicitacoes->fetchAll(); } public function list($id) { $consultaSolicitacoes = $this->con->prepare("SELECT * FROM pe_solicitacao_ferias WHERE id_solicitacao_ferias=?"); $consultaSolicitacoes->execute(array($id)); $solicFerias = new SolicitacaoFerias(); $solicFerias->arrayToSolicFerias($consultaSolicitacoes->fetch()); return ($consultaSolicitacoes->rowCount()) ? $solicFerias : null; } public function listByFuncionario($id) { $consultaSolicitacoes = $this->con->prepare("SELECT * FROM pe_solicitacao_ferias WHERE fk_id_funcionario=? ORDER BY data_solicitacao DESC"); $consultaSolicitacoes->execute(array($id)); foreach ($consultaSolicitacoes->fetchAll() as $solicita){ $solicitacao[] = new SolicitacaoFerias(); $solicitacao[count($solicitacao) - 1]->arrayToSolicFerias($solicita); } return ($consultaSolicitacoes->rowCount() > 0) ? $solicitacao : null; } public function updateStatus($id_registro, $status) { $consultaSolicitacoes = $this->con->prepare("UPDATE pe_solicitacao_ferias SET status = ? WHERE id_solicitacao_ferias=?"); $consultaSolicitacoes->execute(array($status, $id_registro)); return $consultaSolicitacoes->rowCount() > 0 ? true : false; } public function countByStatus($status) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaSolicitacoes = $this->con->prepare("SELECT * FROM pe_solicitacao_ferias WHERE status=? AND fk_id_administrador IN ($placeholders)"); $consultaSolicitacoes->execute(array_merge(array($status), $admIds)); return $consultaSolicitacoes->rowCount(); } } namespace SolicitacaoBancoHorasDao; use SolicitacaoBancoHoras\SolicitacaoBancoHoras; class SolicitacaoBancoHorasDao { public $con; function __construct($con) { $this->con = $con; } public function insert($solicBanco) { $insertTipo = $this->con->prepare("INSERT INTO pe_solicitacao_banco_horas(fk_id_funcionario, data_solicitacao, data_inicio, data_fim, status, motivo, fk_id_administrador) VALUES(?, ?, ?, ?, ?, ?, ?)"); $insertTipo->execute(array($solicBanco->getFkIdFuncionario(), $solicBanco->getDataSolicitacao(), $solicBanco->getDataInicio(), $solicBanco->getDataFim(), $solicBanco->getStatus(), $solicBanco->getMotivo(), $solicBanco->getFkIdAdministrador())); if ($insertTipo->rowCount() > 0) return "true"; else return "false"; } public function listDataTable() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaSolicitacoes = $this->con->prepare("SELECT bh.data_solicitacao, bh.data_inicio, bh.id_solicitacao_banco_horas, bh.data_fim, bh.motivo, pe_funcionario.nome FROM pe_solicitacao_banco_horas as bh LEFT JOIN pe_funcionario ON bh.fk_id_funcionario = pe_funcionario.id_funcionario WHERE bh.status = 0 AND bh.fk_id_administrador IN ($placeholders)"); $consultaSolicitacoes->execute($admIds); return $consultaSolicitacoes->fetchAll(); } public function list($id) { $consultaSolicitacoes = $this->con->prepare("SELECT * FROM pe_solicitacao_banco_horas WHERE id_solicitacao_banco_horas=?"); $consultaSolicitacoes->execute(array($id)); $solicBanco = new SolicitacaoBancoHoras(); $solicBanco->arrayToSolicBanco($consultaSolicitacoes->fetch()); return $solicBanco; } public function listByFuncionario($id) { $consultaSolicitacoes = $this->con->prepare("SELECT * FROM pe_solicitacao_banco_horas WHERE fk_id_funcionario=? ORDER BY data_solicitacao DESC"); $consultaSolicitacoes->execute(array($id)); $solicitacao = []; foreach ($consultaSolicitacoes->fetchAll() as $solicita){ $solicitacao[] = new SolicitacaoBancoHoras(); $solicitacao[count($solicitacao) - 1]->arrayToSolicBanco($solicita); } return $solicitacao; } public function updateStatus($id_registro, $status) { $consultaSolicitacoes = $this->con->prepare("UPDATE pe_solicitacao_banco_horas SET status = ? WHERE id_solicitacao_banco_horas=?"); $consultaSolicitacoes->execute(array($status, $id_registro)); return $consultaSolicitacoes->rowCount() > 0 ? true : $consultaSolicitacoes->errorInfo(); } public function countByStatus($status) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $consultaSolicitacoes = $this->con->prepare("SELECT * FROM pe_solicitacao_banco_horas WHERE status=? AND fk_id_administrador IN ($placeholders)"); $consultaSolicitacoes->execute(array_merge(array($status), $admIds)); return $consultaSolicitacoes->rowCount(); } } namespace Tipo; class Tipo { private $id_tipo_registro; private $nome; function __construct() { $this->id_tipo_registro = NULL; $this->nome = NULL; } /** * Get the value of id_tipo_registro */ public function getIdTipoRegistro() { return $this->id_tipo_registro; } /** * Set the value of id_tipo_registro */ public function setIdTipoRegistro($id_tipo_registro) { $this->id_tipo_registro = $id_tipo_registro; return $this->id_tipo_registro; } /** * Get the value of nome */ public function getNome() { return $this->nome; } /** * Set the value of nome */ public function setNome($nome) { $this->nome = $nome; return $this->nome; } public function arrayToTipo($array){ $this->id_tipo_registro = isset($array['id_tipo_registro']) ? $this->setIdTipoRegistro($array['id_tipo_registro']) : NULL; $this->nome = isset($array['nome']) ? $this->setNome($array['nome']) : NULL; } } namespace TipoDao; use Tipo\Tipo; class TipoDao { public $con; function __construct($con) { $this->con = $con; } public function listAll() { $consultaTipos = $this->con->prepare("SELECT * FROM pe_tipo_registro"); $consultaTipos->execute(); foreach ($consultaTipos->fetchAll() as $c) { $tipo[] = new Tipo(); $tipo[count($tipo) - 1]->arrayToTipo($c); } return ($tipo != null) ? $tipo : array(); } public function insert($tipo) { $insertTipo = $this->con->prepare("INSERT INTO pe_tipo_registro(id_tipo_registro,nome) VALUES(?, ?)"); $insertTipo->execute(array($tipo->getIdTipoRegistro(), $tipo->getNome())); if ($insertTipo->rowCount() > 0) return true; else return false; } public function list($id) { $consultaTipos = $this->con->prepare("SELECT * FROM pe_tipo_registro WHERE id_tipo_registro=?"); $consultaTipos->execute(array($id)); $tipo = new Tipo(); $tipo->arrayToTipo($consultaTipos->fetch()); return $tipo; } } namespace TipoHoraDao; use TipoHora; class TipoHoraDao { public $con; function __construct($con) { $this->con = $con; } public function listDataTable(){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_tipo_hora WHERE fk_id_administrador IN ($placeholders) AND ativo = 1"); $query->execute($admIds); return $query->fetchAll(); } public function listAllClass(){ $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_tipo_hora WHERE fk_id_administrador IN ($placeholders) AND ativo = 1"); $query->execute($admIds); $tipos = array(); foreach ($query->fetchAll() as $c) { $tipos[] = new TipoHora\TipoHora(); $tipos[count($tipos) - 1]->arrayToTipoHora($c); } return ($query->rowCount() > 0) ? $tipos : NULL; } public function listClass($id_tipo_hora){ $tipo = new TipoHora\TipoHora(); $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_tipo_hora WHERE fk_id_administrador IN ($placeholders) AND id_tipo_hora = ?"); $query->execute(array_merge($admIds, array($id_tipo_hora))); $tipo->arrayToTipoHora($query->fetch()); return $tipo; } public function insert($tipo){ $query = $this->con->prepare("INSERT INTO pe_tipo_hora (nome, codigo_contabil, tipo, ativo, fk_id_administrador) VALUES(?, ?, ?, ?, ?)"); $query->execute(array($tipo->getNome(), $tipo->getCodigoContabil(), $tipo->getTipo(), $tipo->getAtivo(), $tipo->getFkIdAdministrador())); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function update($tipo){ $query = $this->con->prepare("UPDATE pe_tipo_hora SET nome = ?, codigo_contabil = ?, tipo = ? WHERE id_tipo_hora = ? AND fk_id_administrador = ?"); $query->execute(array($tipo->getNome(), $tipo->getCodigoContabil(), $tipo->getTipo(), $tipo->getIdTipoHora(), ADM_ID)); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function delete($id_tipo_hora){ $query = $this->con->prepare("UPDATE pe_tipo_hora SET ativo = 0 WHERE id_tipo_hora = ? AND fk_id_administrador = ?"); $query->execute(array($id_tipo_hora, ADM_ID)); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function listByJornada($idJornada){ $query = $this->con->prepare( "SELECT th.* FROM pe_tipo_hora th INNER JOIN pe_jornada_tipo_hora jth ON jth.fk_id_tipo_hora = th.id_tipo_hora WHERE jth.fk_id_jornada = ? AND jth.fk_id_administrador = ? AND th.ativo = 1" ); $query->execute(array($idJornada, ADM_ID)); return $query->fetchAll(); } public function saveJornadaTipoHora($idJornada, $tipoHoraIds){ $del = $this->con->prepare("DELETE FROM pe_jornada_tipo_hora WHERE fk_id_jornada = ? AND fk_id_administrador = ?"); $del->execute(array($idJornada, ADM_ID)); if (!empty($tipoHoraIds)) { $ins = $this->con->prepare("INSERT INTO pe_jornada_tipo_hora (fk_id_jornada, fk_id_tipo_hora, fk_id_administrador) VALUES (?, ?, ?)"); foreach ($tipoHoraIds as $idTipoHora) { $ins->execute(array($idJornada, $idTipoHora, ADM_ID)); } } return 1; } } namespace DsrConfigDao; use DsrConfig; class DsrConfigDao { public $con; function __construct($con) { $this->con = $con; } public function listDataTable() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_dsr_config WHERE fk_id_administrador IN ($placeholders) AND ativo = 1 ORDER BY nome"); $query->execute($admIds); return $query->fetchAll(); } public function listAllClass() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_dsr_config WHERE fk_id_administrador IN ($placeholders) AND ativo = 1 ORDER BY nome"); $query->execute($admIds); $configs = array(); foreach ($query->fetchAll() as $c) { $obj = new DsrConfig\DsrConfig(); $obj->arrayToDsrConfig($c); $configs[] = $obj; } return ($query->rowCount() > 0) ? $configs : NULL; } public function listClass($id) { $obj = new DsrConfig\DsrConfig(); $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_dsr_config WHERE fk_id_administrador IN ($placeholders) AND id_dsr_config = ?"); $query->execute(array_merge($admIds, array($id))); $row = $query->fetch(); if ($row) $obj->arrayToDsrConfig($row); return $obj; } public function obterPorAdministrador($admId) { $query = $this->con->prepare("SELECT * FROM pe_dsr_config WHERE fk_id_administrador = ? AND ativo = 1 LIMIT 1"); $query->execute(array($admId)); $row = $query->fetch(); if ($row) { $obj = new DsrConfig\DsrConfig(); $obj->arrayToDsrConfig($row); return $obj; } return null; } public function insert($dsr) { $query = $this->con->prepare( "INSERT INTO pe_dsr_config (fk_id_administrador, nome, descricao, codigo_contabil, pagar_dsr_semanal, totalizar_mes, desconto_falta_integral, desconto_meio_periodo, desconto_atraso, desconto_sexta, desconto_feriado, ativo) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)" ); $query->execute(array( $dsr->getFkIdAdministrador(), $dsr->getNome(), $dsr->getDescricao(), $dsr->getCodigoContabil(), $dsr->getPagarDsrSemanal(), $dsr->getTotalizarMes(), $dsr->getDescontoFaltaIntegral(), $dsr->getDescontoMeioPeriodo(), $dsr->getDescontoAtraso(), $dsr->getDescontoSexta(), $dsr->getDescontoFeriado(), $dsr->getAtivo() )); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function update($dsr) { $query = $this->con->prepare( "UPDATE pe_dsr_config SET nome=?, descricao=?, codigo_contabil=?, pagar_dsr_semanal=?, totalizar_mes=?, desconto_falta_integral=?, desconto_meio_periodo=?, desconto_atraso=?, desconto_sexta=?, desconto_feriado=? WHERE id_dsr_config=? AND fk_id_administrador=?" ); $query->execute(array( $dsr->getNome(), $dsr->getDescricao(), $dsr->getCodigoContabil(), $dsr->getPagarDsrSemanal(), $dsr->getTotalizarMes(), $dsr->getDescontoFaltaIntegral(), $dsr->getDescontoMeioPeriodo(), $dsr->getDescontoAtraso(), $dsr->getDescontoSexta(), $dsr->getDescontoFeriado(), $dsr->getIdDsrConfig(), ADM_ID )); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function delete($id) { $query = $this->con->prepare("UPDATE pe_dsr_config SET ativo = 0 WHERE id_dsr_config = ? AND fk_id_administrador = ?"); $query->execute(array($id, ADM_ID)); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } } namespace AdicionalNoturnoDao; use AdicionalNoturnoConfig; class AdicionalNoturnoDao { public $con; function __construct($con) { $this->con = $con; } public function listDataTable() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_adicional_noturno_config WHERE fk_id_administrador IN ($placeholders) AND ativo = 1 ORDER BY hora_inicio"); $query->execute($admIds); return $query->fetchAll(); } public function listAllClass() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_adicional_noturno_config WHERE fk_id_administrador IN ($placeholders) AND ativo = 1 ORDER BY hora_inicio"); $query->execute($admIds); $configs = array(); foreach ($query->fetchAll() as $c) { $obj = new AdicionalNoturnoConfig\AdicionalNoturnoConfig(); $obj->arrayToAdicionalNoturnoConfig($c); $configs[] = $obj; } return ($query->rowCount() > 0) ? $configs : NULL; } public function listClass($id) { $obj = new AdicionalNoturnoConfig\AdicionalNoturnoConfig(); $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_adicional_noturno_config WHERE fk_id_administrador IN ($placeholders) AND id_adicional_noturno = ?"); $query->execute(array_merge($admIds, array($id))); $row = $query->fetch(); if ($row) $obj->arrayToAdicionalNoturnoConfig($row); return $obj; } public function listarPorAdministrador($admId) { $query = $this->con->prepare("SELECT * FROM pe_adicional_noturno_config WHERE fk_id_administrador = ? AND ativo = 1 ORDER BY hora_inicio"); $query->execute(array($admId)); $configs = array(); foreach ($query->fetchAll() as $c) { $obj = new AdicionalNoturnoConfig\AdicionalNoturnoConfig(); $obj->arrayToAdicionalNoturnoConfig($c); $configs[] = $obj; } return count($configs) > 0 ? $configs : null; } public function insert($config) { $query = $this->con->prepare( "INSERT INTO pe_adicional_noturno_config (fk_id_administrador, nome_periodo, hora_inicio, hora_fim, codigo_contabil, fator_minutos, estender_ate_fim_jornada, ativo) VALUES (?,?,?,?,?,?,?,?)" ); $query->execute(array( $config->getFkIdAdministrador(), $config->getNomePeriodo(), $config->getHoraInicio(), $config->getHoraFim(), $config->getCodigoContabil(), $config->getFatorMinutos(), $config->getEstenderAteFimJornada(), $config->getAtivo() )); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function update($config) { $query = $this->con->prepare( "UPDATE pe_adicional_noturno_config SET nome_periodo=?, hora_inicio=?, hora_fim=?, codigo_contabil=?, fator_minutos=?, estender_ate_fim_jornada=? WHERE id_adicional_noturno=? AND fk_id_administrador=?" ); $query->execute(array( $config->getNomePeriodo(), $config->getHoraInicio(), $config->getHoraFim(), $config->getCodigoContabil(), $config->getFatorMinutos(), $config->getEstenderAteFimJornada(), $config->getIdAdicionalNoturno(), ADM_ID )); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function delete($id) { $query = $this->con->prepare("UPDATE pe_adicional_noturno_config SET ativo = 0 WHERE id_adicional_noturno = ? AND fk_id_administrador = ?"); $query->execute(array($id, ADM_ID)); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } } namespace FeriadoDao; use Feriado; use FeriadoGrupo; class FeriadoDao { public $con; function __construct($con) { $this->con = $con; } // ==================== CATALOGO ==================== public function listDataTable() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare( "SELECT * FROM pe_feriado_catalogo WHERE fk_id_administrador IN ($placeholders) AND ativo = 1 ORDER BY data DESC" ); $query->execute($admIds); return $query->fetchAll(); } public function listClass($id) { $obj = new Feriado\Feriado(); $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_feriado_catalogo WHERE fk_id_administrador IN ($placeholders) AND id_feriado_catalogo = ?"); $query->execute(array_merge($admIds, array($id))); $row = $query->fetch(); if ($row) $obj->arrayToFeriado($row); return $obj; } public function insertFeriado($feriado) { $query = $this->con->prepare( "INSERT INTO pe_feriado_catalogo (fk_id_administrador, descricao, data, tipo, recorrente, ativo) VALUES (?,?,?,?,?,?)" ); $query->execute(array( $feriado->getFkIdAdministrador(), $feriado->getDescricao(), $feriado->getData(), $feriado->getTipo(), $feriado->getRecorrente(), $feriado->getAtivo() )); return $query->rowCount() > 0 ? $this->con->lastInsertId() : false; } public function updateFeriado($feriado) { $query = $this->con->prepare( "UPDATE pe_feriado_catalogo SET descricao=?, data=?, tipo=?, recorrente=? WHERE id_feriado_catalogo=? AND fk_id_administrador=?" ); $query->execute(array( $feriado->getDescricao(), $feriado->getData(), $feriado->getTipo(), $feriado->getRecorrente(), $feriado->getIdFeriadoCatalogo(), ADM_ID )); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function deleteFeriado($id) { $query = $this->con->prepare("UPDATE pe_feriado_catalogo SET ativo = 0 WHERE id_feriado_catalogo = ? AND fk_id_administrador = ?"); $query->execute(array($id, ADM_ID)); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } // ==================== GRUPOS ==================== public function listGruposDataTable() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare( "SELECT g.*, (SELECT COUNT(*) FROM pe_feriado_grupo_item gi WHERE gi.fk_id_feriado_grupo = g.id_feriado_grupo) as qtd_feriados FROM pe_feriado_grupo g WHERE g.fk_id_administrador IN ($placeholders) AND g.ativo = 1 ORDER BY g.nome" ); $query->execute($admIds); return $query->fetchAll(); } public function listAllGruposClass() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $query = $this->con->prepare("SELECT * FROM pe_feriado_grupo WHERE fk_id_administrador IN ($placeholders) AND ativo = 1 ORDER BY nome"); $query->execute($admIds); $result = null; foreach ($query->fetchAll() as $row) { $obj = new FeriadoGrupo\FeriadoGrupo(); $obj->arrayToFeriadoGrupo($row); $result[] = $obj; } return $result; } public function listGrupoClass($id) { $obj = new FeriadoGrupo\FeriadoGrupo(); $query = $this->con->prepare("SELECT * FROM pe_feriado_grupo WHERE id_feriado_grupo = ? AND fk_id_administrador = ?"); $query->execute(array($id, ADM_ID)); $row = $query->fetch(); if ($row) $obj->arrayToFeriadoGrupo($row); return $obj; } public function insertGrupo($grupo) { $query = $this->con->prepare("INSERT INTO pe_feriado_grupo (fk_id_administrador, nome, descricao) VALUES (?,?,?)"); $query->execute(array($grupo->getFkIdAdministrador(), $grupo->getNome(), $grupo->getDescricao())); return $query->rowCount() > 0 ? $this->con->lastInsertId() : false; } public function updateGrupo($grupo) { $query = $this->con->prepare("UPDATE pe_feriado_grupo SET nome=?, descricao=? WHERE id_feriado_grupo=? AND fk_id_administrador=?"); $query->execute(array($grupo->getNome(), $grupo->getDescricao(), $grupo->getIdFeriadoGrupo(), ADM_ID)); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function deleteGrupo($id) { $query = $this->con->prepare("UPDATE pe_feriado_grupo SET ativo = 0 WHERE id_feriado_grupo = ? AND fk_id_administrador = ?"); $query->execute(array($id, ADM_ID)); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } // ==================== GRUPO ITENS ==================== public function listarFeriadosDoGrupo($idGrupo) { $query = $this->con->prepare( "SELECT fc.* FROM pe_feriado_catalogo fc INNER JOIN pe_feriado_grupo_item gi ON gi.fk_id_feriado_catalogo = fc.id_feriado_catalogo WHERE gi.fk_id_feriado_grupo = ? AND fc.ativo = 1 ORDER BY fc.data" ); $query->execute(array($idGrupo)); return $query->fetchAll(); } public function vincularFeriadoGrupo($idGrupo, $idFeriado) { $query = $this->con->prepare("INSERT IGNORE INTO pe_feriado_grupo_item (fk_id_feriado_grupo, fk_id_feriado_catalogo) VALUES (?,?)"); $query->execute(array($idGrupo, $idFeriado)); return 1; } public function desvincularFeriadoGrupo($idGrupo, $idFeriado) { $query = $this->con->prepare("DELETE FROM pe_feriado_grupo_item WHERE fk_id_feriado_grupo = ? AND fk_id_feriado_catalogo = ?"); $query->execute(array($idGrupo, $idFeriado)); return 1; } public function salvarFeriadosGrupo($idGrupo, $feriadoIds) { $del = $this->con->prepare("DELETE FROM pe_feriado_grupo_item WHERE fk_id_feriado_grupo = ?"); $del->execute(array($idGrupo)); if (!empty($feriadoIds)) { $ins = $this->con->prepare("INSERT INTO pe_feriado_grupo_item (fk_id_feriado_grupo, fk_id_feriado_catalogo) VALUES (?,?)"); foreach ($feriadoIds as $fid) { $ins->execute(array($idGrupo, $fid)); } } return 1; } // ==================== PARAMETROS ==================== public function obterParametros($idFeriado) { $query = $this->con->prepare("SELECT * FROM pe_feriado_parametro WHERE fk_id_feriado_catalogo = ? AND fk_id_administrador = ?"); $query->execute(array($idFeriado, ADM_ID)); return $query->fetch(); } public function salvarParametros($idFeriado, $ponte, $abono, $jornadaExc, $tipoHoraExc, $plantao) { $del = $this->con->prepare("DELETE FROM pe_feriado_parametro WHERE fk_id_feriado_catalogo = ? AND fk_id_administrador = ?"); $del->execute(array($idFeriado, ADM_ID)); $ins = $this->con->prepare( "INSERT INTO pe_feriado_parametro (fk_id_feriado_catalogo, fk_id_administrador, ponte, abono, fk_id_jornada_excepcional, fk_id_tipo_hora_excedente, plantao) VALUES (?,?,?,?,?,?,?)" ); $ins->execute(array($idFeriado, ADM_ID, $ponte, $abono, $jornadaExc ?: null, $tipoHoraExc ?: null, $plantao)); return 1; } // ==================== APLICACAO ==================== public function listarAplicacoes($idGrupo) { $query = $this->con->prepare( "SELECT fa.*, s.nome as nome_setor, j.nome_jornada, f.nome as nome_funcionario FROM pe_feriado_aplicacao fa LEFT JOIN pe_setor s ON s.id_setor = fa.fk_id_setor LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = fa.fk_id_jornada LEFT JOIN pe_funcionario f ON f.id_funcionario = fa.fk_id_funcionario WHERE fa.fk_id_feriado_grupo = ?" ); $query->execute(array($idGrupo)); return $query->fetchAll(); } public function inserirAplicacao($idGrupo, $idSetor, $idJornada, $idFuncionario) { $query = $this->con->prepare( "INSERT INTO pe_feriado_aplicacao (fk_id_feriado_grupo, fk_id_setor, fk_id_jornada, fk_id_funcionario) VALUES (?,?,?,?)" ); $query->execute(array($idGrupo, $idSetor ?: null, $idJornada ?: null, $idFuncionario ?: null)); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } public function excluirAplicacao($id) { $query = $this->con->prepare("DELETE FROM pe_feriado_aplicacao WHERE id_feriado_aplicacao = ?"); $query->execute(array($id)); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } // ==================== RESOLVER FERIADOS ==================== /** * Retorna feriados aplicaveis a um funcionario em uma data. */ public function obterFeriadosParaData($data, $admId, $setorId = null, $jornadaId = null, $funcionarioId = null) { $mes = date('m', strtotime($data)); $dia = date('d', strtotime($data)); $sql = "SELECT DISTINCT fc.*, fp.ponte, fp.abono, fp.fk_id_jornada_excepcional, fp.fk_id_tipo_hora_excedente, fp.plantao FROM pe_feriado_catalogo fc INNER JOIN pe_feriado_grupo_item fgi ON fgi.fk_id_feriado_catalogo = fc.id_feriado_catalogo INNER JOIN pe_feriado_grupo fg ON fg.id_feriado_grupo = fgi.fk_id_feriado_grupo AND fg.ativo = 1 INNER JOIN pe_feriado_aplicacao fa ON fa.fk_id_feriado_grupo = fg.id_feriado_grupo LEFT JOIN pe_feriado_parametro fp ON fp.fk_id_feriado_catalogo = fc.id_feriado_catalogo AND fp.fk_id_administrador = ? WHERE fc.fk_id_administrador = ? AND fc.ativo = 1 AND (fc.data = ? OR (fc.recorrente = 1 AND MONTH(fc.data) = ? AND DAY(fc.data) = ?)) AND (fa.fk_id_setor IS NULL" . ($setorId ? " OR fa.fk_id_setor = ?" : "") . ") AND (fa.fk_id_jornada IS NULL" . ($jornadaId ? " OR fa.fk_id_jornada = ?" : "") . ") AND (fa.fk_id_funcionario IS NULL" . ($funcionarioId ? " OR fa.fk_id_funcionario = ?" : "") . ")"; $params = array($admId, $admId, $data, $mes, $dia); if ($setorId) $params[] = $setorId; if ($jornadaId) $params[] = $jornadaId; if ($funcionarioId) $params[] = $funcionarioId; $query = $this->con->prepare($sql); $query->execute($params); return $query->fetchAll(); } // ==================== IMPORTAR NACIONAIS ==================== public function importarFeriadosNacionais($admId, $ano) { $nacionais = array( array('descricao' => 'Confraternização Universal', 'mes' => 1, 'dia' => 1), array('descricao' => 'Tiradentes', 'mes' => 4, 'dia' => 21), array('descricao' => 'Dia do Trabalho', 'mes' => 5, 'dia' => 1), array('descricao' => 'Independência do Brasil', 'mes' => 9, 'dia' => 7), array('descricao' => 'Nossa Senhora Aparecida', 'mes' => 10, 'dia' => 12), array('descricao' => 'Finados', 'mes' => 11, 'dia' => 2), array('descricao' => 'Proclamação da República', 'mes' => 11, 'dia' => 15), array('descricao' => 'Natal', 'mes' => 12, 'dia' => 25), ); // Feriados moveis (calcular para o ano) $pascoa = easter_date($ano); $carnaval = strtotime('-47 days', $pascoa); $sextaSanta = strtotime('-2 days', $pascoa); $corpusChristi = strtotime('+60 days', $pascoa); $nacionais[] = array('descricao' => 'Carnaval', 'mes' => intval(date('m', $carnaval)), 'dia' => intval(date('d', $carnaval))); $nacionais[] = array('descricao' => 'Sexta-feira Santa', 'mes' => intval(date('m', $sextaSanta)), 'dia' => intval(date('d', $sextaSanta))); $nacionais[] = array('descricao' => 'Corpus Christi', 'mes' => intval(date('m', $corpusChristi)), 'dia' => intval(date('d', $corpusChristi))); $inseridos = 0; $ins = $this->con->prepare( "INSERT INTO pe_feriado_catalogo (fk_id_administrador, descricao, data, tipo, recorrente, ativo) VALUES (?,?,?,?,?,?)" ); foreach ($nacionais as $f) { $data = sprintf('%04d-%02d-%02d', $ano, $f['mes'], $f['dia']); // Verificar se ja existe $check = $this->con->prepare( "SELECT id_feriado_catalogo FROM pe_feriado_catalogo WHERE fk_id_administrador = ? AND descricao = ? AND MONTH(data) = ? AND DAY(data) = ? AND tipo = 'nacional'" ); $check->execute(array($admId, $f['descricao'], $f['mes'], $f['dia'])); if ($check->rowCount() == 0) { $recorrente = (in_array($f['descricao'], array('Carnaval', 'Sexta-feira Santa', 'Corpus Christi'))) ? 0 : 1; $ins->execute(array($admId, $f['descricao'], $data, 'nacional', $recorrente, 1)); $inseridos++; } } return $inseridos; } } namespace TipoUsuario; class TipoUsuario { private $id_tipo_usuario; private $nome; private $tipo_global; private $fk_id_administrador; function __construct() { $this->id_tipo_usuario = NULL; $this->nome = NULL; $this->tipo_global = NULL; $this->fk_id_administrador = NULL; } public function arrayToTipoUsuario($array){ $this->id_tipo_usuario = isset($array['id_tipo_usuario']) ? $this->setIdTipoUsuario($array['id_tipo_usuario']) : NULL; $this->nome = isset($array['nome']) ? $this->setNome($array['nome']) : NULL; $this->tipo_global = isset($array['tipo_global']) ? $this->setTipoGlobal($array['tipo_global']) : NULL; $this->fk_id_administrador = isset($array['fk_id_administrador']) ? $this->setFkIdAdministrador($array['fk_id_administrador']) : NULL; } /** * Get the value of id_tipo_usuario */ public function getIdTipoUsuario() { return $this->id_tipo_usuario; } /** * Set the value of id_tipo_usuario */ public function setIdTipoUsuario($id_tipo_usuario): self { $this->id_tipo_usuario = $id_tipo_usuario; return $this; } /** * Get the value of nome */ public function getNome() { return $this->nome; } /** * Set the value of nome */ public function setNome($nome): self { $this->nome = $nome; return $this; } /** * Get the value of tipo_global */ public function getTipoGlobal() { return $this->tipo_global; } /** * Set the value of tipo_global */ public function setTipoGlobal($tipo_global): self { $this->tipo_global = $tipo_global; return $this; } /** * Get the value of fk_id_administrador */ public function getFkIdAdministrador() { return $this->fk_id_administrador; } /** * Set the value of fk_id_administrador */ public function setFkIdAdministrador($fk_id_administrador): self { $this->fk_id_administrador = $fk_id_administrador; return $this; } } namespace TipoUsuarioDao; use TipoUsuario\TipoUsuario; class TipoUsuarioDao { public $con; function __construct($con) { $this->con = $con; } public function listDataTable(){ $query = $this->con->prepare("SELECT * FROM pe_tipo_usuario WHERE fk_id_administrador = ? OR fk_id_administrador is null"); $query->execute(array(ADM_ID)); return $query->fetchAll(); } public function list($id_tipo_usuario){ $query = $this->con->prepare("SELECT * FROM pe_tipo_usuario WHERE id_tipo_usuario = ?"); $query->execute(array(ADM_ID, $id_tipo_usuario)); foreach($query->fetchAll() as $c){ $tipoUsers[] = new TipoUsuario(); $tipoUsers[count($tipoUsers) - 1]->arrayToTipoUsuario($c); } return ($query->rowCount()) ? $tipoUsers : null; } public function insert($tipoUser){ $query = $this->con->prepare("INSERT INTO pe_tipo_usuario(nome, fk_id_administrador) VALUES(?, ?)"); $query->execute(array($tipoUser->getNome(), $tipoUser->getFkIdAdministrador())); return $query->rowCount() > 0 ? 1 : $query->errorInfo(); } } namespace LimiteExcedenteDao; use LimiteExcedente\LimiteExcedente; class LimiteExcedenteDao { public $con; function __construct($con) { $this->con = $con; } public function listByJornada($idJornada) { $stmt = $this->con->prepare("SELECT * FROM pe_limite_excedente_jornada WHERE fk_id_jornada = ?"); $stmt->execute(array($idJornada)); $result = null; foreach ($stmt->fetchAll() as $row) { $obj = new LimiteExcedente(); $obj->arrayToLimiteExcedente($row); $result[] = $obj; } return $result; } public function insert($limite) { $stmt = $this->con->prepare("INSERT INTO pe_limite_excedente_jornada (fk_id_jornada, fk_id_tipo_hora, limite_mensal_minutos, acao_excedente, fk_id_tipo_hora_conversao, fk_id_administrador) VALUES (?, ?, ?, ?, ?, ?)"); $stmt->execute(array( $limite->getFkIdJornada(), $limite->getFkIdTipoHora(), $limite->getLimiteMensalMinutos(), $limite->getAcaoExcedente(), $limite->getFkIdTipoHoraConversao() ?: null, $limite->getFkIdAdministrador() )); return $stmt->rowCount() > 0 ? $this->con->lastInsertId() : $stmt->errorInfo(); } public function deleteByJornada($idJornada) { $stmt = $this->con->prepare("DELETE FROM pe_limite_excedente_jornada WHERE fk_id_jornada = ?"); $stmt->execute(array($idJornada)); return true; } public function saveForJornada($idJornada, $limites, $admId) { $this->deleteByJornada($idJornada); if (!$limites || !is_array($limites)) return true; foreach ($limites as $lim) { $obj = new LimiteExcedente(); $obj->setFkIdJornada($idJornada); $obj->setFkIdTipoHora($lim['fk_id_tipo_hora']); $obj->setLimiteMensalMinutos(intval($lim['limite_mensal_minutos'])); $obj->setAcaoExcedente($lim['acao_excedente']); $obj->setFkIdTipoHoraConversao(isset($lim['fk_id_tipo_hora_conversao']) && $lim['fk_id_tipo_hora_conversao'] ? $lim['fk_id_tipo_hora_conversao'] : null); $obj->setFkIdAdministrador($admId); $this->insert($obj); } return true; } } namespace RegraCalculoDao; use RegraCalculo\RegraCalculo; class RegraCalculoDao { public $con; function __construct($con) { $this->con = $con; } public function listAll() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $stmt = $this->con->prepare("SELECT rc.*, j.nome_jornada, dc.nome as dsr_nome, anc.nome_periodo as noturno_nome, fg.nome as feriado_grupo_nome FROM pe_regra_calculo rc LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = rc.fk_id_jornada LEFT JOIN pe_dsr_config dc ON dc.id_dsr_config = rc.fk_id_dsr_config LEFT JOIN pe_adicional_noturno_config anc ON anc.id_adicional_noturno = rc.fk_id_adicional_noturno_config LEFT JOIN pe_feriado_grupo fg ON fg.id_feriado_grupo = rc.fk_id_feriado_grupo WHERE rc.fk_id_administrador IN ($placeholders) AND rc._delete <> 1"); $stmt->execute($admIds); $result = null; foreach ($stmt->fetchAll() as $row) { $obj = new RegraCalculo(); $obj->arrayToRegraCalculo($row); $result[] = $obj; } return $result; } public function listDataTable() { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $stmt = $this->con->prepare("SELECT rc.*, j.nome_jornada, dc.nome as dsr_nome, anc.nome_periodo as noturno_nome, fg.nome as feriado_grupo_nome FROM pe_regra_calculo rc LEFT JOIN pe_jornada j ON j.id_jornada_trabalho = rc.fk_id_jornada LEFT JOIN pe_dsr_config dc ON dc.id_dsr_config = rc.fk_id_dsr_config LEFT JOIN pe_adicional_noturno_config anc ON anc.id_adicional_noturno = rc.fk_id_adicional_noturno_config LEFT JOIN pe_feriado_grupo fg ON fg.id_feriado_grupo = rc.fk_id_feriado_grupo WHERE rc.fk_id_administrador IN ($placeholders) AND rc._delete <> 1"); $stmt->execute($admIds); return $stmt->fetchAll(); } public function list($id) { $admIds = obterIdsAdministrador(); $placeholders = buildInPlaceholders($admIds); $stmt = $this->con->prepare("SELECT * FROM pe_regra_calculo WHERE id_regra_calculo = ? AND fk_id_administrador IN ($placeholders) AND _delete <> 1"); $stmt->execute(array_merge(array($id), $admIds)); if ($stmt->rowCount() > 0) { $obj = new RegraCalculo(); $obj->arrayToRegraCalculo($stmt->fetch()); return $obj; } return null; } public function insert($regra) { $stmt = $this->con->prepare("INSERT INTO pe_regra_calculo (fk_id_administrador, nome, fk_id_jornada, fk_id_dsr_config, fk_id_adicional_noturno_config, fk_id_feriado_grupo, banco_horas_ativo, banco_horas_limite_mensal_minutos, banco_horas_validade_meses, tolerancia_minutos, tolerancia_registros_minutos, tolerancia_total_dia_minutos, politica_tolerancia, observacoes) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $stmt->execute(array( $regra->getFkIdAdministrador(), $regra->getNome(), $regra->getFkIdJornada() ?: null, $regra->getFkIdDsrConfig() ?: null, $regra->getFkIdAdicionalNoturnoConfig() ?: null, $regra->getFkIdFeriadoGrupo() ?: null, $regra->getBancoHorasAtivo(), $regra->getBancoHorasLimiteMensalMinutos() ?: null, $regra->getBancoHorasValidadeMeses() !== null && $regra->getBancoHorasValidadeMeses() !== '' ? intval($regra->getBancoHorasValidadeMeses()) : null, $regra->getToleranciaTotalDiaMinutos() !== null ? intval($regra->getToleranciaTotalDiaMinutos()) : intval($regra->getToleranciaMinutos()), $regra->getToleranciaRegistrosMinutos() !== null ? intval($regra->getToleranciaRegistrosMinutos()) : 5, $regra->getToleranciaTotalDiaMinutos() !== null ? intval($regra->getToleranciaTotalDiaMinutos()) : 10, $regra->getPoliticaTolerancia() ?: 'tudo_ou_nada', $regra->getObservacoes() ?: null )); return $stmt->rowCount() > 0 ? $this->con->lastInsertId() : $stmt->errorInfo(); } public function update($regra) { $stmt = $this->con->prepare("UPDATE pe_regra_calculo SET nome = ?, fk_id_jornada = ?, fk_id_dsr_config = ?, fk_id_adicional_noturno_config = ?, fk_id_feriado_grupo = ?, banco_horas_ativo = ?, banco_horas_limite_mensal_minutos = ?, banco_horas_validade_meses = ?, tolerancia_minutos = ?, tolerancia_registros_minutos = ?, tolerancia_total_dia_minutos = ?, politica_tolerancia = ?, observacoes = ? WHERE id_regra_calculo = ?"); $stmt->execute(array( $regra->getNome(), $regra->getFkIdJornada() ?: null, $regra->getFkIdDsrConfig() ?: null, $regra->getFkIdAdicionalNoturnoConfig() ?: null, $regra->getFkIdFeriadoGrupo() ?: null, $regra->getBancoHorasAtivo(), $regra->getBancoHorasLimiteMensalMinutos() ?: null, $regra->getBancoHorasValidadeMeses() !== null && $regra->getBancoHorasValidadeMeses() !== '' ? intval($regra->getBancoHorasValidadeMeses()) : null, $regra->getToleranciaTotalDiaMinutos() !== null ? intval($regra->getToleranciaTotalDiaMinutos()) : intval($regra->getToleranciaMinutos()), $regra->getToleranciaRegistrosMinutos() !== null ? intval($regra->getToleranciaRegistrosMinutos()) : 5, $regra->getToleranciaTotalDiaMinutos() !== null ? intval($regra->getToleranciaTotalDiaMinutos()) : 10, $regra->getPoliticaTolerancia() ?: 'tudo_ou_nada', $regra->getObservacoes() ?: null, $regra->getIdRegraCalculo() )); return $stmt->rowCount() >= 0 ? true : $stmt->errorInfo(); } public function delete($id) { $stmt = $this->con->prepare("UPDATE pe_regra_calculo SET _delete = 1 WHERE id_regra_calculo = ? AND fk_id_administrador = ?"); $stmt->execute(array($id, ADM_ID)); return $stmt->rowCount() > 0 ? true : $stmt->errorInfo(); } // --- Vinculos --- public function vincular($regraId, $funcionarioId, $contratoId, $dataInicio, $dataFim = null) { // Desativar vinculos anteriores do mesmo funcionario/contrato if ($funcionarioId) { $stmt = $this->con->prepare("UPDATE pe_regra_calculo_vinculo SET ativo = 0, data_fim = ? WHERE fk_id_funcionario = ? AND ativo = 1 AND data_fim IS NULL"); $stmt->execute(array($dataInicio, $funcionarioId)); } if ($contratoId) { $stmt = $this->con->prepare("UPDATE pe_regra_calculo_vinculo SET ativo = 0, data_fim = ? WHERE fk_id_contrato = ? AND ativo = 1 AND data_fim IS NULL"); $stmt->execute(array($dataInicio, $contratoId)); } $stmt = $this->con->prepare("INSERT INTO pe_regra_calculo_vinculo (fk_id_regra_calculo, fk_id_funcionario, fk_id_contrato, data_inicio, data_fim, ativo) VALUES (?, ?, ?, ?, ?, 1)"); $stmt->execute(array( $regraId, $funcionarioId ?: null, $contratoId ?: null, $dataInicio, $dataFim ?: null )); return $stmt->rowCount() > 0 ? $this->con->lastInsertId() : $stmt->errorInfo(); } public function desvincular($vinculoId, $dataFim) { $stmt = $this->con->prepare("UPDATE pe_regra_calculo_vinculo SET ativo = 0, data_fim = ? WHERE id_vinculo = ?"); $stmt->execute(array($dataFim, $vinculoId)); return true; } public function obterRegraVigente($funcionarioId, $data, $contratoId = null) { $sql = "SELECT rc.* FROM pe_regra_calculo rc JOIN pe_regra_calculo_vinculo rcv ON rcv.fk_id_regra_calculo = rc.id_regra_calculo WHERE rcv.ativo = 1 AND rcv.data_inicio <= ? AND (rcv.data_fim IS NULL OR rcv.data_fim >= ?) AND rc._delete <> 1"; $params = array($data, $data); if ($contratoId) { $sql .= " AND (rcv.fk_id_funcionario = ? OR rcv.fk_id_contrato = ?)"; $params[] = $funcionarioId; $params[] = $contratoId; } else { $sql .= " AND rcv.fk_id_funcionario = ?"; $params[] = $funcionarioId; } $sql .= " ORDER BY rcv.data_inicio DESC LIMIT 1"; $stmt = $this->con->prepare($sql); $stmt->execute($params); if ($stmt->rowCount() > 0) { $obj = new RegraCalculo(); $obj->arrayToRegraCalculo($stmt->fetch()); return $obj; } return null; } public function obterVinculosPorFuncionario($funcionarioId) { $stmt = $this->con->prepare("SELECT rcv.*, rc.nome as regra_nome FROM pe_regra_calculo_vinculo rcv JOIN pe_regra_calculo rc ON rc.id_regra_calculo = rcv.fk_id_regra_calculo WHERE rcv.fk_id_funcionario = ? ORDER BY rcv.data_inicio DESC"); $stmt->execute(array($funcionarioId)); return $stmt->fetchAll(); } public function obterVinculosPorContrato($contratoId) { $stmt = $this->con->prepare("SELECT rcv.*, rc.nome as regra_nome FROM pe_regra_calculo_vinculo rcv JOIN pe_regra_calculo rc ON rc.id_regra_calculo = rcv.fk_id_regra_calculo WHERE rcv.fk_id_contrato = ? ORDER BY rcv.data_inicio DESC"); $stmt->execute(array($contratoId)); return $stmt->fetchAll(); } // --- Historico --- public function registrarAlteracao($vinculoId, $campo, $antes, $depois, $userId) { $stmt = $this->con->prepare("INSERT INTO pe_regra_calculo_historico (fk_id_regra_calculo_vinculo, campo_alterado, valor_anterior, valor_novo, alterado_por) VALUES (?, ?, ?, ?, ?)"); $stmt->execute(array($vinculoId, $campo, $antes, $depois, $userId)); return true; } public function obterHistorico($vinculoId) { $stmt = $this->con->prepare("SELECT * FROM pe_regra_calculo_historico WHERE fk_id_regra_calculo_vinculo = ? ORDER BY alterado_em DESC"); $stmt->execute(array($vinculoId)); return $stmt->fetchAll(); } } namespace FolhaPontoResumo; class FolhaPontoResumo { private $id; private $fk_id_funcionario; private $data; private $h_trabalhadas; private $h_noturnas; private $saldo_dia; private $he_noturna; private $he_50; private $he_100; private $fk_id_jornada_trabalho; function __construct($array = []) { $this->id = $array['id']; $this->h_trabalhadas = $array['h_trabalhadas']; $this->h_noturnas = $array['h_noturnas']; $this->saldo_dia = $array['saldo_dia']; $this->he_noturna = $array['he_noturna']; $this->he_50 = $array['he_50']; $this->he_100 = $array['he_100']; $this->fk_id_funcionario = $array['fk_id_funcionario']; $this->fk_id_jornada_trabalho = $array['fk_id_jornada_trabalho']; $this->data = $array['data']; } /** * Get the value of fk_id_jornada_trabalho */ public function getFkIdJornadaTrabalho() { return $this->fk_id_jornada_trabalho; } /** * Set the value of fk_id_jornada_trabalho */ public function setFkIdJornadaTrabalho($fk_id_jornada_trabalho): self { $this->fk_id_jornada_trabalho = $fk_id_jornada_trabalho; return $this; } /** * Get the value of he_100 */ public function getHe100() { return $this->he_100; } /** * Set the value of he_100 */ public function setHe100($he_100): self { $this->he_100 = $he_100; return $this; } /** * Get the value of he_noturna */ public function getHeNoturna() { return $this->he_noturna; } /** * Set the value of he_noturna */ public function setHeNoturna($he_noturna): self { $this->he_noturna = $he_noturna; return $this; } /** * Get the value of saldo_dia */ public function getSaldoDia() { return $this->saldo_dia; } /** * Set the value of saldo_dia */ public function setSaldoDia($saldo_dia): self { $this->saldo_dia = $saldo_dia; return $this; } /** * Get the value of h_noturnas */ public function getHNoturnas() { return $this->h_noturnas; } /** * Set the value of h_noturnas */ public function setHNoturnas($h_noturnas): self { $this->h_noturnas = $h_noturnas; return $this; } /** * Get the value of h_trabalhadas */ public function getHTrabalhadas() { return $this->h_trabalhadas; } /** * Set the value of h_trabalhadas */ public function setHTrabalhadas($h_trabalhadas): self { $this->h_trabalhadas = $h_trabalhadas; return $this; } /** * Get the value of fk_id_funcionario */ public function getFkIdFuncionario() { return $this->fk_id_funcionario; } /** * Set the value of fk_id_funcionario */ public function setFkIdFuncionario($fk_id_funcionario): self { $this->fk_id_funcionario = $fk_id_funcionario; return $this; } /** * Get the value of id */ public function getId() { return $this->id; } /** * Set the value of id */ public function setId($id): self { $this->id = $id; return $this; } /** * Get the value of he_50 */ public function getHe50() { return $this->he_50; } /** * Set the value of he_50 */ public function setHe50($he_50): self { $this->he_50 = $he_50; return $this; } public function arrayToFolhaPontoResumo($array) { isset($array['id']) ? $this->setId($array['id']) : NULL; isset($array['h_trabalhadas']) ? $this->setHTrabalhadas($array['h_trabalhadas']) : NULL; isset($array['h_noturnas']) ? $this->setHeNoturna($array['h_noturnas']) : NULL; isset($array['saldo_dia']) ? $this->setSaldoDia($array['saldo_dia']) : NULL; isset($array['he_noturna']) ? $this->setHNoturnas($array['he_noturna']) : NULL; isset($array['he_50']) ? $this->setHe50($array['he_50']) : NULL; isset($array['he_100']) ? $this->setHe100($array['he_100']) : NULL; isset($array['fk_id_funcionario']) ? $this->setFkIdFuncionario($array['fk_id_funcionario']) : NULL; isset($array['fk_id_jornada_trabalho']) ? $this->setFkIdJornadaTrabalho($array['fk_id_jornada_trabalho']) : NULL; isset($array['data']) ? $this->setData($array['data']) : NULL; return $this; } /** * Get the value of data */ public function getData() { return $this->data; } /** * Set the value of data */ public function setData($data): self { $this->data = $data; return $this; } } namespace FolhaPontoResumoDao; use FolhaPontoResumo\FolhaPontoResumo; class FolhaPontoResumoDao { public $con; function __construct($con) { $this->con = $con; } public function list($id_funcionario, $data) { $consultaFolhaPontoResumo = $this->con->prepare("SELECT * FROM pe_folha_ponto_resumo WHERE fk_id_funcionario=? and data LIKE ?"); $consultaFolhaPontoResumo->execute(array($id_funcionario, "%$data%")); $folhaPontoResumo = new FolhaPontoResumo(); $folhas = []; if ($consultaFolhaPontoResumo->rowCount() > 0) foreach ($consultaFolhaPontoResumo->fetchAll() as $folha) { $folhas[] = new FolhaPontoResumo(); $folhas[count($folhas) - 1]->arrayToFolhaPontoResumo($folha); } if ($folhas) return $folhas; } public function insert(FolhaPontoResumo $folhaPontoResumo) { $consultaFolhaPontoResumo = $this->con->prepare("INSERT INTO pe_folha_ponto_resumo (fk_id_funcionario,data,h_trabalhadas,h_noturnas,saldo_dia,he_noturna,he_50,he_100,fk_id_jornada_trabalho) VALUES(?,?,?,?,?,?,?,?,?)"); $consultaFolhaPontoResumo->execute(array($folhaPontoResumo->getFkIdFuncionario(), $folhaPontoResumo->getData(), $folhaPontoResumo->getHTrabalhadas(), $folhaPontoResumo->getHNoturnas(), $folhaPontoResumo->getSaldoDia(), $folhaPontoResumo->getHe50(), $folhaPontoResumo->getHe100(), $folhaPontoResumo->getFkIdJornadaTrabalho())); $folhaPontoResumo = $this->con->lastInsertId(); if ($consultaFolhaPontoResumo->rowCount() > 0) { return $this; } return false; } public function delete(FolhaPontoResumo $folhaPontoResumo) { $consultaFolhaPontoResumo = $this->con->prepare("DELETE pe_folha_ponto_resumo WHERE data=? and fk_id_funcionario=?"); $consultaFolhaPontoResumo->execute(array($folhaPontoResumo->getData(), $folhaPontoResumo->getFkIdFuncionario())); if ($consultaFolhaPontoResumo->rowCount() > 0) return true; return false; } }