Blame view

frontend/controllers/SiteController.php 7.66 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,
              ];
45dc5d70   Eugeny Galkovskiy   individual page
132
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
185
186
187
188
189
190
191
          /**
           * 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()
          {
              Yii::$app->response->format = Response::FORMAT_JSON;
              
              /**
               * @var Mailer $mailer
               */
              $mailer = \Yii::$app->get('smtpmailer');
              $settings = Settings::getInstance();
c15dc821   alex   обновил фильтры
192
  
06692811   Eugeny Galkovskiy   first commit
193
194
195
              if (empty(Yii::$app->request->post())) {
                  throw new BadRequestHttpException();
              } else {
c15dc821   alex   обновил фильтры
196
  
a6795694   Timur Kastemirov   feedback calculat...
197
                  $post = Yii::$app->request->post('Feedback');
c15dc821   alex   обновил фильтры
198
                  
21452189   Timur Kastemirov   feedback calculat...
199
                  switch ($post[ 'topic' ]) {
31257104   Timur Kastemirov   feedback calculator
200
                      case Feedback::SCENARIO_FEEDBACK :
21452189   Timur Kastemirov   feedback calculat...
201
                          $model = new Feedback([ 'scenario' => Feedback::SCENARIO_FEEDBACK ]);
31257104   Timur Kastemirov   feedback calculator
202
203
204
                          $view = 'feedback';
                          $isLoaded = $model->load(Yii::$app->request->post());
                          break;
21452189   Timur Kastemirov   feedback calculat...
205
                      
31257104   Timur Kastemirov   feedback calculator
206
                      case Feedback::SCENARIO_CALLBACK :
21452189   Timur Kastemirov   feedback calculat...
207
                          $model = new Feedback([ 'scenario' => Feedback::SCENARIO_CALLBACK ]);
31257104   Timur Kastemirov   feedback calculator
208
209
210
                          $view = 'feedback';
                          $isLoaded = $model->load(Yii::$app->request->post());
                          break;
21452189   Timur Kastemirov   feedback calculat...
211
                      
31257104   Timur Kastemirov   feedback calculator
212
                      case Feedback::SCENARIO_CALCULATOR:
21452189   Timur Kastemirov   feedback calculat...
213
                          $model = new Feedback([ 'scenario' => Feedback::SCENARIO_CALCULATOR ]);
31257104   Timur Kastemirov   feedback calculator
214
215
                          $view = 'calculator';
                          $isLoaded = $model->load(Yii::$app->request->post());
a6795694   Timur Kastemirov   feedback calculat...
216
                          $model->setCalcJsonInfo();
31257104   Timur Kastemirov   feedback calculator
217
                          break;
21452189   Timur Kastemirov   feedback calculat...
218
                      
31257104   Timur Kastemirov   feedback calculator
219
220
221
222
223
224
                      default:
                          $model = new Feedback();
                          $view = 'feedback';
                          $isLoaded = $model->load(Yii::$app->request->post());
                  }
                  
31257104   Timur Kastemirov   feedback calculator
225
                  if ($isLoaded && $model->save()) {
06692811   Eugeny Galkovskiy   first commit
226
227
                      
                      $mailer->compose(
31257104   Timur Kastemirov   feedback calculator
228
                          $view,
06692811   Eugeny Galkovskiy   first commit
229
230
231
232
                          [
                              'model' => $model,
                          ]
                      )
c15dc821   alex   обновил фильтры
233
                             ->setFrom(['artbox@domain.com'])
a78f6f00   Timur Kastemirov   feedback mail
234
                             ->setTo(
21452189   Timur Kastemirov   feedback calculat...
235
                              [
22074c81   Timur Kastemirov   add email to send...
236
                                  $settings->email,
21452189   Timur Kastemirov   feedback calculat...
237
238
                              ]
                          )
06692811   Eugeny Galkovskiy   first commit
239
240
241
242
243
244
                             ->setSubject(\Yii::t('app', 'Feedback'))
                             ->send();
                      
                      return [
                          'success' => true,
                          'message' => 'Success message',
21452189   Timur Kastemirov   feedback calculat...
245
246
                          'view'    => $view,
                          'model'   => $model->attributeValues,
a78f6f00   Timur Kastemirov   feedback mail
247
                          'alert'   => $this->renderPartial('success_alert'),
06692811   Eugeny Galkovskiy   first commit
248
249
                      ];
                  } else {
a78f6f00   Timur Kastemirov   feedback mail
250
                      Yii::$app->response->setStatusCode(500);
06692811   Eugeny Galkovskiy   first commit
251
252
253
254
255
256
257
258
                      return [
                          'success' => false,
                          'error'   => $model->errors,
                      ];
                  }
              }
          }
      }