/** * @throws EntityValidationException * @return void */ public function sell() { if ($this->SoldOut()) { throw new EntityValidationException(EntityValidationException::buildMessage('Sold Out')); } $this->CurrentlyAvailable -= 1; }
/** * @param $purchase_order_id * @param IMessageSenderService $rejected_purchase_order_message_sender * @throws EntityValidationException * @throws NotFoundEntityException * @return void */ public function rejectPurchaseOrder($purchase_order_id, IMessageSenderService $rejected_purchase_order_message_sender) { $repository = $this->repository; $this->tx_manager->transaction(function () use($purchase_order_id, $repository, $rejected_purchase_order_message_sender) { $purchase_order = $repository->getById($purchase_order_id); if (is_null($purchase_order)) { throw new NotFoundEntityException('SummitPackagePurchaseOrder', sprintf('id %d', $purchase_order_id)); } if ($purchase_order->isApproved()) { throw new EntityValidationException(EntityValidationException::buildMessage(sprintf('order id %s is already approved!', $purchase_order_id))); } if ($purchase_order->isRejected()) { throw new EntityValidationException(EntityValidationException::buildMessage(sprintf('order id %s is already rejected!', $purchase_order_id))); } $purchase_order->reject($rejected_purchase_order_message_sender); }); }
/** * @param ISummit $summit * @param ISummitEvent $event * @return mixed */ public function unpublishEvent(ISummit $summit, ISummitEvent $event) { $event_repository = $this->event_repository; return $this->tx_service->transaction(function () use($summit, $event, $event_repository) { if (intval($event->SummitID) !== intval($summit->getIdentifier())) { throw new EntityValidationException(EntityValidationException::buildMessage('event doest not belongs to summit')); } $event->unPublish(); return $event; }); }