private function createPhotobookState() { //$view_access_key=''; $number = time() + rand(0, 9999999); $view_access_key = AlphaId::id($this->user_id) . AlphaId::id($number); $photobookState = new PhotobookState(); $photobookState->user_id = $this->user_id; $photobookState->photobook_id = $this->id; $photobookState->status = PhotobookState::STATUS_WAIT_CUSTOMER_COMMENTS; $photobookState->data = PhotobookForm::photosEncode($this->data); //$photobookState->template=$this->template; $photobookState->style_id = $this->style_id; $photobookState->cover_id = $this->cover_id; $photobookState->title_line_1 = $this->title_line_1; $photobookState->title_line_2 = $this->title_line_2; $photobookState->title_line_3 = $this->title_line_3; $photobookState->title_line_4 = $this->title_line_4; //$photobookState->photos_zip_hash=$this->photos_zip_hash; //$photobookState->change_status_at=$this->change_status_at; $photobookState->view_access_key = $view_access_key; $this->photos = $this->addTextGroupIfNotExists($this->photos); $photobookState->photos = PhotobookForm::photosEncode($this->photos); $photobookState->comments = []; if (empty($this->data['pages'])) { return false; } //Создаем массив данных где будут хранится коменты к каждой странице if (empty($photobookState->comments)) { $comments = []; for ($i = 0; $i < count($this->data['pages']); $i++) { $type = "spreads"; $page_name = 'Комментарий к развороту ' . $i; if ($i == 0) { $type = "cover"; $page_name = 'Комментарий к обложке'; } if ($i == count($this->data['pages']) - 1) { $type = "total"; $page_name = 'Общий комментарий'; } $comments[$i] = ['title' => $page_name, 'comment' => '', 'type' => $type]; if ($type == 'spreads') { $comments[$i]['print'] = true; } $photobookState->comments = $comments; } } $photobookState->comments = PhotobookForm::photosEncode($photobookState->comments); //Yii::getLogger()->log('save:', YII_DEBUG); if ($photobookState->save()) { return $view_access_key; } else { return false; //Yii::getLogger()->log('save error', YII_DEBUG); } }
public function actionView() { $this->layout = 'editor'; $view_access_key = Yii::$app->request->get('key'); $ref = ''; //Yii::$app->request->get('ref'); $id = ''; //Yii::$app->request->get('id'); if (!empty($view_access_key)) { $photobookState = PhotobookState::findOne(['view_access_key' => $view_access_key]); if (!$photobookState) { //Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Страница не найдена')); $this->redirect(Url::toRoute(['photobooks/not-found'])); return; } if ($photobookState->status == PhotobookState::STATUS_CLOSE) { if (Yii::$app->user->identity) { // Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Ссылка закрыта')); $this->redirect(Url::toRoute(['photobooks/access-close-not-found'])); return; } else { if (Yii::$app->user->identity->id != $photobookState->user_id) { //Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Ссылка закрыта')); $this->redirect(Url::toRoute(['photobooks/access-close-not-found'])); return; } } } $model = new PhotobookForm(); if (!$model->loadById($photobookState->photobook_id)) { //Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Страница не найдена')); $this->redirect(Url::toRoute(['photobooks/not-found'])); return; } $model->style_id = $photobookState->style_id; $model->cover_id = $photobookState->cover_id; $model->data = PhotobookForm::photosDecode($photobookState->data); $model->photos = PhotobookForm::photosDecode($photobookState->photos); $model->title_line_1 = $photobookState->title_line_1; $model->title_line_2 = $photobookState->title_line_2; $model->title_line_3 = $photobookState->title_line_3; $model->title_line_4 = $photobookState->title_line_4; $photobookState->comments = PhotobookForm::photosDecode($photobookState->comments); $user_id = $model->user_id; $pb_id = $model->id; $ref = AlphaId::id($user_id, false); $id = AlphaId::id($pb_id, false); $style_id = $model->style_id; $style = new StyleForm(); if (!$style->loadById($style_id)) { //Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Стиль для данной фотокниги не найден.')); $this->redirect(Url::toRoute(['photobooks/not-found'])); return; } $selected_cover = new CoverForm(); if (!$selected_cover->loadById($model->cover_id)) { //Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Обложка для данной фотокниги не найден.')); $this->redirect(Url::toRoute(['photobooks/not-found'])); return; } $covers = Cover::find()->where(['status' => 1])->all(); $new_covers = []; foreach ($covers as $key => $cover) { $new_covers[$cover->material_type][] = $cover; } $pages = $model->data['pages']; $base_price = (count($pages) - 2) * $style->price_spread; $cover_price_sign = $selected_cover->price_sign; $selected_cover->price; $total_price = $base_price; if ($cover_price_sign == "=") { $total_price = $selected_cover->price; } else { if ($cover_price_sign == "+") { $total_price += $selected_cover->price; } else { if ($cover_price_sign == "-") { $total_price -= $selected_cover->price; } } } return $this->render('view', ['model' => $model, 'photobook_state' => $photobookState, 'ref' => $ref, 'id' => $id, 'pb_id' => $pb_id, 'user_id' => $user_id, 'pages' => $pages, 'style' => $style, 'selected_cover' => $selected_cover, 'covers' => $new_covers, 'base_price' => $base_price, 'total_price' => $total_price]); } else { Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Страница не найдена')); $this->redirect(Url::toRoute(['photobooks/not-found'])); } }
public function actionSaveCustomerComments() { \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $key = Yii::$app->request->get('key'); $index = Yii::$app->request->post('index'); $comment = Yii::$app->request->post('comment'); if (!empty($key)) { $photobookState = PhotobookState::findOne(['view_access_key' => $key]); if (!$photobookState) { return ['error' => ['msg' => Yii::t('app', 'Состояние не найдено')]]; } $comments = PhotobookForm::photosDecode($photobookState->comments); if (empty($comments[$index])) { return ['error' => ['msg' => Yii::t('app', 'Индекс не найден ' . $index)]]; } $comments[$index]['comment'] = $comment; $photobookState->comments = PhotobookForm::photosEncode($comments); if (!$photobookState->update()) { return ['error' => ['msg' => Yii::t('app', 'Не удалось записать в базу')]]; } else { return ['response' => ['status' => true]]; } } else { return ['error' => ['msg' => Yii::t('app', 'Состояние не найдено')]]; } }