/** * * @param type $idTrabajador * @param \DateTime $date * @param type $estado * @return type * @throws \Exception */ public function beginWork($idTrabajador, \DateTime $date, $status, $working = true) { try { //Evalúa el estado del trabajador $registro = $this->getWorkerStatus($idTrabajador); if ($registro) { // En caso de existir un registro modificar sus valores // adaptándolo a las nuevas variables $registro->setEntrada($date); $registro->setEstadoEntrada($status); $registro->setTrabajando($working); } else { // En caso de no existir el registro se procede a crear uno nuevo $trabajador = $this->trabajadorManager->getTrabajador($idTrabajador); $registro = new RegistroEntradaSalida(); $registro->setTrabajador($trabajador); $registro->setEntrada($date); $registro->setEstadoEntrada($status); $registro->setTrabajando($working); } $this->persist($registro); $this->flush(); } catch (NoResultException $nre) { //echo $nre->getTraceAsString(); throw new \Exception($nre->getMessage()); } }
/** * * @param type $registro * @param type $trabajador * @return boolean */ public function evaluateWorkerEndMiss(RegistroEntradaSalida $registro, Trabajador $trabajador) { $horario = $trabajador->getHorario(); $worker_start = $registro->getEntrada(); $real_start = $this->horarioManager->getStart($horario->getId(), $worker_start); $exit = $this->horarioManager->getEnd($horario->getId(), $real_start); $actual = new \DateTime('now'); $actual->setTimezone(new \DateTimeZone($horario->getTimeZone())); if ($this->horarioManager->equalDates($actual, $exit)) { $eval = $this->horarioManager->evaluateTime($horario->getId(), $actual, false); if ($eval) { $this->registroManager->endWork($trabajador->getId(), $actual, 'not_mark'); return true; } return false; } }
/** * Remove registros * * @param \Gficr\CoreBundle\Entity\RegistroEntradaSalida $registros */ public function removeRegistro(\Gficr\CoreBundle\Entity\RegistroEntradaSalida $registros) { $this->registros->removeElement($registros); }