From ab9a0b9a51b3d25403af88b7e4ca293a65e734c0 Mon Sep 17 00:00:00 2001 From: Jens Schulze Date: Wed, 9 Sep 2015 10:31:51 +0200 Subject: [PATCH] feat(Products): add getBySku method --- src/Model/Product/ProductData.php | 13 +++++++++++++ src/Model/Product/ProductProjection.php | 13 +++++++++++++ src/Model/Product/ProductVariantCollection.php | 13 +++++++++++++ 3 files changed, 39 insertions(+) diff --git a/src/Model/Product/ProductData.php b/src/Model/Product/ProductData.php index ae9b313ce2..c6beeb5e51 100644 --- a/src/Model/Product/ProductData.php +++ b/src/Model/Product/ProductData.php @@ -64,4 +64,17 @@ public function getVariantById($variantId) return $this->getVariants()->getById($variantId); } + + /** + * @param $sku + * @return ProductVariant + */ + public function getVariantBySku($sku) + { + if ($sku == $this->getMasterVariant()->getSku()) { + return $this->getMasterVariant(); + } + + return $this->getVariants()->getBySku($sku); + } } diff --git a/src/Model/Product/ProductProjection.php b/src/Model/Product/ProductProjection.php index 72e3753bea..b7e418807f 100644 --- a/src/Model/Product/ProductProjection.php +++ b/src/Model/Product/ProductProjection.php @@ -97,4 +97,17 @@ public function getVariantById($variantId) return $this->getVariants()->getById($variantId); } + + /** + * @param $sku + * @return ProductVariant + */ + public function getVariantBySku($sku) + { + if ($sku == $this->getMasterVariant()->getSku()) { + return $this->getMasterVariant(); + } + + return $this->getVariants()->getBySku($sku); + } } diff --git a/src/Model/Product/ProductVariantCollection.php b/src/Model/Product/ProductVariantCollection.php index 8271dd8316..3447a20fa3 100644 --- a/src/Model/Product/ProductVariantCollection.php +++ b/src/Model/Product/ProductVariantCollection.php @@ -16,16 +16,20 @@ class ProductVariantCollection extends Collection { const ID = 'id'; + const SKU = 'sku'; protected $type = '\Commercetools\Core\Model\Product\ProductVariant'; protected function indexRow($offset, $row) { if ($row instanceof ProductVariant) { $id = $row->getId(); + $sku = $row->getSku(); } else { $id = $row[static::ID]; + $sku = $row[static::SKU]; } $this->addToIndex(static::ID, $offset, $id); + $this->addToIndex(static::SKU, $offset, $sku); } /** @@ -36,4 +40,13 @@ public function getById($id) { return $this->getBy(static::ID, $id); } + + /** + * @param $id + * @return ProductVariant + */ + public function getBySku($id) + { + return $this->getBy(static::SKU, $id); + } }