<?php

namespace Cadoles\CronBundle\Repository;

use Doctrine\ORM\EntityRepository;

class CronRepository extends EntityRepository
{
    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();

        $qb = $this->createQueryBuilder('cron')
            ->Where('cron.statut=0')
            ->orWhere('cron.statut=2 AND cron.nextexecdate<:now AND cron.repeatcall=0')
            ->orWhere('cron.statut=3 AND cron.nextexecdate<:now AND cron.repeatcall=0') 
            ->orWhere('cron.statut=3 AND cron.nextexecdate<:now AND cron.repeatcall>cron.repeatexec');

        return $qb->getQuery()->setParameter('now',$now->format("Y-m-d H:i:s"))->getResult();  
    }          
}
