configuration['record_id'] ); //$files_model->load(['ImportersFiles' => $this->configuration->toArray()]); $update_date = date('Y-m-d H:i:s'); $files_model->time_start = $update_date; // запишем дату начала загрузки if (!$files_model->save()) { $this->errors[] = implode( ', ', $files_model->getErrors()); return false; //CustomVarDamp::dumpAndDie($files_model->implode ( ', ', getErrors())()); } // 2. запишем полученные данные в таблицу товаров (Details) $details_model = new Details(); // преобразуем числовые значения foreach ($this->data as &$row) { $row['PRICE'] = \Yii::$app->multiparser->convertToFloat($row['PRICE']); $row['BOX'] = \Yii::$app->multiparser->convertToInteger($row['BOX']); // присвоим полный артикул $row['FULL_ARTICLE'] = $row['ARTICLE']; if(isset($row['ADD_BOX'])) $row['ADD_BOX'] = \Yii::$app->multiparser->convertToInteger($row['ADD_BOX']); // проверим все ли обязательные колонки были указаны пользователем $details_model->load(['Details' => $row]); if (!$details_model->validate()) break; } if ($details_model->hasErrors()) { //@todo предоставить более детальную информацию об ошибке throw new \ErrorException('Ошибка записи товаров'); } else{ // дополним данные значением импортера и даты обновления цены $this->data = \Yii::$app->multiparser->addColumns($this->data, ['IMPORT_ID' => $this->configuration['importer_id'], 'timestamp' => $update_date]); try { //@todo add transaction // попытаемся вставить данные в БД с апдейтом по ключам $details_model->ManualInsert($this->data); // 3. зафиксируем дату конца загрузки в файлах поставщика $files_model->time_end = date('Y-m-d H:i:s'); // CustomVarDamp::dumpAndDie($files_model); if (!$files_model->save()) { throw new \ErrorException(implode( ', ', $files_model->getErrors())); // $this->errors[] = $files_model->implode ( ', ', getErrors()); // return false; // CustomVarDamp::dumpAndDie($files_model->implode ( ', ', getErrors())()); } // 4. зафиксируем дату загрузки в таблице поставщиков $imp_model = Importers::findOne($this->configuration['importer_id']); $imp_model->price_date_update = $update_date; if (!$imp_model->save()) { // $this->errors[] = $imp_model->implode ( ', ', getErrors())(); // return false; throw new \ErrorException(implode( ', ', $imp_model->getErrors())); // CustomVarDamp::dumpAndDie($imp_model->implode ( ', ', getErrors())()); } } catch (ErrorException $e) { //CustomVarDamp::dump($e->getMessage()); throw new \ErrorException( $e->getMessage() ); } } return true; } }