/** * Устанавливает статус для заказа "Оплата подтверждена магазином" self::STATUS_PAID_SHOP * Прикрепляет билеты для заказа * * @param string $message - сообщение для статуса * * @return bool */ public function paid($message = null) { // выдача билетов $tickets_counter = $this->getProduct()->getField('tickets_counter'); for ($i = 0; $i < $tickets_counter; $i++) { Ticket::insert(['request_id' => $this->getId(), 'code' => substr(str_shuffle("012345678901234567890123456789"), 0, 12), 'date_insert' => time()]); } $this->addStatusToShop(self::STATUS_PAID_CLIENT); $this->addStatusToClient(self::STATUS_PAID_SHOP); $this->update(['is_paid' => 1]); $dostavka = $this->getField('dostavka'); switch ($dostavka) { case 1: $this->addStatusToClient(self::STATUS_DOSTAVKA_GET_MYSELF_POLET_WAIT); break; case 2: $this->addStatusToClient(self::STATUS_DOSTAVKA_GET_MYSELF_VOZNESENIE_WAIT); break; case 3: $this->addStatusToClient(['status' => self::STATUS_DOSTAVKA_MOSCOW_WAIT, 'message' => 'Наш посланник пытается с вами связаться для передачи подарка']); break; case 4: $this->addStatusToClient(['status' => self::STATUS_DOSTAVKA_RUSSIA_PREPARE, 'message' => 'Подарок находится в режиме подготовки к отправке']); break; case 5: $this->addStatusToClient(['status' => self::STATUS_DOSTAVKA_WORLD_PREPARE, 'message' => 'Подарок находится в режиме подготовки к отправке']); break; } // отправка письма Application::mail($this->getClient()->getEmail(), 'Ваш подарок', 'new_request_client', ['request' => $this]); Application::mail(\Yii::$app->params['mailer']['payment'], 'Заказ оплачен', 'new_request_shop', ['request' => $this]); // прибавление счетчика \app\models\Counter::inc($this->getProduct()->getPrice()); return true; }