OSDN Git Service

Изменён тип хранения информации о проинвентаризированных, учтённых, и непроверенных...
[invent/invent.git] / models / Items.php
index 56eacb6..ea231a2 100644 (file)
@@ -5,18 +5,25 @@ namespace app\models;
 use Yii;
 
 /**
- * This is the model class for table "items".
+ * This is the model class for table 'items'.
  *
- * @property int $id Идентификатор (неизменяемый)
- * @property string|null $name Сетевое имя оборудования
- * @property string|null $model Модель оборудования
- * @property string|null $os Операционная система
- * @property string|null $mac Сетевой MAC адрес
- * @property string|null $serial Серийный номер
- * @property string|null $product Код оборудования
- * @property string|null $modelnumber Номер модели
- * @property string|null $invent Инвентарный номер
- * @property string|null $date Дата внесения записи
+ * @property int $id                    Идентификатор (неизменяемый)
+// * @property int $type_id               Идентификатор типа оборудования
+ * @property int $model_id              Идентификатор модели предмета/оборудования
+ * @property string|null  $name         Сетевое имя оборудования
+// * @property string|null  $model        Модель оборудования
+ * @property string|null  $os           Операционная система
+ * @property string|null  $mac          Сетевой MAC адрес
+ * @property string|null  $serial       Серийный номер
+// * @property string|null  $product      Код оборудования
+// * @property string|null  $modelnumber  Номер модели
+ * @property string|null  $invent       Инвентарный номер
+ * @property boolean      $checked      Флаг прохождения инвентаризации
+ * @property string|null  $statusName   Наименование состояния
+ * @property string|null  $typeName     Наименование типа
+ * @property string|null  $locationName Наименование места размещения
+ * @property string|null  $regionName   Наименование региона/подразделения
+ * @property string|null  $modelName    Наименование предмета/оборудования
  */
 class Items extends \yii\db\ActiveRecord
 {
@@ -24,12 +31,14 @@ class Items extends \yii\db\ActiveRecord
     public $typeName;
     public $locationName;
     public $regionName;
+    public $modelName;
+    public $myMessage;
      /**
      * {@inheritdoc}
      */
     public static function tableName()
     {
-        return 'items';
+        return '{{%items}}';
     }
 
     /**
@@ -38,11 +47,11 @@ class Items extends \yii\db\ActiveRecord
     public function rules()
     {
         return [
-            [['date'], 'safe'],
-            [['name', 'model', 'os', 'serial', 'product', 'modelnumber', 'comment' ], 'string', 'max' => 255],
-            [['mac'], 'string', 'max' => 20],
-            [['invent'], 'string', 'max' => 50],
-            [['state_id', 'type_id', 'location_id'], 'integer'],
+            [[ 'name', 'os', 'serial', 'comment' ], 'string', 'max' => 255 ],
+            [[ 'mac' ],    'string', 'max' => 20 ],
+            [[ 'invent' ], 'string', 'max' => 50 ],
+            [[ 'model_id' ], 'integer' ],
+            [[ 'checked' ], 'integer' ],
         ];
     }
 
@@ -52,43 +61,57 @@ class Items extends \yii\db\ActiveRecord
     public function attributeLabels()
     {
         return [
-            'id'           => Yii::t('items', "Идентификатор (неизменяемый)"),
-            'name'         => Yii::t('items', "Сетевое имя оборудования"),
-            'model'        => Yii::t('items', "Модель оборудования"),
-            'os'           => Yii::t('items', "Операционная система"),
-            'mac'          => Yii::t('items', "Сетевой MAC адрес"),
-            'serial'       => Yii::t('items', "Серийный номер"),
-            'product'      => Yii::t('items', "Код оборудования"),
-            'modelnumber'  => Yii::t('items', "Номер модели"),
-            'invent'       => Yii::t('items', "Инвентарный номер"),
-            'date'         => Yii::t('items', "Дата внесения записи"),
-            'comment'      => Yii::t('items', "Дополнительная информация"),
-            'state_id'     => Yii::t('items', "Состояние"),
-            'statusName'   => Yii::t('items', "State"),
-            'type_id'      => Yii::t('items', "Тип оборудования"),
-            'typeName'     => Yii::t('items', "Type of item"),
-            'location_id'  => Yii::t('items', "Место размещения"),
-            'locationName' => Yii::t('items', "Location on region"),
-            'regionName'   => Yii::t('items', "Region")
+            'id'           => Yii::t('app',   'Identifier'),              // Идентификатор
+            'name'         => Yii::t('items', 'Item network name'),       // Сетевое имя оборудования
+            'modelName'    => Yii::t('items', 'Model'),                   // Модель
+            'model_id'     => Yii::t('items', 'Model identifier'),        // Идентификатор модели
+            'typeName'     => Yii::t('items', 'Item type'),               // Название типа
+            'os'           => Yii::t('items', 'Operating system'),        // Операционная система
+            'mac'          => Yii::t('items', 'MAC address'),             // MAC адрес
+            'serial'       => Yii::t('items', 'Serial number'),           // Серийный номер
+            'invent'       => Yii::t('items', 'Inventory number'),        // Инвентарный номер
+            'comment'      => Yii::t('items', 'Additional Information'),  // Дополнительная информация
+            'checked'      => Yii::t('items', 'Location checked'),        // Проинвентаризировано
+            'statusName'   => Yii::t('items', 'State'),                   // Название состояния
+            'locationName' => Yii::t('items', 'Location'),                // Название местоположения
+            'regionName'   => Yii::t('items', 'Region'),                  // Название подразделения
 
         ];
     }
 
-    // Получение статуса оборудования
-    public function getStatus()
+    // Получение всех перемещений предмета/оборудования
+    public function getMoving()
     {
-        return $this->hasOne(Status::className(), ['id' => 'state_id']);
+        return $this->hasMany(Moving::className(), ['item_id' => 'id']);
     }
 
-    // Получение типа оборудования
-    public function getTypes()
+    // Получение модели предмета/оборудования
+    public function getModels()
     {
-        return $this->hasOne(Types::className(), ['id' => 'type_id']);
+        return $this->hasOne(Models::className(), ['id' => 'model_id']);
     }
 
-    // Получение места размещения оборудования
+    // Получение статусов предмета/оборудования
+    public function getStatus()
+    {
+        return $this->getMoving()->select(Status::tableName() . '.*')->joinWith('status');
+    }
+
+    // Получение места размещения предмета/оборудования
     public function getLocations()
     {
-        return $this->hasOne(Locations::className(), ['id' => 'location_id']);
+        return $this->getMoving()->select(Locations::tableName() . '.*')->joinWith('locations');
+    }
+
+    // Получение региона/подразделения размещения предмета/оборудования
+    public function getRegions()
+    {
+        return $this->getLocations()->select(Regions::tableName() .'.*')->joinWith('regions');
+    }
+
+    // Получение типа предмета/оборудования
+    public function getTypes()
+    {
+        return $this->getModels()->select(Types::tableName() . '.*')->joinWith('types');
     }
 }