diff --git a/src/Controller/ProductController.php b/src/Controller/ProductController.php
index 20ebb4b..ac259d3 100644
--- a/src/Controller/ProductController.php
+++ b/src/Controller/ProductController.php
@@ -23,12 +23,29 @@ final class ProductController extends BaseController
'price' => fn($query) => $query->orderBy('created_at', 'desc'),
'stock' => fn($query) => $query->orderBy('created_at', 'desc'),
])->find($productId);
- if(null === $product) {
+ if (null === $product) {
throw $this->createNotFoundException('Product not found');
}
+ $priceList = $product->price()->pluck('price');
+ $stockList = $product->stock()->pluck('stock');
+ $priceDates = $product->price()->pluck('created_at')->map(fn($date) => $date->format('Y-m-d'))->toArray();
+ $stockDates = $product->stock()->pluck('created_at')->map(fn($date) => $date->format('Y-m-d'))->toArray();
- $priceList = $product->price()->pluck('price')->implode(',');
- $priceDates = $product->price()->pluck('created_at')->map(fn($date) => $date->format('Y-m-d'))->implode("','");
- return $this->render('product.html.twig', ['product' => $product, 'price_list' => $priceList, 'price_dates' => $priceDates]);
+ return $this->render('product.html.twig', [
+ 'product' => $product,
+ 'price_list' => $this->prepareChartData($priceDates, $priceList),
+ 'stock_list' => $this->prepareChartData($stockDates, $stockList),
+ 'price_dates' => implode("','", $priceDates),
+ ]);
+ }
+
+ private function prepareChartData($set1, $set2): string
+ {
+ $data = [];
+ foreach ($set1 as $key => $value) {
+ $data[] = ['x' => $value, 'y' => $set2[$key]];
+ }
+ $stringData = json_encode($data);
+ return str_replace(['"x"', '"y"'], ['x', 'y'], $stringData);
}
}
diff --git a/templates/product.html.twig b/templates/product.html.twig
index 4d072b9..a267b4e 100644
--- a/templates/product.html.twig
+++ b/templates/product.html.twig
@@ -14,7 +14,7 @@
@@ -55,26 +55,32 @@