/** * Delete a sale * * @param SaleDeleteEvent $event * @param $eventName * @param EventDispatcherInterface $dispatcher * @throws \Propel\Runtime\Exception\PropelException */ public function delete(SaleDeleteEvent $event, $eventName, EventDispatcherInterface $dispatcher) { if (null !== ($sale = SaleQuery::create()->findPk($event->getSaleId()))) { $con = Propel::getWriteConnection(SaleTableMap::DATABASE_NAME); $con->beginTransaction(); try { // Update related products sale status, if required if ($sale->getActive()) { $sale->setActive(false); // Update related products sale status $dispatcher->dispatch(TheliaEvents::UPDATE_PRODUCT_SALE_STATUS, new ProductSaleStatusUpdateEvent($sale)); } $sale->setDispatcher($dispatcher)->delete($con); $event->setSale($sale); $con->commit(); } catch (PropelException $e) { $con->rollback(); throw $e; } } }
public function testDeleteSale() { $sale = $this->getRandomSale(); $event = new SaleDeleteEvent($sale->getId()); $event->setDispatcher($this->dispatcher); $saleAction = new Sale($this->getContainer()); $saleAction->delete($event); $deletedSale = $event->getSale(); $this->assertInstanceOf('Thelia\\Model\\Sale', $deletedSale); $this->assertTrue($deletedSale->isDeleted()); }