5
5
namespace Synolia \SyliusAkeneoPlugin \Processor \ProductAttribute ;
6
6
7
7
use Doctrine \ORM \EntityManagerInterface ;
8
+ use Psr \Log \LoggerInterface ;
8
9
use Sylius \Component \Core \Model \ProductInterface ;
9
10
use Sylius \Component \Resource \Factory \FactoryInterface ;
10
11
use Sylius \Component \Resource \Repository \RepositoryInterface ;
11
12
use Synolia \SyliusAkeneoPlugin \Entity \Asset ;
13
+ use Synolia \SyliusAkeneoPlugin \Exceptions \Attribute \MissingLocaleTranslationException ;
14
+ use Synolia \SyliusAkeneoPlugin \Exceptions \Attribute \MissingLocaleTranslationOrScopeException ;
15
+ use Synolia \SyliusAkeneoPlugin \Exceptions \Attribute \MissingScopeException ;
12
16
use Synolia \SyliusAkeneoPlugin \Provider \Asset \AkeneoAssetAttributeDataProviderInterface ;
13
17
use Synolia \SyliusAkeneoPlugin \Provider \Asset \AkeneoAssetAttributePropertiesProviderInterface ;
14
18
use Synolia \SyliusAkeneoPlugin \Provider \Asset \AssetValueBuilderProviderInterface ;
@@ -26,6 +30,7 @@ public function __construct(
26
30
private SyliusAkeneoLocaleCodeProvider $ syliusAkeneoLocaleCodeProvider ,
27
31
private ProductFilterRulesProviderInterface $ productFilterRulesProvider ,
28
32
private AssetValueBuilderProviderInterface $ assetAttributeValueBuilder ,
33
+ private LoggerInterface $ akeneoLogger ,
29
34
) {
30
35
}
31
36
@@ -89,40 +94,51 @@ private function handleAsset(
89
94
return ;
90
95
}
91
96
92
- $ asset = $ this ->assetRepository ->findOneBy ($ queryParam );
93
-
94
- if (!$ asset instanceof Asset) {
95
- /** @var Asset $asset */
96
- $ asset = $ this ->assetFactory ->createNew ();
97
- $ this ->entityManager ->persist ($ asset );
98
- $ asset ->setFamilyCode ($ assetFamilyCode );
99
- $ asset ->setAssetCode ($ assetCode );
100
- $ asset ->setAttributeCode ($ attributeCode );
101
- $ asset ->setLocale ($ queryParam ['locale ' ]);
102
- $ asset ->setScope ($ queryParam ['scope ' ]);
103
- $ asset ->setType ($ this ->akeneoAssetAttributePropertiesProvider ->getType ($ assetFamilyCode , $ attributeCode ));
104
- }
105
-
106
97
$ akeneoLocale = $ this ->syliusAkeneoLocaleCodeProvider ->getAkeneoLocale ($ queryParam ['locale ' ]);
107
98
108
- $ assetAttributeValue = $ this ->akeneoAssetAttributeDataProvider ->getData (
109
- $ assetFamilyCode ,
110
- $ attributeCode ,
111
- $ assetAttributeResource ,
112
- $ akeneoLocale ,
113
- $ queryParam ['scope ' ],
114
- );
115
-
116
- /** @var array $data */
117
- $ data = $ this ->assetAttributeValueBuilder ->build (
118
- $ assetFamilyCode ,
119
- $ attributeCode ,
120
- $ akeneoLocale ,
121
- $ queryParam ['scope ' ],
122
- $ assetAttributeValue ,
123
- );
124
-
125
- $ asset ->setContent ($ data );
126
- $ model ->addAsset ($ asset );
99
+ try {
100
+ $ asset = $ this ->assetRepository ->findOneBy ($ queryParam );
101
+
102
+ if (!$ asset instanceof Asset) {
103
+ /** @var Asset $asset */
104
+ $ asset = $ this ->assetFactory ->createNew ();
105
+ $ this ->entityManager ->persist ($ asset );
106
+ $ asset ->setFamilyCode ($ assetFamilyCode );
107
+ $ asset ->setAssetCode ($ assetCode );
108
+ $ asset ->setAttributeCode ($ attributeCode );
109
+ $ asset ->setLocale ($ queryParam ['locale ' ]);
110
+ $ asset ->setScope ($ queryParam ['scope ' ]);
111
+ $ asset ->setType ($ this ->akeneoAssetAttributePropertiesProvider ->getType ($ assetFamilyCode , $ attributeCode ));
112
+ }
113
+
114
+ $ assetAttributeValue = $ this ->akeneoAssetAttributeDataProvider ->getData (
115
+ $ assetFamilyCode ,
116
+ $ attributeCode ,
117
+ $ assetAttributeResource ,
118
+ $ akeneoLocale ,
119
+ $ queryParam ['scope ' ],
120
+ );
121
+
122
+ /** @var array $data */
123
+ $ data = $ this ->assetAttributeValueBuilder ->build (
124
+ $ assetFamilyCode ,
125
+ $ attributeCode ,
126
+ $ akeneoLocale ,
127
+ $ queryParam ['scope ' ],
128
+ $ assetAttributeValue ,
129
+ );
130
+
131
+ $ asset ->setContent ($ data );
132
+ $ model ->addAsset ($ asset );
133
+ } catch (MissingLocaleTranslationException |MissingLocaleTranslationOrScopeException |MissingScopeException ) {
134
+ $ this ->akeneoLogger ->debug ('Error processing asset ' , [
135
+ 'family_code ' => $ assetFamilyCode ,
136
+ 'attribute_code ' => $ attributeCode ,
137
+ 'asset_code ' => $ assetCode ,
138
+ 'scope ' => $ queryParam ['scope ' ],
139
+ 'akeneo_locale ' => $ akeneoLocale ,
140
+ 'resource ' => $ assetAttributeResource ,
141
+ ]);
142
+ }
127
143
}
128
144
}
0 commit comments