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 @@