Blame view

common/models/ProductSpec.php 4.93 KB
cc658b4c   Yarik   Big commit
1
2
3
4
  <?php
      
      namespace common\models;
      
d55d2fe0   Yarik   Multilanguage
5
      use common\modules\language\behaviors\LanguageBehavior;
cc658b4c   Yarik   Big commit
6
      use common\modules\product\models\Product;
b569ac34   Eugeny Galkovskiy   MESSAGES !!!! EVGEN!
7
      use Yii;
d55d2fe0   Yarik   Multilanguage
8
9
10
      use yii\db\ActiveQuery;
      use yii\db\ActiveRecord;
      use yii\web\Request;
cc658b4c   Yarik   Big commit
11
12
13
14
      use yii\web\UploadedFile;
      
      /**
       * This is the model class for table "product_spec".
72a992f5   Yarik   Import browser v1.0
15
16
17
18
19
       * @property integer           $product_spec_id
       * @property integer           $product_id
       * @property string            $tech_spec_link
       * @property string            $tech_char_link
       * @property Product           $product
d55d2fe0   Yarik   Multilanguage
20
       * * From language behavior *
72a992f5   Yarik   Import browser v1.0
21
22
23
24
25
26
27
       * @property ProductSpecLang   $lang
       * @property ProductSpecLang[] $langs
       * @property ProductSpecLang   $object_lang
       * @property string            $ownerKey
       * @property string            $langKey
       * @property ProductSpecLang[] $model_langs
       * @property bool              $transactionStatus
d55d2fe0   Yarik   Multilanguage
28
       * @method string           getOwnerKey()
72a992f5   Yarik   Import browser v1.0
29
       * @method void             setOwnerKey( string $value )
d55d2fe0   Yarik   Multilanguage
30
       * @method string           getLangKey()
72a992f5   Yarik   Import browser v1.0
31
       * @method void             setLangKey( string $value )
d55d2fe0   Yarik   Multilanguage
32
33
34
       * @method ActiveQuery      getLangs()
       * @method ActiveQuery      getLang( integer $language_id )
       * @method ProductSpecLang[]    generateLangs()
72a992f5   Yarik   Import browser v1.0
35
36
37
38
       * @method void             loadLangs( Request $request )
       * @method bool             linkLangs()
       * @method bool             saveLangs()
       * @method bool             getTransactionStatus()
d55d2fe0   Yarik   Multilanguage
39
       * * End language behavior *
cc658b4c   Yarik   Big commit
40
       */
72a992f5   Yarik   Import browser v1.0
41
      class ProductSpec extends ActiveRecord
cc658b4c   Yarik   Big commit
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
      {
          
          /**
           * @var UploadedFile
           */
          public $techSpecFile;
          
          /**
           * @var UploadedFile
           */
          public $techCharFile;
          
          /**
           * @inheritdoc
           */
          public static function tableName()
          {
              return 'product_spec';
          }
          
d55d2fe0   Yarik   Multilanguage
62
63
64
65
66
67
68
69
          public function behaviors()
          {
              return [
                  'language' => [
                      'class' => LanguageBehavior::className(),
                  ],
              ];
          }
72a992f5   Yarik   Import browser v1.0
70
          
cc658b4c   Yarik   Big commit
71
72
73
74
75
76
77
78
          /**
           * @inheritdoc
           */
          public function rules()
          {
              return [
                  [
                      [
cc658b4c   Yarik   Big commit
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
                          'techSpecFile',
                          'techCharFile',
                      ],
                      'file',
                      'extensions' => 'txt, pdf, xls, xlsx',
                  ],
              ];
          }
          
          /**
           * @inheritdoc
           */
          public function attributeLabels()
          {
              return [
b569ac34   Eugeny Galkovskiy   MESSAGES !!!! EVGEN!
94
95
96
97
98
99
                  'product_spec_id' => Yii::t('app', 'product_spec_id'),
                  'product_id'      => Yii::t('app', 'product_id'),
                  'tech_spec_link'  => Yii::t('app', 'tech_spec_link'),
                  'tech_char_link'  => Yii::t('app', 'tech_char_link'),
                  'techSpecFile'    => Yii::t('app', 'techSpecFile'),
                  'techCharFile'    => Yii::t('app', 'techCharFile'),
cc658b4c   Yarik   Big commit
100
101
102
103
104
105
              ];
          }
          
          public function upload()
          {
              $storage = \Yii::getAlias('@storage');
72a992f5   Yarik   Import browser v1.0
106
              $product_dir = $storage . '/product_spec/' . $this->product_id;
cc658b4c   Yarik   Big commit
107
108
109
110
              if(!is_dir($product_dir)) {
                  mkdir($product_dir);
              }
              if($this->validate()) {
72a992f5   Yarik   Import browser v1.0
111
112
113
                  if(!empty( $this->techSpecFile )) {
                      $path = $product_dir . '/' . $this->techSpecFile->baseName . '.' . $this->techSpecFile->extension;
                      $this->tech_spec_link = $this->techSpecFile->baseName . '.' . $this->techSpecFile->extension;
cc658b4c   Yarik   Big commit
114
115
                      $this->techSpecFile->saveAs($path);
                  }
72a992f5   Yarik   Import browser v1.0
116
117
118
                  if(!empty( $this->techCharFile )) {
                      $path = $product_dir . '/' . $this->techCharFile->baseName . '.' . $this->techCharFile->extension;
                      $this->tech_char_link = $this->techCharFile->baseName . '.' . $this->techCharFile->extension;
cc658b4c   Yarik   Big commit
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
                      $this->techCharFile->saveAs($path);
                  }
                  return true;
              } else {
                  return false;
              }
          }
          
          /**
           * @return \yii\db\ActiveQuery
           */
          public function getProduct()
          {
              return $this->hasOne(Product::className(), [ 'product_id' => 'product_id' ]);
          }
          
72a992f5   Yarik   Import browser v1.0
135
136
137
138
          public function getTechSpecUrl()
          {
              if(!empty( $this->tech_spec_link )) {
                  return '/storage/product_spec/' . $this->product_id . '/' . $this->tech_spec_link;
cc658b4c   Yarik   Big commit
139
140
141
142
              } else {
                  return false;
              }
          }
72a992f5   Yarik   Import browser v1.0
143
144
145
146
147
          
          public function getTechCharUrl()
          {
              if(!empty( $this->tech_char_link )) {
                  return '/storage/product_spec/' . $this->product_id . '/' . $this->tech_char_link;
cc658b4c   Yarik   Big commit
148
149
150
151
152
              } else {
                  return false;
              }
          }
      }