OSDN Git Service

Откорректированы сообщения и их перевод
[invent/invent.git] / controllers / ModelsController.php
index 3b348d8..6b2767d 100644 (file)
@@ -31,6 +31,57 @@ class ModelsController extends Controller
         ];
     }
 
+    public function addIfNeed($options)
+    {
+        $result = [
+            'id' => FALSE,
+            'error' => Yii::t('models', 'Models: Key field "model", "type" missing: ') . print_r($options, TRUE),
+        ];
+        // Если указан инвентарный номер
+        if (is_array($options) && isset($options[ 'model' ]))
+        {
+            $model = Models::find()
+                ->where([ 'name' => $options[ 'model' ]])->all(); // Ищем наименование модели предмета/обрудования
+
+            if (count($model) > 0) // Записи найдены, выводим первую совпавшую
+            {
+                $result[ 'id' ] = $model[ 0 ]->id;
+                $result[ 'error' ] = '';
+            }
+            else
+            {
+                $type = TypesController::addIfNeed($options); // Найдём или добавим тип
+                // Если тип не добавили
+                if($type[ 'id' ] === FALSE)
+                {
+                    $result[ 'error' ] = '<br />' . $type[ 'error' ];
+                    //$type[ 'id' ] = NULL; // сделаем его пустым
+                }
+                else
+                {
+                    // Создаём новую запись модели предмета/оборудования
+                    $model = new Models();
+                    $model->name        = $options[ 'model' ]; // Сетевое имя
+                    $model->type_id     = isset($type[ 'id' ]) ? $type[ 'id' ] : NULL;                 // Идентификатор типа
+                    $model->product     = isset($options[ 'product' ]) ? $options[ 'product' ] : NULL; // Код оборудования
+                    $model->modelnumber = isset($options[ 'modelnum' ]) ? $options[ 'modelnum' ] : NULL; // Номер модели
+                    // Сохраняем запись
+                    if ($model->validate() && $model->save())
+                    {
+                        $result[ 'id' ] = $model->id; // Возвращаем идентификатор записанного оборудования
+                        $result[ 'error' ] = '';
+                    }
+                    else
+                    {
+                        $result[ 'error' ] .= Yii::t('models', 'Models: Failed to add entry: ') . print_r($model->errors, TRUE);
+                    }
+                }
+
+            }
+        }
+        return $result;
+    }
+
     /**
      * Lists all Models models.
      * @return mixed
@@ -42,6 +93,24 @@ class ModelsController extends Controller
             return $this->redirect(['site/index']);
         }
         $searchModel = new ModelsSearch();
+        if (isset(Yii::$app->request->queryParams['id']))
+        {
+            $id = Yii::$app->request->queryParams['id'];
+            $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
+            $pageSize = $dataProvider->pagination->pageSize;
+            $dataProvider->pagination = FALSE;
+            $rows = $dataProvider->getModels();
+            $page = 0;
+            foreach ($rows as $key => $val)
+            {
+                if ($id == $val->id)
+                {
+                    $page = ceil(($key + 1) / $pageSize);
+                    break;
+                }
+            }
+            return $this->redirect(['index', 'page' => $page]);
+        }
         $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
 
         return $this->render('index', [