Blame view

common/models/Feedback.php 5.16 KB
a78f6f00   Timur Kastemirov   feedback mail
1
  <?php
f6303c6a   alex   Добавлено:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
57
58
  
  namespace common\models;
  
  /**
   * User: timur
   * Date: 31.01.18
   * Time: 10:56
   */
  
  use artbox\core\models\Feedback as ArtboxFeedback;
  
  /**
   * Class Feedback
   *
   * @property string $topic
   * @property string $calc_json_info
   * @package common\models
   */
  class Feedback extends ArtboxFeedback
  {
  
      const SCENARIO_CALCULATOR = 'calculator';
      const calculator_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',
      ];
  
      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'        => "Суток автономности",
      ];
  
      public $attributeValues = [];
  
      public function __set($name, $value)
a78f6f00   Timur Kastemirov   feedback mail
59
      {
f6303c6a   alex   Добавлено:
60
61
62
          if (in_array($name, self::calculator_attributes)) {
              if (isset($value) && !empty($value)) {
                  $this->attributeValues[ $name ] = $value;
31257104   Timur Kastemirov   feedback calculator
63
              }
f6303c6a   alex   Добавлено:
64
65
          } else {
              parent::__set($name, $value);
31257104   Timur Kastemirov   feedback calculator
66
          }
f6303c6a   alex   Добавлено:
67
68
69
70
71
72
73
74
      }
  
      public function __get($name)
      {
          if (in_array($name, self::calculator_attributes)) {
              return $this->attributeValues[ $name ]??'';
          } else {
              return parent::__get($name);
31257104   Timur Kastemirov   feedback calculator
75
          }
f6303c6a   alex   Добавлено:
76
77
78
79
80
81
      }
  
      public function getCalculatorAttributes()
      {
          return $this->attributeValues;
      }
f6303c6a   alex   Добавлено:
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
      public function scenarios()
      {
          return array_merge(
              parent::scenarios(),
              [
                  parent::SCENARIO_FEEDBACK => [
                      'name',
                      'email',
                      'phone',
                      'message',
                      'returnUrl',
                      'topic',
                  ],
                  parent::SCENARIO_CALLBACK => [
                      'name',
                      'phone',
                      'message',
                      'returnUrl',
                      'topic',
                  ],
                  self::SCENARIO_CALCULATOR => array_merge(
                      [
a78f6f00   Timur Kastemirov   feedback mail
104
105
                          'name',
                          'phone',
f6303c6a   alex   Добавлено:
106
                          'email',
a78f6f00   Timur Kastemirov   feedback mail
107
108
                          'returnUrl',
                          'topic',
f6303c6a   alex   Добавлено:
109
                          'calc_json_info',
a78f6f00   Timur Kastemirov   feedback mail
110
                      ],
f6303c6a   alex   Добавлено:
111
112
113
114
115
116
117
118
119
120
121
122
                      self::calculator_attributes
                  ),
              ]
          );
      }
  
      public function rules()
      {
  
          return array_merge(
              parent::rules(),
              [
a78f6f00   Timur Kastemirov   feedback mail
123
124
                  [
                      [
f6303c6a   alex   Добавлено:
125
                          'topic',
a78f6f00   Timur Kastemirov   feedback mail
126
                      ],
f6303c6a   alex   Добавлено:
127
128
129
                      'required',
                  ],
                  [
a78f6f00   Timur Kastemirov   feedback mail
130
                      [
f6303c6a   alex   Добавлено:
131
                          'topic',
a78f6f00   Timur Kastemirov   feedback mail
132
                      ],
f6303c6a   alex   Добавлено:
133
134
135
136
                      'string',
                      'max' => 100,
                  ],
                  [
a78f6f00   Timur Kastemirov   feedback mail
137
                      [
f6303c6a   alex   Добавлено:
138
139
140
141
142
143
144
                          'name',
                          'phone',
                          'email',
                          'calc_json_info',
  
                          'adress',
                          'module_install_angle',
21452189   Timur Kastemirov   feedback calculat...
145
                      ],
f6303c6a   alex   Добавлено:
146
147
148
                      'required',
                      'on' => self::SCENARIO_CALCULATOR,
                  ],
c15dc821   alex   обновил фильтры
149
150
               
                  [['phone'],'string','length'=>[10,17],'message'=>'Введите данные в форму согласно заданному шаблону: +38(132) 456 78 89'],
b1aaea7f   alex   мелкие правки к в...
151
152
153
154
155
156
157
                  //[['phone'],'match','pattern'=>'/\+3?8?\(?([\d]{3}([ .-]?))\)?([ .-]?)([\d]{3}([ .-]?))\2([\d]{2}([ .-]?))([\d]{2}([ .-]?))/','message'=>'некорректный ввод поля. Значение должно иметь вид: +38(123) 456 78 79'],
                  
                  [['name'],'string','min'=>2,'message'=>\Yii::t('app','lowName')],
                  [['name'],'string','max'=>25,'message'=>\Yii::t('app','upName')],
                  [['email'],'string','max'=>25,'message'=>\Yii::t('app','upEmail')],
                  [['name'],'match','pattern' => '/^[а-яА-ЯёЁa-zA-Z\-\s]+$/','message'=> \Yii::t('app', 'wrongName')],
                  [['email'],'email','message'=>\Yii::t('app','wrongEmail')],
f6303c6a   alex   Добавлено:
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
  
              ]
          );
      }
  
      public function setCalcJsonInfo()
      {
          $this->calc_json_info = json_encode($this->attributeValues);
      }
  
      public function getCalcJsonInfo()
      {
          return json_decode($this->calc_json_info);
      }
  }