Blame view

frontend/controllers/SiteController.php 7.65 KB
06692811   Eugeny Galkovskiy   first commit
1
  <?php
a78f6f00   Timur Kastemirov   feedback mail
2
      
06692811   Eugeny Galkovskiy   first commit
3
4
      namespace frontend\controllers;
      
a6fd2619   Eugeny Galkovskiy   правки
5
      use artbox\core\models\Page;
a78f6f00   Timur Kastemirov   feedback mail
6
      use common\models\Feedback;
06692811   Eugeny Galkovskiy   first commit
7
      use common\models\Settings;
cf67df18   Timur Kastemirov   карусель
8
      use common\models\Slider;
06692811   Eugeny Galkovskiy   first commit
9
10
11
12
13
      use Yii;
      use yii\filters\VerbFilter;
      use yii\swiftmailer\Mailer;
      use yii\web\BadRequestHttpException;
      use yii\web\Controller;
a6fd2619   Eugeny Galkovskiy   правки
14
      use yii\web\NotFoundHttpException;
06692811   Eugeny Galkovskiy   first commit
15
      use yii\web\Response;
35f6909f   Timur Kastemirov   big shot #2 наши ...
16
      use common\models\Objectkb;
06692811   Eugeny Galkovskiy   first commit
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
      
      /**
       * Site controller
       */
      class SiteController extends Controller
      {
          /**
           * @inheritdoc
           */
          public function actions()
          {
              return [
                  'error' => [
                      'class' => 'yii\web\ErrorAction',
                  ],
              ];
          }
          
          /**
           * @inheritdoc
           */
          public function behaviors()
          {
              return [
                  'verbs' => [
                      'class'   => VerbFilter::className(),
                      'actions' => [
                          'feedback' => [ 'post' ],
                      ],
                  ],
              ];
          }
          
          /**
           * Displays homepage.
           *
           * @return mixed
           */
          public function actionIndex()
          {
cf67df18   Timur Kastemirov   карусель
57
              
a78f6f00   Timur Kastemirov   feedback mail
58
59
              $slider = Slider::find()
                              ->with("slides.lang.image")
21452189   Timur Kastemirov   feedback calculat...
60
                              ->where([ 'on_home_page' => true ])
a78f6f00   Timur Kastemirov   feedback mail
61
                              ->one();
21452189   Timur Kastemirov   feedback calculat...
62
              
f93c79c5   Eugeny Galkovskiy   styles + translates
63
              $objects = Objectkb::find()
21452189   Timur Kastemirov   feedback calculat...
64
65
66
67
68
69
70
                                 ->with('lang.alias')
                                 ->where(
                                     [
                                         'id' => [
                                             7,
                                             37,
                                             38,
bfc9aebb   Eugeny Galkovskiy   styles
71
                                             43,
21452189   Timur Kastemirov   feedback calculat...
72
73
74
75
76
77
                                         ],
                                     ]
                                 )
                                 ->orderBy('id')
                                 ->all();
              
cf67df18   Timur Kastemirov   карусель
78
79
80
              return $this->render(
                  'index',
                  [
21452189   Timur Kastemirov   feedback calculat...
81
                      'slider'  => $slider,
f93c79c5   Eugeny Galkovskiy   styles + translates
82
                      'objects' => $objects,
cf67df18   Timur Kastemirov   карусель
83
84
                  ]
              );
06692811   Eugeny Galkovskiy   first commit
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
          }
          
          /**
           * Displays contact page.
           *
           * @return mixed
           */
          public function actionContact()
          {
              $contact = new Feedback();
              return $this->render(
                  'contact',
                  [
                      'contact' => $contact,
                  ]
              );
          }
          
          /**
           * Displays about page.
           *
           * @return mixed
           */
          public function actionAbout()
          {
a6fd2619   Eugeny Galkovskiy   правки
110
111
112
113
114
115
116
117
118
119
120
121
              $page = Page::find()->with('lang')
                  ->where(['id' => 3])->one();
  
              if ($page) {
                  return $this->render('about', [
                      'page' => $page,
                  ]);
  
              } else {
                  throw new NotFoundHttpException();
              }
  
06692811   Eugeny Galkovskiy   first commit
122
          }
a78f6f00   Timur Kastemirov   feedback mail
123
          
4ce7dc6d   Timur Kastemirov   миграции для объе...
124
125
          public function actionIndividual()
          {
bb7c6ffc   Eugeny Galkovskiy   правки
126
127
128
129
130
131
              $idsArray = [
                  25,
                  37,
                  12,
                  42,
              ];
ab86aa32   alex   Валидация формы
132
              
45dc5d70   Eugeny Galkovskiy   individual page
133
134
135
136
              $objects = Objectkb::find()
                  ->with('lang.alias')
                  ->where(
                      [
bb7c6ffc   Eugeny Galkovskiy   правки
137
                          'id' => $idsArray,
45dc5d70   Eugeny Galkovskiy   individual page
138
139
                      ]
                  )
bb7c6ffc   Eugeny Galkovskiy   правки
140
                  ->indexBy('id')
45dc5d70   Eugeny Galkovskiy   individual page
141
142
143
144
145
146
                  ->all();
  
              return $this->render(
                  'individual',
                  [
                      'objects' => $objects,
bb7c6ffc   Eugeny Galkovskiy   правки
147
148
                      'idsArray' => $idsArray,
                      ]
45dc5d70   Eugeny Galkovskiy   individual page
149
              );
4ce7dc6d   Timur Kastemirov   миграции для объе...
150
151
152
153
154
155
156
          } // частное лицо
          
          public function actionLegal()
          {
              return $this->render('legal');
          } // юридическое
          
4ce7dc6d   Timur Kastemirov   миграции для объе...
157
158
159
160
161
          public function actionMediaAbout()
          {
              return $this->render('media-about');
          } // СМИ о нас
          
06692811   Eugeny Galkovskiy   first commit
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
          /**
           * Action to view robots.txt file dinamycli
           *
           * @return string
           */
          public function actionRobots()
          {
              $response = \Yii::$app->response;
              /**
               * @var Settings $settings
               */
              $settings = Settings::find()
                                  ->one();
              $temp = tmpfile();
              fwrite($temp, $settings->robots);
              $meta = stream_get_meta_data($temp);
              $response->format = $response::FORMAT_RAW;
              $response->headers->set('Content-Type', 'text/plain');
              return $this->renderFile($meta[ 'uri' ]);
          }
          
          public function actionFeedback()
          {
ab86aa32   alex   Валидация формы
185
  
06692811   Eugeny Galkovskiy   first commit
186
              Yii::$app->response->format = Response::FORMAT_JSON;
5d124d96   alex   Валидация формы
187
     
ab86aa32   alex   Валидация формы
188
  
06692811   Eugeny Galkovskiy   first commit
189
190
191
192
193
              /**
               * @var Mailer $mailer
               */
              $mailer = \Yii::$app->get('smtpmailer');
              $settings = Settings::getInstance();
c15dc821   alex   обновил фильтры
194
  
06692811   Eugeny Galkovskiy   first commit
195
              if (empty(Yii::$app->request->post())) {
ab86aa32   alex   Валидация формы
196
  
06692811   Eugeny Galkovskiy   first commit
197
198
                  throw new BadRequestHttpException();
              } else {
c15dc821   alex   обновил фильтры
199
  
a6795694   Timur Kastemirov   feedback calculat...
200
                  $post = Yii::$app->request->post('Feedback');
21452189   Timur Kastemirov   feedback calculat...
201
                  switch ($post[ 'topic' ]) {
31257104   Timur Kastemirov   feedback calculator
202
                      case Feedback::SCENARIO_FEEDBACK :
21452189   Timur Kastemirov   feedback calculat...
203
                          $model = new Feedback([ 'scenario' => Feedback::SCENARIO_FEEDBACK ]);
31257104   Timur Kastemirov   feedback calculator
204
205
206
                          $view = 'feedback';
                          $isLoaded = $model->load(Yii::$app->request->post());
                          break;
21452189   Timur Kastemirov   feedback calculat...
207
                      
31257104   Timur Kastemirov   feedback calculator
208
                      case Feedback::SCENARIO_CALLBACK :
21452189   Timur Kastemirov   feedback calculat...
209
                          $model = new Feedback([ 'scenario' => Feedback::SCENARIO_CALLBACK ]);
31257104   Timur Kastemirov   feedback calculator
210
211
212
                          $view = 'feedback';
                          $isLoaded = $model->load(Yii::$app->request->post());
                          break;
21452189   Timur Kastemirov   feedback calculat...
213
                      
31257104   Timur Kastemirov   feedback calculator
214
                      case Feedback::SCENARIO_CALCULATOR:
21452189   Timur Kastemirov   feedback calculat...
215
                          $model = new Feedback([ 'scenario' => Feedback::SCENARIO_CALCULATOR ]);
31257104   Timur Kastemirov   feedback calculator
216
217
                          $view = 'calculator';
                          $isLoaded = $model->load(Yii::$app->request->post());
a6795694   Timur Kastemirov   feedback calculat...
218
                          $model->setCalcJsonInfo();
31257104   Timur Kastemirov   feedback calculator
219
                          break;
21452189   Timur Kastemirov   feedback calculat...
220
                      
31257104   Timur Kastemirov   feedback calculator
221
222
223
224
225
226
                      default:
                          $model = new Feedback();
                          $view = 'feedback';
                          $isLoaded = $model->load(Yii::$app->request->post());
                  }
                  
31257104   Timur Kastemirov   feedback calculator
227
                  if ($isLoaded && $model->save()) {
06692811   Eugeny Galkovskiy   first commit
228
229
                      
                      $mailer->compose(
31257104   Timur Kastemirov   feedback calculator
230
                          $view,
06692811   Eugeny Galkovskiy   first commit
231
232
233
234
                          [
                              'model' => $model,
                          ]
                      )
c15dc821   alex   обновил фильтры
235
                             ->setFrom(['artbox@domain.com'])
a78f6f00   Timur Kastemirov   feedback mail
236
                             ->setTo(
21452189   Timur Kastemirov   feedback calculat...
237
                              [
22074c81   Timur Kastemirov   add email to send...
238
                                  $settings->email,
21452189   Timur Kastemirov   feedback calculat...
239
240
                              ]
                          )
06692811   Eugeny Galkovskiy   first commit
241
242
243
244
245
246
                             ->setSubject(\Yii::t('app', 'Feedback'))
                             ->send();
                      
                      return [
                          'success' => true,
                          'message' => 'Success message',
21452189   Timur Kastemirov   feedback calculat...
247
248
                          'view'    => $view,
                          'model'   => $model->attributeValues,
a78f6f00   Timur Kastemirov   feedback mail
249
                          'alert'   => $this->renderPartial('success_alert'),
06692811   Eugeny Galkovskiy   first commit
250
251
                      ];
                  } else {
a78f6f00   Timur Kastemirov   feedback mail
252
                      Yii::$app->response->setStatusCode(500);
06692811   Eugeny Galkovskiy   first commit
253
254
255
256
257
258
259
260
                      return [
                          'success' => false,
                          'error'   => $model->errors,
                      ];
                  }
              }
          }
      }