Commit 31257104230ab9181cb3dce15e56122b3a752f4c

Authored by Timur Kastemirov
1 parent de188496

feedback calculator

common/models/Feedback.php
... ... @@ -13,6 +13,7 @@
13 13 * Class Feedback
14 14 *
15 15 * @property string $topic
  16 + * @property string $calc_json_info
16 17 *
17 18 * @package common\models
18 19 */
... ... @@ -20,7 +21,39 @@
20 21 {
21 22  
22 23 const SCENARIO_CALCULATOR = 'calculator';
  24 + const calculator_attributes = [
  25 + 'adress', 'module_install_angle', 'latitude', 'longitude',
  26 + 'south_deviation', 'power_station_type', 'area', 'power',
  27 + 'budget', 'day_consumption', 'month_consumption', 'consumptors_total_power',
  28 + 'autonomous_days'
  29 + ];
23 30  
  31 + private $attributeValues = [];
  32 +
  33 + public function __set($name, $value)
  34 + {
  35 + if(in_array($name, self::calculator_attributes)){
  36 + $this->attributeValues[$name] = $value;
  37 + }
  38 + else{
  39 + parent::__set($name, $value);
  40 + }
  41 + }
  42 +
  43 + public function __get($name)
  44 + {
  45 + if(in_array($name, self::calculator_attributes)){
  46 + return $this->attributeValues[$name]??'';
  47 + }
  48 + else{
  49 + return parent::__get($name);
  50 + }
  51 + }
  52 +
  53 + public function getCalculatorAttributes(){
  54 + return $this->attributeValues;
  55 + }
  56 +
24 57 public function scenarios()
25 58 {
26 59 return array_merge(
... ... @@ -40,14 +73,16 @@
40 73 'returnUrl',
41 74 'topic',
42 75 ],
43   - self::SCENARIO_CALCULATOR => [
44   - 'name',
45   - 'phone',
46   - 'returnUrl',
47   - 'topic',
48   - 'calc_json_info',
49   -
50   - ]
  76 + self::SCENARIO_CALCULATOR => array_merge(
  77 + [
  78 + 'name',
  79 + 'phone',
  80 + 'returnUrl',
  81 + 'topic',
  82 + 'calc_json_info',
  83 + ],
  84 + self::calculator_attributes
  85 + )
51 86 ]
52 87 );
53 88 }
... ... @@ -73,7 +108,15 @@
73 108 ],
74 109 [
75 110 [
76   - 'calc_json_info'
  111 + 'name',
  112 + 'phone',
  113 + 'email',
  114 + 'returnUrl',
  115 + 'topic',
  116 + 'calc_json_info',
  117 +
  118 + 'adress',
  119 + 'module_install_angle'
77 120 ],
78 121 'required',
79 122 'on' => self::SCENARIO_CALCULATOR,
... ... @@ -82,5 +125,13 @@
82 125 );
83 126 }
84 127  
  128 + public function setCalcJsonInfo( array $value)
  129 + {
  130 + $this->calc_json_info = json_encode($value);
  131 + }
85 132  
  133 + public function getCalcJsonInfo() : array
  134 + {
  135 + return json_decode($this->calc_json_info);
  136 + }
