Blame view

frontend/controllers/BookController.php 5.84 KB
8f340aa7   Anastasia   - main page
1
2
3
4
5
6
7
8
9
10
11
  <?php
      /**
       * Created by PhpStorm.
       * User: stes
       * Date: 08.06.18
       * Time: 12:39
       */
      
      namespace frontend\controllers;
      
      use common\models\Book;
f51c0b7c   Anastasia   - support in card
12
      use common\models\Support;
146493f1   Anastasia   - catalog books
13
      use yii\data\ActiveDataProvider;
8f340aa7   Anastasia   - main page
14
      use yii\web\Controller;
9afd152f   Anastasia   - support from main
15
      use yii\web\Response;
8f340aa7   Anastasia   - main page
16
      use yii\web\UploadedFile;
146493f1   Anastasia   - catalog books
17
      
8f340aa7   Anastasia   - main page
18
19
20
21
22
23
24
25
26
27
      class BookController extends Controller
      {
          /**
           * @inheritdoc
           */
          public function beforeAction($action)
          {
              if ($action->id == 'add' or $action->id == 'edit') {
                  $this->enableCsrfValidation = false;
              }
146493f1   Anastasia   - catalog books
28
              
8f340aa7   Anastasia   - main page
29
30
              return parent::beforeAction($action);
          }
146493f1   Anastasia   - catalog books
31
32
33
          
          public function actionAdd()
          {
8f340aa7   Anastasia   - main page
34
              /**
146493f1   Anastasia   - catalog books
35
               * @var \common\models\Author $user ;
8f340aa7   Anastasia   - main page
36
37
38
39
40
41
42
               */
              $user = \Yii::$app->user->identity;
              if (\Yii::$app->user->isGuest) {
                  $this->redirect([ 'site/index' ]);
              }
              $model = new Book();
              if (\Yii::$app->request->isPost) {
8f340aa7   Anastasia   - main page
43
44
45
                  if ($model->load(\Yii::$app->request->post(), '') and $model->validate()) {
                      $model->author_id = $user->id;
                      $model->status = $model::STATUS_MODERATION;
146493f1   Anastasia   - catalog books
46
                      return ( $model->save() && $model->saveImage(UploadedFile::getInstanceByName('file')) );
8f340aa7   Anastasia   - main page
47
48
49
                  } else {
                      return false;
                  }
146493f1   Anastasia   - catalog books
50
                  
8f340aa7   Anastasia   - main page
51
              }
146493f1   Anastasia   - catalog books
52
53
54
55
56
57
              return $this->render(
                  'add',
                  [
                      'book' => [],
                  ]
              );
8f340aa7   Anastasia   - main page
58
59
          }
          
146493f1   Anastasia   - catalog books
60
61
          public function actionEdit($id)
          {
8f340aa7   Anastasia   - main page
62
              $model = Book::findOne($id);
146493f1   Anastasia   - catalog books
63
64
              if ($model->author_id !== \Yii::$app->user->getId()) {
                  return $this->redirect([ 'site/index' ]);
8f340aa7   Anastasia   - main page
65
66
              }
              if (\Yii::$app->request->isPost) {
146493f1   Anastasia   - catalog books
67
                  
8f340aa7   Anastasia   - main page
68
                  if ($model->load(\Yii::$app->request->post(), '') and $model->validate()) {
146493f1   Anastasia   - catalog books
69
                      return ( $model->save() && $model->saveImage(UploadedFile::getInstanceByName('file')) );
8f340aa7   Anastasia   - main page
70
71
72
                  } else {
                      return false;
                  }
146493f1   Anastasia   - catalog books
73
                  
8f340aa7   Anastasia   - main page
74
              }
146493f1   Anastasia   - catalog books
75
76
77
78
79
80
              return $this->render(
                  'add',
                  [
                      'book' => $model->attributes,
                  ]
              );
8f340aa7   Anastasia   - main page
81
82
          }
          
146493f1   Anastasia   - catalog books
83
84
85
86
87
          public function actionIndex()
          {
              $dataProvider = new ActiveDataProvider(
                  [
                      'query'      => Book::find()
f51c0b7c   Anastasia   - support in card
88
89
90
91
92
93
                                          ->with(
                                              [
                                                  'author',
                                                  'alias',
                                              ]
                                          )
146493f1   Anastasia   - catalog books
94
95
96
97
98
99
100
101
102
103
104
105
106
                                          ->where([ 'status' => Book::STATUS_ACTIVE ]),
                      'pagination' => [
                          'pageSize' => 10,
                      ],
                  ]
              );
              return $this->render(
                  'index',
                  [
                      'dataProvider' => $dataProvider,
                  ]
              );
          }
8f340aa7   Anastasia   - main page
107
          
f51c0b7c   Anastasia   - support in card
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
          public function actionView($id)
          {
              $model = Book::find()
                           ->with(
                               [
                                   'author',
                                   'activeComments',
                               ]
                           )
                           ->where([ 'id' => $id ])
                           ->one();
              $support = Support::find()
                                ->where([ 'book_id' => $model->id ])
                                ->all();
              return $this->render(
                  'view',
                  [
                      'model'   => $model,
                      'support' => $support,
                  ]
              );
8f340aa7   Anastasia   - main page
129
          }
7a3112b5   Anastasia   add book succes ...
130
131
132
133
          
          public function actionSuccess(){
              return $this->render('success');
          }
9afd152f   Anastasia   - support from main
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
          
          public function actionList($q = null){
              \Yii::$app->response->format = Response::FORMAT_JSON;
              $out = [
                  'results' => [
                      [
                          'id'   => '',
                          'text' => '',
                      ],
                  ],
              ];
              if (!is_null($q)) {
                  $books = Book::find()
                                        ->select(
                                            [
                                                'id'   => 'book.id',
                                                'text' => 'book.title',
                                            ]
                                        )
                                        ->andFilterWhere(
                                            [
                                                'ilike',
                                                'title',
                                                $q,
                                            ]
                                        )
                                        ->limit(20)
                                        ->asArray()
                                        ->all();
          
                  if (!empty($books)) {
                      $out[ 'results' ] = $books;
                  }
              }
      
              return $out;
          }
0e25b179   Anastasia   author page projects
171
172
173
174
175
176
177
178
179
180
181
          
         public function actionDelete($id){
             \Yii::$app->response->format = Response::FORMAT_JSON;
                  $book = Book::findOne($id);
                  if ($book->status == Book::STATUS_ACTIVE){
                      $book->status = Book::STATUS_DELETED;
                      return $book->save();
                  }elseif($book->status == Book::STATUS_MODERATION){
                      return $book->delete();
                  }
          }
8f340aa7   Anastasia   - main page
182
      }