diff --git a/packages/Webkul/API/Http/Controllers/Shop/ProductController.php b/packages/Webkul/API/Http/Controllers/Shop/ProductController.php index 051982e51..fe9392332 100755 --- a/packages/Webkul/API/Http/Controllers/Shop/ProductController.php +++ b/packages/Webkul/API/Http/Controllers/Shop/ProductController.php @@ -45,9 +45,10 @@ class ProductController extends Controller */ public function get($id) { - return new ProductResource( - $this->productRepository->findOrFail($id) - ); + $product = $this->productRepository->findOrFail($id); + $options = $this->productRepository->findOrFail($id)->getTypeInstance()->getProductOptions($product); + + return $options; } /** diff --git a/packages/Webkul/Product/src/Helpers/BundleOption.php b/packages/Webkul/Product/src/Helpers/BundleOption.php index d8fc890b9..fcfca3148 100644 --- a/packages/Webkul/Product/src/Helpers/BundleOption.php +++ b/packages/Webkul/Product/src/Helpers/BundleOption.php @@ -100,4 +100,34 @@ class BundleOption extends AbstractProduct return $products; } + + /** + * Get formed data from bundle option product + * + * @return array + */ + public function getProductOptions($product) + { + $products = []; + + $products[$product->id] = [ + 'id' => $product->id, + 'qty' => $product->qty, + 'price' => $product->product->getTypeInstance()->getProductPrices(), + 'name' => $product->product->name, + 'product_id' => $product->product_id, + 'is_default' => $product->is_default, + 'sort_order' => $product->sort_order, + ]; + + usort ($products, function($a, $b) { + if ($a['sort_order'] == $b['sort_order']) { + return 0; + } + + return ($a['sort_order'] < $b['sort_order']) ? -1 : 1; + }); + + return $products; + } } \ No newline at end of file diff --git a/packages/Webkul/Product/src/Type/AbstractType.php b/packages/Webkul/Product/src/Type/AbstractType.php index fe5d4bb71..e7f7659b8 100644 --- a/packages/Webkul/Product/src/Type/AbstractType.php +++ b/packages/Webkul/Product/src/Type/AbstractType.php @@ -113,6 +113,11 @@ abstract class AbstractType */ protected $isChildrenCalculated = false; + /** + * get product options + */ + protected $getProductOptions = []; + /** * Create a new product type instance. * @@ -694,4 +699,10 @@ abstract class AbstractType $item->save(); } + + //get product options + public function getProductOptions() + { + return $this->getProductOptions; + } } \ No newline at end of file diff --git a/packages/Webkul/Product/src/Type/Bundle.php b/packages/Webkul/Product/src/Type/Bundle.php index 595663bbd..81768b05a 100644 --- a/packages/Webkul/Product/src/Type/Bundle.php +++ b/packages/Webkul/Product/src/Type/Bundle.php @@ -69,6 +69,11 @@ class Bundle extends AbstractType */ protected $isChildrenCalculated = true; + /** + * getProductOptions + */ + protected $getProductOptions = []; + /** * Create a new product type instance. * @@ -633,4 +638,14 @@ class Bundle extends AbstractType $item->save(); } + + /** + * get product options + */ + public function getProductOptions($product = "") + { + $bundleOption = app('Webkul\Product\Helpers\BundleOption'); + $options = $bundleOption->getProductOptions($product); + return $options; + } } \ No newline at end of file diff --git a/packages/Webkul/Product/src/Type/Configurable.php b/packages/Webkul/Product/src/Type/Configurable.php index 2c5c1973d..cb41ad61c 100644 --- a/packages/Webkul/Product/src/Type/Configurable.php +++ b/packages/Webkul/Product/src/Type/Configurable.php @@ -49,6 +49,11 @@ class Configurable extends AbstractType */ protected $hasVariants = true; + /** + * get product options + */ + protected $getProductOptions = []; + /** * @param array $data * @return \Webkul\Product\Contracts\Product @@ -546,4 +551,12 @@ class Configurable extends AbstractType $item->save(); } + + //product options + public function getProductOptions($product = "") + { + $configurableOption = app('Webkul\Product\Helpers\ConfigurableOption'); + $options = $configurableOption->getConfigurationConfig($product); + return $options; + } } \ No newline at end of file diff --git a/packages/Webkul/Product/src/Type/Downloadable.php b/packages/Webkul/Product/src/Type/Downloadable.php index 19334bfec..398b657be 100644 --- a/packages/Webkul/Product/src/Type/Downloadable.php +++ b/packages/Webkul/Product/src/Type/Downloadable.php @@ -55,6 +55,11 @@ class Downloadable extends AbstractType */ protected $isStockable = false; + /** + * getProductOptions + */ + protected $getProductOptions = []; + /** * Create a new product type instance. * @@ -252,4 +257,16 @@ class Downloadable extends AbstractType $item->save(); } + + /** + * get product options + */ + // public function getProductOptions($product) + // { + // $configurableOption = app('Webkul\Product\Helpers\DownloadableOption'); + // dd($configurableOption); + // $options = $configurableOption->getDownloadableConfig($product); + // dd($options); + // return $options; + // } } \ No newline at end of file