@@ -63,79 +63,84 @@ protected static function boot()
6363 $ model ->id = Uuid::uuid4 ()->toString ();
6464 });
6565 }
66- public function orderDetails ():HasMany {
66+ public function orderDetails (): HasMany
67+ {
6768 return $ this ->hasMany (OrderDetail::class);
6869 }
69- public function reviews ():HasMany {
70+ public function reviews (): HasMany
71+ {
7072 return $ this ->hasMany (Review::class);
7173 }
72- public function productAttributesValues ():HasMany {
74+ public function productAttributesValues (): HasMany
75+ {
7376 return $ this ->hasMany (ProductAttributesValue::class);
7477 }
75- public function variations (){
78+ public function variations ()
79+ {
7680 return $ this ->hasMany (ProductVariation::class);
7781 }
7882
79- public function orderVariations (){
83+ public function orderVariations ()
84+ {
8085 return $ this ->hasManyThrough (OrderVariation::class, ProductVariation::class);
8186 }
8287
8388 public function getVariations ()
84- {
85- // Récupère toutes les variations du produit
86- return $ this ->variations ->map (function ($ variation ) {
87- // Vérifie si c'est une variation couleur uniquement
88- $ isColorOnly = collect ($ variation ->attributesVariation )->isEmpty () && $ variation ->quantity != null ;
89- // Images de la variation couleur
90- $ images = $ variation ->images ->map (function ($ img ) {
91- return URL ("/storage/ " . $ img ->image_path );
92- });
89+ {
90+ // Récupère toutes les variations du produit
91+ return $ this ->variations ->map (function ($ variation ) {
92+ // Vérifie si c'est une variation couleur uniquement
93+ $ isColorOnly = collect ($ variation ->attributesVariation )->isEmpty () && $ variation ->quantity != null ;
94+ // Images de la variation couleur
95+ $ images = $ variation ->images ->map (function ($ img ) {
96+ return URL ("/storage/ " . $ img ->image_path );
97+ });
9398
94- $ base = [
95- "id " => $ variation ->id ,
96- "color " => [
97- "id " => $ variation ->color ->id ,
98- "name " => $ variation ->color ->value ,
99- "hex " => $ variation ->color ->hex_color ,
100- ],
101- "images " => $ images ,
102- "isColorOnly " => $ isColorOnly ,
103- ];
99+ $ base = [
100+ "id " => $ variation ->id ,
101+ "color " => [
102+ "id " => $ variation ->color ->id ,
103+ "name " => $ variation ->color ->value ,
104+ "hex " => $ variation ->color ->hex_color ,
105+ ],
106+ "images " => $ images ,
107+ "isColorOnly " => $ isColorOnly ,
108+ ];
104109
105- if ($ isColorOnly ) {
106- // Cas couleur uniquement
107- $ base ["quantity " ] = $ variation ->quantity ;
108- $ base ["price " ] = $ variation ->price ;
109- // Paliers de prix de gros définis au niveau de la variation couleur
110-
111- } else {
112- // Cas couleur + attributs (taille/pointure)
113- $ base ["attributes " ] = $ variation ->attributesVariation ->map (function ($ attr ) {
114- return [
115- "id " => $ attr ->id ,
116- "name " => $ attr ->attributeValue ->attribute ->name ?? null ,
117- "value " => $ attr ->attributeValue ->value ?? null ,
118- "group " =>$ attr ->attributeValue ->attributeValueGroup ->label ?? null ,
119- "label " =>$ attr ->attributeValue ->label ?? null ,
120- "quantity " => $ attr ->quantity ?? null ,
121- "price " => $ attr ->price ?? null ,
122- // Paliers de prix de gros définis au niveau de l'attribut de variation
123- "wholesale_prices " => $ attr ->wholesalePrices
124- ->sortBy ("min_quantity " )
125- ->values ()
126- ->map (function ($ wp ) {
127- return [
128- "min_quantity " => $ wp ->min_quantity ,
129- "wholesale_price " => $ wp ->wholesale_price ,
130- ];
131- }),
132- ];
133- });
134- }
110+ if ($ isColorOnly ) {
111+ // Cas couleur uniquement
112+ $ base ["quantity " ] = $ variation ->quantity ;
113+ $ base ["price " ] = $ variation ->price ;
114+ // Paliers de prix de gros définis au niveau de la variation couleur
135115
136- return $ base ;
137- });
138- }
116+ } else {
117+ // Cas couleur + attributs (taille/pointure)
118+ $ base ["attributes " ] = $ variation ->attributesVariation ->map (function ($ attr ) {
119+ return [
120+ "id " => $ attr ->id ,
121+ "name " => $ attr ->attributeValue ->attribute ->name ?? null ,
122+ "value " => $ attr ->attributeValue ->value ?? null ,
123+ "group " => $ attr ->attributeValue ->attributeValueGroup ->label ?? null ,
124+ "label " => $ attr ->attributeValue ->label ?? null ,
125+ "quantity " => $ attr ->quantity ?? null ,
126+ "price " => $ attr ->price ?? null ,
127+ // Paliers de prix de gros définis au niveau de l'attribut de variation
128+ "wholesale_prices " => $ attr ->wholesalePrices
129+ ->sortBy ("min_quantity " )
130+ ->values ()
131+ ->map (function ($ wp ) {
132+ return [
133+ "min_quantity " => $ wp ->min_quantity ,
134+ "wholesale_price " => $ wp ->wholesale_price ,
135+ ];
136+ }),
137+ ];
138+ });
139+ }
140+
141+ return $ base ;
142+ });
143+ }
139144
140145 public function wholesalePrices ()
141146 {
0 commit comments