State change on first offer received. ('Open4Offers' == $jobRecord->jobState) && $this->workflowNode->changeState('This.UpdateableOffers'); #-> Get offer statistics. $stats = $this->em->createQuery( 'SELECT COUNT(offer.id) AS numOffres, MAX(offer.amount) AS maxOffer ' .'FROM \PriceGuide\Entity\Offer offer ' .'WHERE IDENTITY(offer.priceGuideStock) = :jobId' ) ->setParameter('jobId', $jobRecord->id) ->getSingleResult(); #-> Update stock item with statistics. $stockService = new \Stock\Service\Stock(); $stockService->setWorkflow(new \Stock\Workflow()); $stockService->update($jobRecord->stock->id, array( 'numberOfOffers' => $stats['numOffres'], 'highestOffer' => $stats['maxOffer'] )); } /** * ExecuteAfter: Archive. * Change status to Archived. * @param array $meta * @param object|null $jobRecord * @param object|null $record * @param \Workspace\Utility\ServiceInputParams $contract * @return array */ public function archive($meta, $jobRecord, $record, \Workspace\Utility\ServiceInputParams $contract) { #-> Change status of offer. $record->previousStatus = $record->status; $record->status = 'Archived'; $this->em->flush(); } /** * ExecuteAfter: Unarchive. * Change status to previous status. * @param array $meta * @param object|null $jobRecord * @param object|null $record * @param \Workspace\Utility\ServiceInputParams $contract * @return array */ public function unarchive($meta, $jobRecord, $record, \Workspace\Utility\ServiceInputParams $contract) { #-> Change status of offer. $record->status = $record->previousStatus; $record->previousStatus = 'Archived'; $this->em->flush(); } }