Beispiel #1
0
 public function actionImport($importModel)
 {
     /** @var ImportModel $model */
     $model = new ImportModel();
     $model->unserialize($importModel);
     if ($model->validate()) {
         /** @var Export $exportStatus */
         $importStatus = Import::find()->where(['user_id' => $model->getUser(), 'object_id' => $model->object])->one();
         $importStatus->status = Import::STATUS_PROCESS;
         $importStatus->save();
         $filename = $model->getFilename('Import');
         $path = \Yii::$app->getModule('data')->importDir . '/' . $filename;
         if (file_exists($path)) {
             try {
                 $object = Object::findById($model->object);
                 if ($object === null) {
                     throw new Exception('Object not found');
                 }
                 $import = \app\modules\data\components\Import::createInstance(['object' => $object, 'filename' => $filename, 'type' => $model->type, 'addPropertyGroups' => $model->addPropertyGroups, 'createIfNotExists' => boolval($model->createIfNotExists), 'multipleValuesDelimiter' => $model->multipleValuesDelimiter, 'additionalFields' => $model->additionalFields]);
                 if ($import->processImport($model->fields)) {
                     $importStatus->status = Import::STATUS_COMPLETE;
                 } else {
                     $importStatus->status = Import::STATUS_FAILED;
                 }
                 $importStatus->save();
             } catch (\Exception $e) {
                 $importStatus->status = Import::STATUS_FAILED;
                 $importStatus->save();
                 echo $e->getMessage();
                 unset($path);
                 throw $e;
             }
         } else {
             echo "File '{$filename}' is not exist";
             throw new Exception("File '{$filename}' is not exist");
         }
     } else {
         echo 'Model is not valid';
         throw new Exception('Model is not valid');
     }
 }
Beispiel #2
0
 public function getLastImport()
 {
     return $this->hasOne(Import::className(), ['object_id' => 'id'])->andOnCondition([Import::tableName() . '.user_id' => Yii::$app->user->id]);
 }