public static function handleStagePaymentPay(OrderStageEvent $event)
 {
     /** @var Order $order */
     $order = $event->eventData()['order'];
     $paymentType = !empty($order->paymentType) ? $order->paymentType : null;
     /** @var OrderTransaction $orderTransaction */
     $orderTransaction = !empty(OrderTransaction::findLastByOrder($order)) ? OrderTransaction::findLastByOrder($order) : OrderTransaction::createForOrder($order);
     $hasSuccess = OrderTransaction::find()->where(['order_id' => $order->id])->andWhere(['!=', 'status', OrderTransaction::TRANSACTION_START])->one();
     if (null !== $hasSuccess) {
         $event->addEventData(['__redirect' => Url::toRoute(['/shop/cart/index'])]);
     }
     $event->addEventData(['orderTransaction' => $orderTransaction, 'paymentType' => $paymentType]);
 }
Beispiel #2
0
 /**
  * @param Connection $db
  * @param Currency $currency
  * @return array
  */
 protected function getOrderSalesChart(Connection $db, Currency $currency)
 {
     /** @var ActiveQuery $query */
     $query = OrderTransaction::find()->where(['status' => OrderTransaction::TRANSACTION_SUCCESS])->andWhere(['>=', 'UNIX_TIMESTAMP(`end_date`)', $this->startDate])->orderBy(['end_date' => SORT_ASC]);
     $orders = [];
     $totalSum = 0;
     /** @var OrderTransaction $transaction */
     foreach ($query->each(100, $db) as $transaction) {
         $t = $this->getTotalSumOrderTransaction($transaction, $currency);
         $totalSum += $t;
         $orders[] = [strtotime($transaction->end_date) * 1000, $t];
     }
     return ['totalSum' => $totalSum, 'orders' => $orders];
 }