nineskeletor/src/Repository/CronRepository.php

50 lines
1.4 KiB
PHP
Raw Normal View History

2022-07-21 16:15:47 +02:00
<?php
namespace App\Repository;
use App\Entity\Cron;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
class CronRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Cron::class);
}
public function add(Cron $entity, bool $flush = false): void
{
$this->getEntityManager()->persist($entity);
if ($flush) {
$this->getEntityManager()->flush();
}
}
public function remove(Cron $entity, bool $flush = false): void
{
$this->getEntityManager()->remove($entity);
if ($flush) {
$this->getEntityManager()->flush();
}
}
2022-07-21 16:15:47 +02:00
public function toExec()
{
// Les commandes à executer
// = statut = 0 (à executer)
// = statut = 2 (OK) et derniere execution + interval > now et nombre d'appel = 0
// = statut = 3 (KO) et derniere execution + interval > now et nombre d'appel = 0
// = statut = 3 (KO) et nombre d'execution < nombre d'appel
$now = new \DateTime();
2022-07-21 16:15:47 +02:00
$qb = $this->createQueryBuilder('cron')
2022-07-22 15:35:04 +02:00
->Where('(cron.statut=0 OR cron.statut=1) AND cron.nextexecdate<:now');
2022-07-21 16:15:47 +02:00
return $qb->getQuery()->setParameter('now', $now->format('Y-m-d H:i:s'))->getResult();
2022-07-21 16:15:47 +02:00
}
}