Blame view

common/models/Feedback.php 4.95 KB
a78f6f00   Timur Kastemirov   feedback mail
1
  <?php
21452189   Timur Kastemirov   feedback calculat...
2
      
a78f6f00   Timur Kastemirov   feedback mail
3
      namespace common\models;
21452189   Timur Kastemirov   feedback calculat...
4
      
a78f6f00   Timur Kastemirov   feedback mail
5
6
7
8
9
10
11
      /**
       * User: timur
       * Date: 31.01.18
       * Time: 10:56
       */
      
      use artbox\core\models\Feedback as ArtboxFeedback;
a78f6f00   Timur Kastemirov   feedback mail
12
13
14
15
16
  
      /**
       * Class Feedback
       *
       * @property string $topic
31257104   Timur Kastemirov   feedback calculator
17
       * @property string $calc_json_info
a78f6f00   Timur Kastemirov   feedback mail
18
19
20
21
22
23
       * @package common\models
       */
      class Feedback extends ArtboxFeedback
      {
          
          const SCENARIO_CALCULATOR = 'calculator';
31257104   Timur Kastemirov   feedback calculator
24
          const calculator_attributes = [
21452189   Timur Kastemirov   feedback calculat...
25
26
27
28
29
30
31
32
33
34
35
36
37
              'adress',
              'module_install_angle',
              'latitude',
              'longitude',
              'south_deviation',
              'power_station_type',
              'area',
              'power',
              'budget',
              'auth_day',
              'auth_month',
              'auth_pwr_all',
              'auth_pwr_days',
31257104   Timur Kastemirov   feedback calculator
38
          ];
21452189   Timur Kastemirov   feedback calculat...
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
          
          const translate_attributes = [
              'adress'               => "Адрес",
              'module_install_angle' => "Угол установки фотомодулей",
              'latitude'             => "Широта",
              'longitude'            => "Долгота",
              'south_deviation'      => "Отклонение от юга",
              'power_station_type'   => "Тип станции",
              'area'                 => "Площадь",
              'power'                => "Мощность",
              'budget'               => "Бюджет",
              'auth_day'             => "Суточное потребление в кВт*ч",
              'auth_month'           => "Месячное потребление в кВт*ч",
              'auth_pwr_all'         => "Мощность всех потребителей потребление в кВт*ч",
              'auth_pwr_days'        => "Суток автономности",
          ];
          
a6795694   Timur Kastemirov   feedback calculat...
56
          public $attributeValues = [];
31257104   Timur Kastemirov   feedback calculator
57
58
59
          
          public function __set($name, $value)
          {
21452189   Timur Kastemirov   feedback calculat...
60
61
62
              if (in_array($name, self::calculator_attributes)) {
                  if (isset($value) && !empty($value)) {
                      $this->attributeValues[ $name ] = $value;
a6795694   Timur Kastemirov   feedback calculat...
63
                  }
21452189   Timur Kastemirov   feedback calculat...
64
              } else {
31257104   Timur Kastemirov   feedback calculator
65
66
67
68
69
70
                  parent::__set($name, $value);
              }
          }
          
          public function __get($name)
          {
21452189   Timur Kastemirov   feedback calculat...
71
72
73
              if (in_array($name, self::calculator_attributes)) {
                  return $this->attributeValues[ $name ]??'';
              } else {
31257104   Timur Kastemirov   feedback calculator
74
75
76
                  return parent::__get($name);
              }
          }
21452189   Timur Kastemirov   feedback calculat...
77
78
79
          
          public function getCalculatorAttributes()
          {
31257104   Timur Kastemirov   feedback calculator
80
81
              return $this->attributeValues;
          }
21452189   Timur Kastemirov   feedback calculat...
82
          
a78f6f00   Timur Kastemirov   feedback mail
83
84
85
86
87
88
89
90
          public function scenarios()
          {
              return array_merge(
                  parent::scenarios(),
                  [
                      parent::SCENARIO_FEEDBACK => [
                          'name',
                          'email',
95eeaf74   Timur Kastemirov   success reply
91
                          'phone',
a78f6f00   Timur Kastemirov   feedback mail
92
93
94
95
96
97
98
99
100
101
102
                          'message',
                          'returnUrl',
                          'topic',
                      ],
                      parent::SCENARIO_CALLBACK => [
                          'name',
                          'phone',
                          'message',
                          'returnUrl',
                          'topic',
                      ],
31257104   Timur Kastemirov   feedback calculator
103
104
105
106
                      self::SCENARIO_CALCULATOR => array_merge(
                          [
                              'name',
                              'phone',
21452189   Timur Kastemirov   feedback calculat...
107
                              'email',
31257104   Timur Kastemirov   feedback calculator
108
109
110
111
112
                              'returnUrl',
                              'topic',
                              'calc_json_info',
                          ],
                          self::calculator_attributes
21452189   Timur Kastemirov   feedback calculat...
113
                      ),
a78f6f00   Timur Kastemirov   feedback mail
114
115
116
                  ]
              );
          }
21452189   Timur Kastemirov   feedback calculat...
117
          
a78f6f00   Timur Kastemirov   feedback mail
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
          public function rules()
          {
              
              return array_merge(
                  parent::rules(),
                  [
                      [
                          [
                              'topic',
                          ],
                          'required',
                      ],
                      [
                          [
                              'topic',
                          ],
                          'string',
                          'max' => 100,
                      ],
                      [
                          [
31257104   Timur Kastemirov   feedback calculator
139
140
141
                              'name',
                              'phone',
                              'email',
31257104   Timur Kastemirov   feedback calculator
142
143
144
                              'calc_json_info',
                              
                              'adress',
21452189   Timur Kastemirov   feedback calculat...
145
                              'module_install_angle',
a78f6f00   Timur Kastemirov   feedback mail
146
147
148
                          ],
                          'required',
                          'on' => self::SCENARIO_CALCULATOR,
21452189   Timur Kastemirov   feedback calculat...
149
                      ],
a78f6f00   Timur Kastemirov   feedback mail
150
151
152
153
                  ]
              );
          }
          
a6795694   Timur Kastemirov   feedback calculat...
154
          public function setCalcJsonInfo()
31257104   Timur Kastemirov   feedback calculator
155
          {
a6795694   Timur Kastemirov   feedback calculat...
156
              $this->calc_json_info = json_encode($this->attributeValues);
31257104   Timur Kastemirov   feedback calculator
157
          }
a78f6f00   Timur Kastemirov   feedback mail
158
          
21452189   Timur Kastemirov   feedback calculat...
159
          public function getCalcJsonInfo()
31257104   Timur Kastemirov   feedback calculator
160
161
162
          {
              return json_decode($this->calc_json_info);
          }
a78f6f00   Timur Kastemirov   feedback mail
163
      }