Skip to content

Commit 986dba5

Browse files
committed
Implement countShopSales method in ShopController and update API route
This commit introduces the countShopSales method in the ShopController, which calculates the total number of sales for a specified shop by aggregating orders from both simple and varied product types. Additionally, it updates the API route to reflect the new endpoint for retrieving shop sales, enhancing the functionality available to sellers.
1 parent 58584b3 commit 986dba5

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed

app/Http/Controllers/Seller/ShopController.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,33 @@ public function getShopEarnings($shopId){
119119
return $totalEarnings;
120120

121121
}
122+
123+
public function countShopSales($shopId): int
124+
{
125+
$shop = Shop::findOrFail($shopId);
126+
127+
// Étape 1: Récupérer les IDs des produits de la boutique
128+
$productIds = $shop->products()->pluck('id');
129+
130+
// Étape 2: Récupérer les IDs de commandes de produits simples
131+
$simpleOrderIds = DB::table('order_details')
132+
->whereIn('product_id', $productIds)
133+
->pluck('order_id');
134+
135+
// Étape 3: Récupérer les IDs de commandes de produits variés
136+
$productVariationIds = ProductVariation::whereIn('product_id', $productIds)->pluck('id');
137+
138+
$variedOrderIds = DB::table('order_variations')
139+
->whereIn('product_variation_id', $productVariationIds)
140+
->pluck('order_id');
141+
142+
// Étape 4: Combiner les IDs de commandes et enlever les doublons
143+
$allOrderIds = $simpleOrderIds->merge($variedOrderIds)->unique();
144+
145+
// Étape 5: Compter le nombre de commandes finalisées
146+
$salesCount = Order::whereIn('id', $allOrderIds)
147+
->count();
148+
149+
return $salesCount;
150+
}
122151
}

app/Http/Resources/ShopResource.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,7 @@ public function toArray(Request $request): array
4444
"phone"=>$this->user->phone_number,
4545
"orders_count"=>null,
4646
"product_type"=>$this->product_type,
47-
"total_earnings"=>$this->products->flatMap(function($product) {
48-
return $product->orderDetails->map(function($orderDetail) {
49-
return $orderDetail->unit_price * $orderDetail->order_product_quantity;
50-
});
51-
})->sum(),
47+
"total_earnings"=>$this->total_earning,
5248
"state"=>$this->state,
5349
"level"=>$this->shop_level,
5450
"cover"=>URL("/storage/".$this->shop_banner),

routes/api.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@
164164
Route::get("all/products", [ProductListController::class, "allProducts"]);
165165
Route::get("/attributes/value/{id}", [GetAttributesController::class, 'getValue']);
166166
Route::get("/all/genders", [CurrentGenderController::class, "all"]);
167-
Route::get("/get/earnings/{shopId}",[ShopController::class,"getShopEarnings"]);
167+
Route::get("/get/sales/{shopId}",[ShopController::class,"countShopSales"]);
168168
Route::get('/attributes/value/by/group/{id}',[ListCategoryController::class,"getAttributeValueByAttributeId"]);
169169
Route::get('/categories/attributes',[ListCategoryController::class,"getCategoriesWithAttributes"]);
170170

0 commit comments

Comments
 (0)