/**
  *
  * @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());
     }
 }
Exemple #2
0
 /**
  *
  * @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;
     }
 }
Exemple #3
0
 /**
  * Remove registros
  *
  * @param \Gficr\CoreBundle\Entity\RegistroEntradaSalida $registros
  */
 public function removeRegistro(\Gficr\CoreBundle\Entity\RegistroEntradaSalida $registros)
 {
     $this->registros->removeElement($registros);
 }