public function deliver(Purchase $purchase) { $item = $purchase->getStoreItem(); try { switch ($item->getType()) { case "COMMAND": $this->eventDispatcher->dispatch("minecraft.send", new MinecraftSendEvent(array($purchase))); break; default: $options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION); $pdo = new \PDO('mysql:host=' . $this->config["host"] . ';dbname=' . $this->config["db"], $this->config["user"], $this->config["pass"], $options); $pdo->query($this->minecraft->parseCommand($item->getCommand(), array("USER" => $purchase->getName(), "UUID" => $purchase->getUser()->getMcUuid()))); $pdo = null; $purchase->setStatus(Purchase::PURCHASE_COMPLETE); $purchase->setItemDelivery(Purchase::ITEM_DELIVERY_SUCCESS); $this->entityManager->flush(); } return true; } catch (\PDOException $ex) { $this->logger->error("DELIVER:" . $ex->getMessage()); $purchase->addDetail(Purchase::PURCHASE_ERROR_SQL, $ex->getMessage()); $purchase->setStatus(Purchase::PURCHASE_ERROR_SQL); $purchase->setItemDelivery(Purchase::ITEM_DELIVERY_FAILED); } catch (CommandExecutionException $ex) { $this->logger->error("DELIVER:" . $ex->getMessage()); $purchase->addDetail(Purchase::PURCHASE_ERROR_COMMAND, $ex->getMessage()); $purchase->setStatus(Purchase::PURCHASE_ERROR_COMMAND); $purchase->setItemDelivery(Purchase::ITEM_DELIVERY_FAILED); } catch (\Exception $ex) { $this->logger->error("DELIVER:" . $ex->getMessage()); $purchase->addDetail(Purchase::PURCHASE_ERROR_UNKNOWN, $ex->getMessage()); $purchase->setStatus(Purchase::PURCHASE_ERROR_UNKNOWN); $purchase->setItemDelivery(Purchase::ITEM_DELIVERY_FAILED); } $this->entityManager->flush(); return false; }
/** * @param $item * @param User $user * @param $amount * @param $discount * @param $status * @param $name * @param $ip * @param $transaction * @param $delivery * @return Purchase */ public function createPurchase($item, User $user, $amount, $discount, $status, $name, $ip, $transaction, $delivery) { $em = $this->doctrine; try { $purchase = new Purchase(); $purchase->setDate(new \DateTime("now")); $purchase->setStatus($status); $purchase->setIp($ip); $purchase->setUser($user); $purchase->setAmount($amount); $purchase->setName($name); $purchase->setStoreItem($item); $purchase->setTransaction($transaction); $purchase->setItemDelivery($delivery); $purchase->setDiscount($discount); $em->persist($purchase); $em->flush(); $this->logger->info("[IPN]Purchase made for user: " . $name); return $purchase; } catch (\Exception $ex) { $logger = $this->logger; $logger->error('STORE: ' . $ex->getMessage()); } }