em = $em; parent::__construct(); } protected function configure() { $this->setName('joborder:fulfill_assigned') ->setDescription('Fulfill assigned job orders so riders can be available again.') ->setHelp('Mark old assigned job orders as fulfilled. Have to make it a script so it goes through the same process as the controller'); } protected function execute(InputInterface $input, OutputInterface $output) { // get entity manager $em = $this->em; $date = new DateTime('2018-07-24'); $qb = $em->getRepository(JobOrder::class) ->createQueryBuilder('j'); // get all job orders that are assigned before scheduled date (inclusive) $qb->select('j') ->where('j.status = :status') ->andWhere('j.date_schedule <= :date') ->setParameter('status', JOStatus::ASSIGNED) ->setParameter('date', $date); $query = $qb->getQuery(); $res = $query->getResult(); // get user $user = $em->getRepository(User::class)->find(1); // fulfill each foreach ($res as $jo) { echo 'fulfilling job order ' . $jo->getID() . "\n"; // fulfill $jo->fulfill(); // add event $event = new JOEvent(); $event->setDateHappen(new DateTime()) ->setTypeID(JOEventType::FULFILL) ->setUser($user) ->setJobOrder($jo); $em->persist($event); } $em->flush(); return 0; } }