<?php
namespace Rapsys\AirBundle\Command;
use Doctrine\Bundle\DoctrineBundle\Command\DoctrineCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Rapsys\AirBundle\Entity\Session;
class AttributeCommand extends DoctrineCommand {
//Set failure constant
const FAILURE = 1;
///Set success constant
const SUCCESS = 0;
///Configure attribute command
protected function configure() {
//Configure the class
$this
//Set name
->setName('rapsysair:attribute')
//Set description shown with bin/console list
->setDescription('Attribute sessions')
//Set description shown with bin/console --help airlibre:attribute
->setHelp('This command attribute sessions without application');
}
///Process the attribution
protected function execute(InputInterface $input, OutputInterface $output) {
//Fetch doctrine
$doctrine = $this->getDoctrine();
//Get manager
$manager = $doctrine->getManager();
//Fetch sessions to attribute
$sessions = $doctrine->getRepository(Session::class)->findAllPendingApplication();
//Iterate on each session
foreach($sessions as $sessionId => $session) {
//Extract session id
if (!empty($sessionId)) {
//Fetch application id of the best candidate
if (!empty($application = $doctrine->getRepository(Session::class)->findBestApplicationById($sessionId))) {
//Set updated
$session->setUpdated(new \DateTime('now'));
//Set application_id
$session->setApplication($application);
//Queue session save
$manager->persist($session);
}
}
}
//Flush to get the ids
$manager->flush();
//Return success
return self::SUCCESS;
}
}