$writeOffsErpId = $model->getId();
foreach ($modelsProducts as $keyModelProduct => $modelProduct) {
- /** @var WriteOffsProductsErp $modelProduct */
$modelProduct->setWriteOffsErpId($writeOffsErpId);
$modelProduct->setCreatedAt();
- if (($flag = $modelProduct->save(false)) === false) {
- $transaction->rollBack();
+
+ if (!$modelProduct->save(false)) {
+ $flag = false;
break;
}
- if (!empty($modelsProductsFiles)) {
- if (array_key_exists($keyModelProduct, $modelsProductsFiles)) {
- $modelProductId = $modelProduct->id;
+ if (!empty($modelsProductsFiles) && array_key_exists($keyModelProduct, $modelsProductsFiles)) {
+ $modelProductId = $modelProduct->id;
+ $productFilesArray = ArrayHelper::getValue($modelsProductsFiles, $keyModelProduct);
+ $imageFiles = ArrayHelper::getValue($productFilesArray, 'imageFiles', []);
+ $hasNewPhotos = !empty(array_filter($imageFiles));
- $productFilesArray = ArrayHelper::getValue($modelsProductsFiles, $keyModelProduct);
- $imageFiles = ArrayHelper::getValue($productFilesArray, 'imageFiles', []);
- $hasNewPhotos = !empty(array_filter($imageFiles));
-
- if (1 != (int)$modelProduct->add_image && !$hasNewPhotos && empty($videoFile)) {
- ImageDocumentLink::deleteCurrentLinkImage($writeOffsErpId, $modelProductId, $documentGroupId, $adminId);
- }
-
- if ($hasNewPhotos) {
- foreach ($imageFiles as $index => $imageFile) {
- if (Images::isImageFile($imageFile)) {
- Yii::info("Загружаем фото #$index: " . $imageFile->name ?? 'нет имени', __METHOD__);
+ if ((int)$modelProduct->add_image !== 1 && !$hasNewPhotos && empty($videoFile)) {
+ ImageDocumentLink::deleteCurrentLinkImage($writeOffsErpId, $modelProductId, $documentGroupId, $adminId);
+ }
- $image = new Images();
- $imageId = $image->loadImage($imageFile);
- if ($imageId) {
- $imageDocumentLink = new ImageDocumentLink();
- $imageDocumentLink->setActive()
- ->setCreatedAt()
- ->setCreatedAdminId($adminId)
- ->setDocumentGroupId($documentGroupId)
- ->setDocumentId($writeOffsErpId)
- ->setDocumentItemId($modelProductId)
- ->setImageId($imageId);
- if ($imageDocumentLink->validate()) {
- $imageDocumentLink->save();
- } else {
- Yii::warning("Ошибки валидации ImageDocumentLink для фото #$index", __METHOD__);
- }
- } else {
- Yii::warning("Не удалось загрузить фото #$index", __METHOD__);
+ if ($hasNewPhotos) {
+ foreach ($imageFiles as $index => $imageFile) {
+ if (Images::isImageFile($imageFile)) {
+ Yii::info("Загружаем фото #$index: " . ($imageFile->name ?? 'нет имени'), __METHOD__);
+ $image = new Images();
+ $imageId = $image->loadImage($imageFile);
+ if ($imageId) {
+ $imageDocumentLink = new ImageDocumentLink();
+ $imageDocumentLink->setActive()
+ ->setCreatedAt()
+ ->setCreatedAdminId($adminId)
+ ->setDocumentGroupId($documentGroupId)
+ ->setDocumentId($writeOffsErpId)
+ ->setDocumentItemId($modelProductId)
+ ->setImageId($imageId);
+ if (!$imageDocumentLink->validate() || !$imageDocumentLink->save()) {
+ Yii::warning("Ошибки валидации/saving ImageDocumentLink для фото #$index", __METHOD__);
}
} else {
- Yii::info("Файл #$index не является изображением", __METHOD__);
+ Yii::warning("Не удалось загрузить фото #$index", __METHOD__);
}
+ } else {
+ Yii::info("Файл #$index не является изображением", __METHOD__);
}
}
+ }
- $videoFile = ArrayHelper::getValue($productFilesArray, 'videoFiles');
- if ($videoFile) {
- Files::deleteAll(['entity_id' => $modelProductId, 'entity' => WriteOffsProductsErp::WRITE_OFFS_VIDEO]);
- FileService::saveUploadedFile($videoFile, WriteOffsProductsErp::WRITE_OFFS_VIDEO, $modelProductId);
- }
+ $videoFile = ArrayHelper::getValue($productFilesArray, 'videoFiles');
+ if ($videoFile) {
+ Files::deleteAll(['entity_id' => $modelProductId, 'entity' => WriteOffsProductsErp::WRITE_OFFS_VIDEO]);
+ FileService::saveUploadedFile($videoFile, WriteOffsProductsErp::WRITE_OFFS_VIDEO, $modelProductId);
}
}
}
}
- if ($flag) {
- $transaction->commit();
- }
+
if ($flag) {
$transaction->commit();
return $this->redirect(['/write-offs-erp/view', 'id' => $model->id]);
+ } else {
+ $transaction->rollBack();
}
+
} catch (Exception $e) {
- $transaction->rollBack();
- $errors = $e->getMessage();
-var_dump($errors);die();
+ if ($transaction->isActive) {
+ $transaction->rollBack();
+ }
+
return $this->render('/write_offs_erp/update', [
'model' => $model,
'multipleUploadForm' => $multipleUploadForm,
'listCityStoreNames' => $listCityStoreNames,
'listCauseDict' => $listCauseDict,
'listProductsDict' => $listProductsDict,
- 'errors' => $errors
+ 'errors' => $e->getMessage()
]);
}
-
}
$modelsProductsArray = $modelArray['writeOffsProductsErps'];