Blame view

frontend/controllers/SiteController.php 8.01 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
71
72
73
74
75
76
77
                                 ->with('lang.alias')
                                 ->where(
                                     [
                                         'id' => [
                                             7,
                                             37,
                                             38,
                                             39,
                                         ],
                                     ]
                                 )
                                 ->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
162
163
164
165
166
167
168
169
170
          public function actionGreen()
          {
              return $this->render('green');
          } // зелёный тариф
          
          public function actionMediaAbout()
          {
              return $this->render('media-about');
          } // СМИ о нас
          
          public function actionBlog()
          {
              return $this->render('blog');
          } // блог
a78f6f00   Timur Kastemirov   feedback mail
171
          
06692811   Eugeny Galkovskiy   first commit
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
          /**
           * 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();
              
              if (empty(Yii::$app->request->post())) {
                  throw new BadRequestHttpException();
              } else {
a6795694   Timur Kastemirov   feedback calculat...
206
                  $post = Yii::$app->request->post('Feedback');
21452189   Timur Kastemirov   feedback calculat...
207
                  switch ($post[ 'topic' ]) {
31257104   Timur Kastemirov   feedback calculator
208
                      case Feedback::SCENARIO_FEEDBACK :
21452189   Timur Kastemirov   feedback calculat...
209
                          $model = new Feedback([ 'scenario' => Feedback::SCENARIO_FEEDBACK ]);
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_CALLBACK :
21452189   Timur Kastemirov   feedback calculat...
215
                          $model = new Feedback([ 'scenario' => Feedback::SCENARIO_CALLBACK ]);
31257104   Timur Kastemirov   feedback calculator
216
217
218
                          $view = 'feedback';
                          $isLoaded = $model->load(Yii::$app->request->post());
                          break;
21452189   Timur Kastemirov   feedback calculat...
219
                      
31257104   Timur Kastemirov   feedback calculator
220
                      case Feedback::SCENARIO_CALCULATOR:
21452189   Timur Kastemirov   feedback calculat...
221
                          $model = new Feedback([ 'scenario' => Feedback::SCENARIO_CALCULATOR ]);
31257104   Timur Kastemirov   feedback calculator
222
223
                          $view = 'calculator';
                          $isLoaded = $model->load(Yii::$app->request->post());
a6795694   Timur Kastemirov   feedback calculat...
224
                          $model->setCalcJsonInfo();
31257104   Timur Kastemirov   feedback calculator
225
                          break;
21452189   Timur Kastemirov   feedback calculat...
226
                      
31257104   Timur Kastemirov   feedback calculator
227
228
229
230
231
232
                      default:
                          $model = new Feedback();
                          $view = 'feedback';
                          $isLoaded = $model->load(Yii::$app->request->post());
                  }
                  
31257104   Timur Kastemirov   feedback calculator
233
                  if ($isLoaded && $model->save()) {
06692811   Eugeny Galkovskiy   first commit
234
235
                      
                      $mailer->compose(
31257104   Timur Kastemirov   feedback calculator
236
                          $view,
06692811   Eugeny Galkovskiy   first commit
237
238
239
240
                          [
                              'model' => $model,
                          ]
                      )
a78f6f00   Timur Kastemirov   feedback mail
241
242
                             ->setFrom('artbox@domain.com')//                           ->setTo($settings->email)
                             ->setTo(
21452189   Timur Kastemirov   feedback calculat...
243
244
245
246
247
                              [
                                  'tamerlan8.05.92@gmail.com',
                                  'mpav@artweb.ua',
                              ]
                          )
06692811   Eugeny Galkovskiy   first commit
248
249
250
251
252
253
                             ->setSubject(\Yii::t('app', 'Feedback'))
                             ->send();
                      
                      return [
                          'success' => true,
                          'message' => 'Success message',
21452189   Timur Kastemirov   feedback calculat...
254
255
                          'view'    => $view,
                          'model'   => $model->attributeValues,
a78f6f00   Timur Kastemirov   feedback mail
256
                          'alert'   => $this->renderPartial('success_alert'),
06692811   Eugeny Galkovskiy   first commit
257
258
                      ];
                  } else {
a78f6f00   Timur Kastemirov   feedback mail
259
                      Yii::$app->response->setStatusCode(500);
06692811   Eugeny Galkovskiy   first commit
260
261
262
263
264
265
266
267
                      return [
                          'success' => false,
                          'error'   => $model->errors,
                      ];
                  }
              }
          }
      }