Blame view

common/models/Feedback.php 4.92 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
91
92
93
94
95
96
97
98
99
100
101
          public function scenarios()
          {
              return array_merge(
                  parent::scenarios(),
                  [
                      parent::SCENARIO_FEEDBACK => [
                          'name',
                          'email',
                          'message',
                          'returnUrl',
                          'topic',
                      ],
                      parent::SCENARIO_CALLBACK => [
                          'name',
                          'phone',
                          'message',
                          'returnUrl',
                          'topic',
                      ],
31257104   Timur Kastemirov   feedback calculator
102
103
104
105
                      self::SCENARIO_CALCULATOR => array_merge(
                          [
                              'name',
                              'phone',
21452189   Timur Kastemirov   feedback calculat...
106
                              'email',
31257104   Timur Kastemirov   feedback calculator
107
108
109
110
111
                              'returnUrl',
                              'topic',
                              'calc_json_info',
                          ],
                          self::calculator_attributes
21452189   Timur Kastemirov   feedback calculat...
112
                      ),
a78f6f00   Timur Kastemirov   feedback mail
113
114
115
                  ]
              );
          }
21452189   Timur Kastemirov   feedback calculat...
116
          
a78f6f00   Timur Kastemirov   feedback mail
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
          public function rules()
          {
              
              return array_merge(
                  parent::rules(),
                  [
                      [
                          [
                              'topic',
                          ],
                          'required',
                      ],
                      [
                          [
                              'topic',
                          ],
                          'string',
                          'max' => 100,
                      ],
                      [
                          [
31257104   Timur Kastemirov   feedback calculator
138
139
140
                              'name',
                              'phone',
                              'email',
31257104   Timur Kastemirov   feedback calculator
141
142
143
                              'calc_json_info',
                              
                              'adress',
21452189   Timur Kastemirov   feedback calculat...
144
                              'module_install_angle',
a78f6f00   Timur Kastemirov   feedback mail
145
146
147
                          ],
                          'required',
                          'on' => self::SCENARIO_CALCULATOR,
21452189   Timur Kastemirov   feedback calculat...
148
                      ],
a78f6f00   Timur Kastemirov   feedback mail
149
150
151
152
                  ]
              );
          }
          
a6795694   Timur Kastemirov   feedback calculat...
153
          public function setCalcJsonInfo()
31257104   Timur Kastemirov   feedback calculator
154
          {
a6795694   Timur Kastemirov   feedback calculat...
155
              $this->calc_json_info = json_encode($this->attributeValues);
31257104   Timur Kastemirov   feedback calculator
156
          }
a78f6f00   Timur Kastemirov   feedback mail
157
          
21452189   Timur Kastemirov   feedback calculat...
158
          public function getCalcJsonInfo()
31257104   Timur Kastemirov   feedback calculator
159
160
161
          {
              return json_decode($this->calc_json_info);
          }
a78f6f00   Timur Kastemirov   feedback mail
162
      }