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]); }
/** * @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]; }