86 137 }
87 138 \ No newline at end of file
... ...
frontend/controllers/SiteController.php
... ... @@ -158,11 +158,45 @@
158 158 if (empty(Yii::$app->request->post())) {
159 159 throw new BadRequestHttpException();
160 160 } else {
161   - $model = new Feedback();
162   - if ($model->load(Yii::$app->request->post()) && $model->save()) {
  161 +
  162 + switch (Yii::$app->request->post('topic')){
  163 + case Feedback::SCENARIO_FEEDBACK :
  164 + $model = new Feedback(['scenario' => Feedback::SCENARIO_FEEDBACK]);
  165 + $view = 'feedback';
  166 + $isLoaded = $model->load(Yii::$app->request->post());
  167 + break;
  168 +
  169 + case Feedback::SCENARIO_CALLBACK :
  170 + $model = new Feedback(['scenario' => Feedback::SCENARIO_CALLBACK]);
  171 + $view = 'feedback';
  172 + $isLoaded = $model->load(Yii::$app->request->post());
  173 + break;
  174 +
  175 + case Feedback::SCENARIO_CALCULATOR:
  176 + $model = new Feedback(['scenario' => Feedback::SCENARIO_CALCULATOR]);
  177 + $view = 'calculator';
  178 + $isLoaded = $model->load(Yii::$app->request->post());
  179 + $newPost = [];
  180 + foreach (Feedback::calculator_attributes as $calculator_attribute_name){
  181 + $calculator_attribute_value = Yii::$app->request->post($calculator_attribute_name);
  182 + if( isset($calculator_attribute_value) && !empty($calculator_attribute_value) ){
  183 + $newPost[$calculator_attribute_name] = $calculator_attribute_value;
  184 + }
  185 + }
  186 + $model->setCalcJsonInfo($newPost);
  187 + break;
  188 +
  189 + default:
  190 + $model = new Feedback();
  191 + $view = 'feedback';
  192 + $isLoaded = $model->load(Yii::$app->request->post());
  193 + }
  194 +
  195 +
  196 + if ($isLoaded && $model->save()) {
163 197  
164 198 $mailer->compose(
165   - 'feedback',
  199 + $view,
166 200 [
167 201 'model' => $model,
168 202 ]
... ...
frontend/views/layouts/main.php
... ... @@ -245,16 +245,11 @@
245 245 <div class="container">
246 246 <div class="cont">
247 247 <a class="home_mob_link" href="<?php echo Url::home(); ?>">
248   - <?php
249   - /*echo ImageHelper::set($logo)
250   - ->setHeight(42)
251   - ->renderImage(
252   - [
253   - 'alt' => $settings->name,
254   - ]
255   - )*/
256   - ?>
257   - <img src="/img/logo_kb.png" alt="<?= $settings->name; ?>" class="static_logo_img">
  248 + <img
  249 + src="/img/logo_kb.png"
  250 + alt="<?= $settings->name; ?>"
  251 + class="static_logo_img"
  252 + >
258 253 </a>
259 254 <div class="static_logo_about_mob"><?= $settings->about; ?></div>
260 255 </div>
... ... @@ -270,16 +265,11 @@
270 265 <div class="navbar-header">
271 266  
272 267 <a class="navbar-brand home" href="<?php echo Url::home(); ?>">
273   - <?php
274   - /*echo ImageHelper::set($logo)
275   - ->setHeight(42)
276   - ->renderImage(
277   - [
278   - 'alt' => $settings->name,
279   - ]
280   - )*/
281   - ?>
282   - <img src="/img/logo_kb.png" alt="<?= $settings->name; ?>" class="static_logo_img">
  268 + <img
  269 + src="/img/logo_kb.png"
  270 + alt="<?= $settings->name; ?>"
  271 + class="static_logo_img"
  272 + >
283 273 </a>
284 274 <div class="static_logo_about"><?= $settings->about; ?></div>
285 275 <div class="navbar-buttons">
... ... @@ -434,109 +424,239 @@
434 424 <h3 class="modal-title text-center" id="Login"><?=\Yii::t('app', 'anketa_ses1')?></h3>
435 425 </div>
436 426 <div class="modal-body">
437   - <form action="" id="calculate-form">
438   - <div class="row calculate-main-wr">
  427 +
  428 + <?php
  429 + $feedback = new Feedback(['scenario' => Feedback::SCENARIO_CALCULATOR]);
  430 +
  431 + $form = ActiveForm::begin(
  432 + [
  433 + 'id' => 'calculate-form',
  434 + 'method' => 'POST',
  435 + 'action' => '/site/feedback',
  436 + ]
  437 + );
  438 + ?>
  439 +
  440 + <div class="row calculate-main-wr">
439 441 <div class="col-md-8 col-md-offset-2">
440   - <p style="font-weight:bold;"><?=\Yii::t('app', 'contact_datas')?></p>
441   - <div class="form-group field-calculate-name required">
442   - <label class="control-label" for="calculate-name"><?=\Yii::t('app', 'name1')?></label>
443   - <input type="text" id="calculate-name" class="form-control" name="Calculate[name]" aria-required="true">
444   -
445   - <p class="help-block help-block-error"></p>
446   - </div>
447   - <div class="form-group field-calculate-phone required">
448   - <label class="control-label" for="calculate-phone"><?=\Yii::t('app', 'phone1')?></label>
449   - <input type="text" id="calculate-phone" class="form-control" name="Calculate[phone]" aria-required="true">
450   -
451   - <p class="help-block help-block-error"></p>
  442 + <p style="font-weight:bold;"><?= \Yii::t('app', 'contact_datas') ?></p>
  443 +
  444 + <?= $form->field($feedback, 'topic')
  445 + ->hiddenInput(['value' => Feedback::SCENARIO_CALCULATOR])
  446 + ->label(false)?>
  447 +
  448 + <?=$form->field($feedback, "name")->textInput()?>
  449 + <?=$form->field($feedback, "phone")->textInput()?>
  450 + <?=$form->field($feedback, "email")->textInput()?>
  451 +
  452 + </div>
  453 + </div>
  454 +
  455 + <div class="row">
  456 + <div class="col-md-12">
  457 + <p style="font-weight:bold;"><?= \Yii::t('app', 'ses_info_install') ?></p>
  458 + <div class="row">
  459 + <div class="col-md-6">
  460 +
  461 + <?=$form->field($feedback, "adress")
  462 + ->textInput()
  463 + ->label(
  464 + \Yii::t(
  465 + 'app',
  466 + 'address1'
  467 + )
  468 + )?>
  469 +
  470 + <?=$form->field($feedback, "module_install_angle")
  471 + ->textInput()
  472 + ->label(
  473 + \Yii::t(
  474 + 'app',
  475 + 'install_modules'
  476 + )
  477 + )?>
  478 +
  479 + </div>
  480 +
  481 + <div class="col-md-6">
  482 + <p class="coord1"><?= \Yii::t('app', 'coord1_title') ?>:</p>
  483 +
  484 + <?=$form->field($feedback, "latitude")
  485 + ->textInput()
  486 + ->label(
  487 + \Yii::t(
  488 + 'app',
  489 + 'Latitude'
  490 + )
  491 + )?>
  492 +
  493 + <?=$form->field($feedback, "longitude")
  494 + ->textInput()
  495 + ->label(
  496 + \Yii::t(
  497 + 'app',
  498 + 'Longitude'
  499 + )
  500 + )?>
  501 +
  502 + <?=$form->field($feedback, "south_deviation")
  503 + ->textInput()
  504 + ->label(
  505 + \Yii::t(
  506 + 'app',
  507 + 'south_deviation'
  508 + )
  509 + )?>
  510 +
  511 + </div>
452 512 </div>
453   - <div class="form-group field-calculate-email required">
454   - <label class="control-label" for="calculate-email"><?=\Yii::t('app', 'Email')?></label>
455   - <input type="text" id="calculate-email" class="form-control" name="Calculate[email]" aria-required="true">
456   -
457   - <p class="help-block help-block-error"></p>
  513 +
  514 + <div class="row">
  515 + <div class="col-md-6 text-center">
  516 + <img src="/img/form_img_1.jpg" class="img-responsive">
  517 + </div>
  518 + <div class="col-md-6 text-center">
  519 + <img src="/img/form_img_2.jpg" class="img-responsive">
  520 + </div>
458 521 </div>
  522 +
459 523 </div>
460   - </div>
461   - <div class="row">
462   - <div class="col-md-12">
463   - <p style="font-weight:bold;"><?=\Yii::t('app', 'ses_info_install')?></p>
464   - <div class="row">
465   - <div class="col-md-6">
466   - <div class="form-group field-calculate-email required">
467   - <label class="control-label"><?=\Yii::t('app', 'address1')?></label>
468   - <input type="text" class="form-control">
469   -
470   - <p class="help-block help-block-error"></p>
471   - </div>
472   - <div class="form-group field-calculate-email required">
473   - <label class="control-label"><?=\Yii::t('app', 'install_modules')?></label>
474   - <input type="text" class="form-control">
475   -
476   - <p class="help-block help-block-error"></p>
477   - </div>
  524 + </div>
  525 +
  526 + <div class="row">
  527 + <div class="col-md-12">
  528 + <p style="font-weight:bold;"><?= \Yii::t('app', 'info_power_ses') ?></p>
  529 + <div class="row">
  530 + <div class="col-md-12">
  531 + <div class="row" style="margin-bottom: 15px;">
  532 +
  533 + <?=$form->field($feedback, "power_station_type")
  534 + ->radioList(
  535 + [
  536 + "Автономная" => "<span style=\"margin-left:5px;\">".\Yii::t('app', 'authonomous')."</span>",
  537 + "Сетевая" => '<span style="margin-left:5px;">'.\Yii::t('app', 'ses_network')."</span>",
  538 + ],
  539 + [
  540 + 'tag' => false,
  541 + 'unselect' => null,
  542 + 'encode' => false,
  543 + 'item' => function ($index, $label, $name, $checked, $value){
  544 + $content = '<div class="col-md-3 col-sm-12 col-xs-12">';
  545 +
  546 + $content .= Html::radio(
  547 + $name,
  548 + ($index===0)?true:false,
  549 + [
  550 + 'label' => $label,
  551 + 'value' => $value,
  552 + ]
  553 + );
  554 +
  555 + $content .= '</div>';
  556 +
  557 + return $content;
  558 + },
  559 + ]
  560 + )->label(false)?>
  561 +
478 562 </div>
479   - <div class="col-md-6">
480   - <p class="coord1"><?=\Yii::t('app', 'coord1_title')?>:</p>
481   - <div class="form-group field-calculate-email">
482   - <label class="control-label"><?=\Yii::t('app', 'Latitude')?>:</label>
483   - <input type="text" class="form-control">
484   -
485   - <p class="help-block help-block-error"></p>
  563 + </div>
  564 +
  565 + <div class="col-md-12">
  566 + <div class="row">
  567 + <div class="col-md-4">
  568 + <div class="form-group field-calculate-email">
  569 + <label class="control-label"><?= \Yii::t(
  570 + 'app',
  571 + 'info_area'
  572 + ) ?></label>
  573 + <input type="text" class="form-control">
  574 +
  575 + <p class="help-block help-block-error"></p>
  576 + </div>
486 577 </div>
487   - <div class="form-group field-calculate-email">
488   - <label class="control-label"><?=\Yii::t('app', 'Longitude')?>:</label>
489   - <input type="text" class="form-control">
490   -
491   - <p class="help-block help-block-error"></p>
  578 + <div class="col-md-4">
  579 + <div class="form-group field-calculate-email">
  580 + <label class="control-label"><?= \Yii::t(
  581 + 'app',
  582 + 'info_power'
  583 + ) ?></label>
  584 + <input type="text" class="form-control">
  585 +
  586 + <p class="help-block help-block-error"></p>
  587 + </div>
492 588 </div>
493   - <div class="form-group field-calculate-email">
494   - <label class="control-label"><?=\Yii::t('app', 'south_deviation')?>:</label>
495   - <input type="text" class="form-control">
496   -
497   - <p class="help-block help-block-error"></p>
  589 + <div class="col-md-4">
  590 + <div class="form-group field-calculate-email">
  591 + <label class="control-label"><?= \Yii::t(
  592 + 'app',
  593 + 'info_budget'
  594 + ) ?></label>
  595 + <input type="text" class="form-control">
  596 +
  597 + <p class="help-block help-block-error"></p>
  598 + </div>
498 599 </div>
499 600 </div>
500 601 </div>
501   - <div class="row">
502   - <div class="col-md-6 text-center"><img src="/img/form_img_1.jpg" class="img-responsive"></div>
503   - <div class="col-md-6 text-center"><img src="/img/form_img_2.jpg" class="img-responsive"></div>
504   - </div>
505 602 </div>
506 603 </div>
  604 + </div>
  605 +
  606 + <?php $form::end()?>
  607 +
  608 + <form action="" id="calculate-form">
  609 +
507 610 <div class="row">
508 611 <div class="col-md-12">
509   - <p style="font-weight:bold;"><?=\Yii::t('app', 'info_power_ses')?></p>
  612 + <p style="font-weight:bold;"><?= \Yii::t('app', 'info_power_ses') ?></p>
510 613 <div class="row">
511 614 <div class="col-md-12">
512 615 <div class="row" style="margin-bottom: 15px;">
513   - <div class="col-md-3 col-sm-12 col-xs-12"><input class="custom-radio" id="custom-radio-Автономная" type="radio" name="Calculate[mode]" value="Автономная"><label for="custom-radio-Автономная"></label><span style="margin-left:5px;"><?=\Yii::t('app', 'authonomous')?></span></div>
514   - <div class="col-md-3 col-sm-12 col-xs-12"><input class="custom-radio" id="custom-radio-Сетевая" type="radio" name="Calculate[mode]" value="Сетевая"><label for="custom-radio-Сетевая"></label><span style="margin-left:5px;"><?=\Yii::t('app', 'ses_network')?></span></div>
  616 + <div class="col-md-3 col-sm-12 col-xs-12">
  617 + <input class="custom-radio" id="custom-radio-Автономная" type="radio" name="Calculate[mode]" value="Автономная"><label for="custom-radio-Автономная"></label><span style="margin-left:5px;"><?= \Yii::t(
  618 + 'app',
  619 + 'authonomous'
  620 + ) ?></span></div>
  621 + <div class="col-md-3 col-sm-12 col-xs-12">
  622 + <input class="custom-radio" id="custom-radio-Сетевая" type="radio" name="Calculate[mode]" value="Сетевая"><label for="custom-radio-Сетевая"></label><span style="margin-left:5px;"><?= \Yii::t(
  623 + 'app',
  624 + 'ses_network'
  625 + ) ?></span></div>
515 626 </div>
516 627 </div>
517 628 <div class="col-md-12">
518 629 <div class="row">
519 630 <div class="col-md-4">
520 631 <div class="form-group field-calculate-email">
521   - <label class="control-label"><?=\Yii::t('app', 'info_area')?></label>
  632 + <label class="control-label"><?= \Yii::t(
  633 + 'app',
  634 + 'info_area'
  635 + ) ?></label>
522 636 <input type="text" class="form-control">
523   -
  637 +
524 638 <p class="help-block help-block-error"></p>
525 639 </div>
526 640 </div>
527 641 <div class="col-md-4">
528 642 <div class="form-group field-calculate-email">
529   - <label class="control-label"><?=\Yii::t('app', 'info_power')?></label>
  643 + <label class="control-label"><?= \Yii::t(
  644 + 'app',
  645 + 'info_power'
  646 + ) ?></label>
530 647 <input type="text" class="form-control">
531   -
  648 +
532 649 <p class="help-block help-block-error"></p>
533 650 </div>
534 651 </div>
535 652 <div class="col-md-4">
536 653 <div class="form-group field-calculate-email">
537   - <label class="control-label"><?=\Yii::t('app', 'info_budget')?></label>
  654 + <label class="control-label"><?= \Yii::t(
  655 + 'app',
  656 + 'info_budget'
  657 + ) ?></label>
538 658 <input type="text" class="form-control">
539   -
  659 +
540 660 <p class="help-block help-block-error"></p>
541 661 </div>
542 662 </div>
... ... @@ -545,46 +665,66 @@
545 665 </div>
546 666 </div>
547 667 </div>
  668 +
548 669 <div class="row">
549 670 <div class="col-md-12">
550   - <p style="font-weight:bold;"><?=\Yii::t('app', 'info_power_ses_auth')?></p>
  671 + <p style="font-weight:bold;"><?= \Yii::t(
  672 + 'app',
  673 + 'info_power_ses_auth'
  674 + ) ?></p>
551 675 <div class="row">
552 676 <div class="col-md-6">
553 677 <div class="form-group field-calculate-email">
554   - <label class="control-label"><?=\Yii::t('app', 'info_auth_day')?></label>
  678 + <label class="control-label"><?= \Yii::t(
  679 + 'app',
  680 + 'info_auth_day'
  681 + ) ?></label>
555 682 <input type="text" class="form-control">
556   -
  683 +
557 684 <p class="help-block help-block-error"></p>
558 685 </div>
559 686 <div class="form-group field-calculate-email">
560   - <label class="control-label"><?=\Yii::t('app', 'info_auth_month')?></label>
  687 + <label class="control-label"><?= \Yii::t(
  688 + 'app',
  689 + 'info_auth_month'
  690 + ) ?></label>
561 691 <input type="text" class="form-control">
562   -
  692 +
563 693 <p class="help-block help-block-error"></p>
564 694 </div>
565 695 </div>
566 696 <div class="col-md-6">
567 697 <div class="form-group field-calculate-email">
568   - <label class="control-label"><?=\Yii::t('app', 'info_auth_pwr_all')?></label>
  698 + <label class="control-label"><?= \Yii::t(
  699 + 'app',
  700 + 'info_auth_pwr_all'
  701 + ) ?></label>
569 702 <input type="text" class="form-control">
570   -
  703 +
571 704 <p class="help-block help-block-error"></p>
572 705 </div>
573 706 <div class="form-group field-calculate-email">
574   - <label class="control-label"><?=\Yii::t('app', 'info_auth_pwr_days')?></label>
  707 + <label class="control-label"><?= \Yii::t(
  708 + 'app',
  709 + 'info_auth_pwr_days'
  710 + ) ?></label>
575 711 <input type="text" class="form-control">
576   -
  712 +
577 713 <p class="help-block help-block-error"></p>
578 714 </div>
579 715 </div>
580 716 </div>
581 717 </div>
582 718 </div>
583   -
  719 +
584 720 <p class="text-center submit-wr">
585   - <button type="submit" class="send-form btn btn-lg btn-template-primary"><?=\Yii::t('app', 'info_calculate')?></button>
  721 + <button type="submit" class="send-form btn btn-lg btn-template-primary"><?= \Yii::t(
  722 + 'app',
  723 + 'info_calculate'
  724 + ) ?></button>
586 725 </p>
587 726 </form>
  727 +
588 728 </div>
589 729 </div>
590 730 </div>
... ...
frontend/views/site/index.php
... ... @@ -40,7 +40,15 @@ JS;
40 40 );
41 41 ?>
42 42 <div class="box-simple">
43   - <a href="#" class="btn button1 icon_phone modaled init-button-consultation" data-title="Заказать консультацию" data-toggle="modal" data-target="#feedback-modal">Получить <span>консультацию специалиста</span></a>
  43 + <a
  44 + href="#"
  45 + class="btn button1 icon_phone modaled init-button-consultation"
  46 + data-title="Заказать консультацию"
  47 + data-toggle="modal"
  48 + data-target="#feedback-modal"
  49 + >
  50 + Получить <span>консультацию специалиста</span>
  51 + </a>
44 52 </div>
45 53 <!-- тут место для слайдера -->
46 54 </section>
... ...
frontend/web/js/script.js
... ... @@ -19,7 +19,7 @@ $(
19 19 f.reset();
20 20 $('#feedback-modal')
21 21 .modal('hide');
22   - $(this).data('yiiActiveForm').validated = false;
  22 + form.data('yiiActiveForm').validated = false;
23 23 $('#success-modal')
24 24 .modal('show');
25 25 },
... ...