public function getByRange(Profissional $pProf, Periodo $pPeriodo) { try { $ObjInicio = new DateTime($pPeriodo->getInicial()); $ObjFim = new DateTime($pPeriodo->getFinal()); $sql = "SELECT hf.data, DAYNAME(hf.data) as dia, hf.entrada, hf.almoco,\n hf.retorno, hf.saida, hf.total, hf.h_50, hf.h_100\n FROM hor_frequencia hf INNER JOIN profs_funcoes pf\n ON (hf.cod_prof_funcao = pf.codigo)\n WHERE pf.codigo = " . $pProf->getCodProfFuncao() . " AND hf.data BETWEEN '" . $ObjInicio->format('Y-m-d') . "'\n AND '" . $ObjFim->format('Y-m-d') . "';"; $row = parent::obterRecordSet($sql); // insere os dias de falta, finais de semana // feriados e ocorr�ncias na frequencia //**$ObjTd = new Data(); $j = 0; while ($ObjInicio <= $ObjFim) { $oReg = new Registro(); $oData = new DateTime($row[$j]["data"]); $oReg->setData($oData->format("d-m-Y")); if ($oData->format('d/m/Y') == $ObjInicio->format('d/m/Y')) { //$reg->setDiaDaSemana($row[$j][dia]); $oReg->setDiaDaSemana(Data::getTipoDia($oData)); $oReg->setEntradaManha($row[$j]["entrada"]); $oReg->setSaidaManha($row[$j]["almoco"]); $oReg->setEntradaTarde($row[$j]["retorno"]); $oReg->setSaidaTarde($row[$j]["saida"]); $oReg->setEntradaNoite('-'); $oReg->setSaidaNoite('-'); $oReg->setTotal($row[$j]["total"]); $oReg->setExtra50($row[$j]["h_50"]); $oReg->setExtra100($row[$j]["h_100"]); if ($j < count($row) - 1) { $j++; } } else { // checa o motivo da falta de registro, // pode ser final de semana, feriado, // ou alguma outra ocorrencia como // atestado, licen�a etc, etc. $oReg->setData($ObjInicio->format('d-m-Y')); $oReg->setDiaDaSemana(Data::getTipoDia($ObjInicio)); $oReg->setEntradaManha('-'); $oReg->setSaidaManha('-'); $oReg->setEntradaTarde('-'); $oReg->setSaidaTarde('-'); $oReg->setEntradaNoite('-'); $oReg->setSaidaNoite('-'); $oReg->setTotal(0); $oReg->setExtra50(0); $oReg->setExtra100(0); } $ObjInicio->modify("+1 day"); $ret[] = $oReg; } return $ret; } catch (Exception $e) { throw new Exception($e->getTraceAsString()); } }