2 namespace PriceGuide\Service;
10 class Offer extends \PriceGuide\DataBin\Offer
15 * ExecuteAfter: Create, Update.
16 * Change job status if needed and update stock entry with offer data.
18 * @param object|null $jobRecord
19 * @param object|null $record
20 * @param \Workspace\Utility\ServiceInputParams $contract
23 public function updateStatusAndStock($meta, $jobRecord, $record, \Workspace\Utility\ServiceInputParams $contract)
25 #-> State change on first offer received.
26 ('Open4Offers' == $jobRecord->jobState)
27 && $this->workflowNode->changeState('This.UpdateableOffers');
29 #-> Get offer statistics.
30 $stats = $this->em->createQuery(
31 'SELECT COUNT(offer.id) AS numOffres, MAX(offer.amount) AS maxOffer '
32 .'FROM \PriceGuide\Entity\Offer offer '
33 .'WHERE IDENTITY(offer.priceGuideStock) = :jobId'
35 ->setParameter('jobId', $jobRecord->id)
38 #-> Update stock item with statistics.
39 $stockService = new \Stock\Service\Stock();
40 $stockService->setWorkflow(new \Stock\Workflow());
41 $stockService->update($jobRecord->stock->id, array(
42 'numberOfOffers' => $stats['numOffres'],
43 'highestOffer' => $stats['maxOffer']
48 * ExecuteAfter: Archive.
49 * Change status to Archived.
51 * @param object|null $jobRecord
52 * @param object|null $record
53 * @param \Workspace\Utility\ServiceInputParams $contract
56 public function archive($meta, $jobRecord, $record, \Workspace\Utility\ServiceInputParams $contract)
58 #-> Change status of offer.
59 $record->previousStatus = $record->status;
60 $record->status = 'Archived';
65 * ExecuteAfter: Unarchive.
66 * Change status to previous status.
68 * @param object|null $jobRecord
69 * @param object|null $record
70 * @param \Workspace\Utility\ServiceInputParams $contract
73 public function unarchive($meta, $jobRecord, $record, \Workspace\Utility\ServiceInputParams $contract)
75 #-> Change status of offer.
76 $record->status = $record->previousStatus;
77 $record->previousStatus = 'Archived';