cd976a8d
Administrator
add event to comp...
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
namespace artweb\artbox\event\models;
use artweb\artbox\behaviors\SaveImgBehavior;
use artweb\artbox\ecommerce\models\Product;
use artweb\artbox\ecommerce\models\ProductVariant;
use artweb\artbox\language\behaviors\LanguageBehavior;
use Yii;
use yii\behaviors\TimestampBehavior;
use yii\helpers\ArrayHelper;
use yii\db\ActiveQuery;
use yii\web\Request;
/**
* This is the model class for table "event".
*
* @property integer $id
|
cd976a8d
Administrator
add event to comp...
|
19
|
* @property string $image
|
cd976a8d
Administrator
add event to comp...
|
20
21
22
23
|
* @property integer $created_at
* @property integer $updated_at
* @property integer $end_at
* @property integer $status
|
55bc4993
Administrator
add create_item t...
|
24
25
26
|
* @property integer $is_sale
* @property integer $is_event
* @property integer $percent
|
cd976a8d
Administrator
add event to comp...
|
27
|
* @property integer $banner
|
7749a734
Administrator
slider
|
28
|
* @property integer $type
|
cd976a8d
Administrator
add event to comp...
|
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
59
60
|
* * From language behavior *
* @property EventLang $lang
* @property EventLang[] $langs
* @property EventLang $objectLang
* @property string $ownerKey
* @property string $langKey
* @property EventLang[] $modelLangs
* @property bool $transactionStatus
* @method string getOwnerKey()
* @method void setOwnerKey( string $value )
* @method string getLangKey()
* @method void setLangKey( string $value )
* @method ActiveQuery getLangs()
* @method ActiveQuery getLang( integer $language_id )
* @method EventLang[] generateLangs()
* @method void loadLangs( Request $request )
* @method bool linkLangs()
* @method bool saveLangs()
* @method bool getTransactionStatus()
* * End language behavior *
* * From SaveImgBehavior
* @property string|null $imageFile
* @property string|null $imageUrl
* @method string|null getImageFile( int $field )
* @method string|null getImageUrl( int $field )
* * End SaveImgBehavior
*
*/
class Event extends \yii\db\ActiveRecord
{
public $imageUpload;
public $products_file;
|
55bc4993
Administrator
add create_item t...
|
61
62
|
const ACTIVE = 1;
const INACTIVE = 2;
|
cd976a8d
Administrator
add event to comp...
|
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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
110
111
112
113
114
115
116
117
|
/**
* @inheritdoc
*/
public static function tableName()
{
return 'event';
}
/**
* @inheritdoc
*/
public function behaviors()
{
return [
'img'=>[
'class' => SaveImgBehavior::className(),
'fields' => [
['name'=>'image','directory' => 'event' ],
['name'=>'banner','directory' => 'event' ],
]
],
TimestampBehavior::className(),
'language' => [
'class' => LanguageBehavior::className(),
'objectLang' => EventLang::className()
],
];
}
public function beforeSave($insert)
{
if (parent::beforeSave($insert)) {
$this->end_at = !empty($this->end_at) ? (string)strtotime($this->end_at) : '';
return true;
}
return false;
}
public function afterFind(){
$this->end_at = !empty($this->end_at) ? date("Y-m-d", $this->end_at) : '';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
|
55bc4993
Administrator
add create_item t...
|
118
|
[['created_at', 'updated_at','percent','status','is_sale','is_event','percent' ], 'integer'],
|
cd976a8d
Administrator
add event to comp...
|
119
|
[['image', 'end_at','banner'], 'string', 'max' => 255],
|
55bc4993
Administrator
add create_item t...
|
120
|
[['imageUpload','is_sale','is_event'], 'safe'],
|
cd976a8d
Administrator
add event to comp...
|
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
[['imageUpload'], 'file', 'extensions' => 'jpg, gif, png'],
[['products_file'], 'file'],
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => Yii::t('app', 'ID акции'),
'name' => Yii::t('app', 'name'),
'alias' => Yii::t('app', 'alias'),
'body' => Yii::t('app', 'body'),
'image' => Yii::t('app', 'image'),
'meta_title' => Yii::t('app', 'meta_title'),
'description' => Yii::t('app', 'description'),
'h1' => Yii::t('app', 'h1'),
'seo_text' => Yii::t('app', 'seo_text'),
'created_at' => Yii::t('app', 'created_at'),
'updated_at' => Yii::t('app', 'updated_at'),
'end_at' => Yii::t('app', 'end_at'),
'status' => Yii::t('app', 'Статус акции'),
'products_file' => Yii::t('app', 'Загрузка файла'),
|
55bc4993
Administrator
add create_item t...
|
146
|
'is_sale' => Yii::t('app', 'Распродажа'),
|
cd976a8d
Administrator
add event to comp...
|
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
'percent' => Yii::t('app', 'Процент'),
'is_event' => Yii::t('app', 'Акция'),
];
}
public function isActive(){
if($this->status){
if(!empty($this->end_at) && (strtotime($this->end_at) <= strtotime(date("Y-m-d")))){
return false;
}
return true;
}
return false;
}
|
7749a734
Administrator
slider
|
165
166
167
168
169
170
171
172
173
174
175
|
public function getType(){
if($this->is_event){
return "promo";
} else if($this->is_sale){
return "sale";
} else {
return "promo";
}
}
|
cd976a8d
Administrator
add event to comp...
|
176
177
178
179
180
181
182
183
184
|
public function goEvent($file) {
set_time_limit(0);
$handle = fopen($file, 'r');
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
|
64dbf8bc
Administrator
event
|
185
186
|
if(isset($data[0])){
$product = ProductVariant::find()->where(['sku' => $data[0]])->joinWith('product')->one();
|
cd976a8d
Administrator
add event to comp...
|
187
|
if($product instanceof ProductVariant){
|
64dbf8bc
Administrator
event
|
188
|
$model= EventsToProducts::find()->where(['event_id' =>$this->id, 'product_id' => $product->product->id ])->one();
|
cd976a8d
Administrator
add event to comp...
|
189
190
|
if(!$model instanceof EventsToProducts){
$model = new EventsToProducts;
|
64dbf8bc
Administrator
event
|
191
|
$model->event_id = $this->id;
|
cd976a8d
Administrator
add event to comp...
|
192
193
194
195
196
197
198
199
200
201
202
203
204
|
$model->product_id = $product->product->id;
$model->save();
}
}
}
}
fclose($handle);
unlink($file);
}
public function getProducts(){
|
64dbf8bc
Administrator
event
|
205
|
return $this->hasMany(Product::className(),['id' => 'product_id'] )->viaTable('events_to_products', ['event_id' => 'id']);
|
cd976a8d
Administrator
add event to comp...
|
206
207
208
|
}
public static function getSaleEvents(){
|
55bc4993
Administrator
add create_item t...
|
209
|
return ArrayHelper::toArray(self::find()->select('percent')->distinct('percent')->where('is_sale=true AND percent IS NOT NULL')->orderBy('percent')->all());
|
cd976a8d
Administrator
add event to comp...
|
210
211
212
|
}
}
|