Blame view

frontend/controllers/SiteController.php 7.76 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
192
193
194
195
          /**
           * 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...
196
                  $post = Yii::$app->request->post('Feedback');
21452189   Timur Kastemirov   feedback calculat...
197
                  switch ($post[ 'topic' ]) {
31257104   Timur Kastemirov   feedback calculator
198
                      case Feedback::SCENARIO_FEEDBACK :
21452189   Timur Kastemirov   feedback calculat...
199
                          $model = new Feedback([ 'scenario' => Feedback::SCENARIO_FEEDBACK ]);
31257104   Timur Kastemirov   feedback calculator
200
201
202
                          $view = 'feedback';
                          $isLoaded = $model->load(Yii::$app->request->post());
                          break;
21452189   Timur Kastemirov   feedback calculat...
203
                      
31257104   Timur Kastemirov   feedback calculator
204
                      case Feedback::SCENARIO_CALLBACK :
21452189   Timur Kastemirov   feedback calculat...
205
                          $model = new Feedback([ 'scenario' => Feedback::SCENARIO_CALLBACK ]);
31257104   Timur Kastemirov   feedback calculator
206
207
208
                          $view = 'feedback';
                          $isLoaded = $model->load(Yii::$app->request->post());
                          break;
21452189   Timur Kastemirov   feedback calculat...
209
                      
31257104   Timur Kastemirov   feedback calculator
210
                      case Feedback::SCENARIO_CALCULATOR:
21452189   Timur Kastemirov   feedback calculat...
211
                          $model = new Feedback([ 'scenario' => Feedback::SCENARIO_CALCULATOR ]);
31257104   Timur Kastemirov   feedback calculator
212
213
                          $view = 'calculator';
                          $isLoaded = $model->load(Yii::$app->request->post());
a6795694   Timur Kastemirov   feedback calculat...
214
                          $model->setCalcJsonInfo();
31257104   Timur Kastemirov   feedback calculator
215
                          break;
21452189   Timur Kastemirov   feedback calculat...
216
                      
31257104   Timur Kastemirov   feedback calculator
217
218
219
220
221
222
                      default:
                          $model = new Feedback();
                          $view = 'feedback';
                          $isLoaded = $model->load(Yii::$app->request->post());
                  }
                  
31257104   Timur Kastemirov   feedback calculator
223
                  if ($isLoaded && $model->save()) {
06692811   Eugeny Galkovskiy   first commit
224
225
                      
                      $mailer->compose(
31257104   Timur Kastemirov   feedback calculator
226
                          $view,
06692811   Eugeny Galkovskiy   first commit
227
228
229
230
                          [
                              'model' => $model,
                          ]
                      )
a78f6f00   Timur Kastemirov   feedback mail
231
232
                             ->setFrom('artbox@domain.com')//                           ->setTo($settings->email)
                             ->setTo(
21452189   Timur Kastemirov   feedback calculat...
233
234
235
236
237
                              [
                                  'tamerlan8.05.92@gmail.com',
                                  'mpav@artweb.ua',
                              ]
                          )
06692811   Eugeny Galkovskiy   first commit
238
239
240
241
242
243
                             ->setSubject(\Yii::t('app', 'Feedback'))
                             ->send();
                      
                      return [
                          'success' => true,
                          'message' => 'Success message',
21452189   Timur Kastemirov   feedback calculat...
244
245
                          'view'    => $view,
                          'model'   => $model->attributeValues,
a78f6f00   Timur Kastemirov   feedback mail
246
                          'alert'   => $this->renderPartial('success_alert'),
06692811   Eugeny Galkovskiy   first commit
247
248
                      ];
                  } else {
a78f6f00   Timur Kastemirov   feedback mail
249
                      Yii::$app->response->setStatusCode(500);
06692811   Eugeny Galkovskiy   first commit
250
251
252
253
254
255
256
257
                      return [
                          'success' => false,
                          'error'   => $model->errors,
                      ];
                  }
              }
          }
      }