em = $em; parent::__construct(); } protected function configure() { $this->setName('joborder:fulfill_pending') ->setDescription('Fulfill pending job orders so hubs/outlets can be available again.') ->setHelp('Mark old pending job orders as fulfilled. Allocate placeholder rider and fulfill the job order. 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::RIDER_ASSIGN) ->setParameter('date', $date); $query = $qb->getQuery(); $res = $query->getResult(); // get user $user = $em->getRepository(User::class)->find(1); // TODO: get placeholder rider // fulfill each foreach ($res as $jo) { echo 'fulfilling job order ' . $jo->getID() . "\n"; // TODO: assign placeholder rider // 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; } }