add methods to detect distinct product type et article nature on shelve

This commit is contained in:
Ludovic CANDELLIER
2023-04-01 22:01:15 +02:00
parent 7d1a34a12e
commit 24e518fffe
4 changed files with 59 additions and 10 deletions

View File

@@ -194,7 +194,8 @@ class Articles
{
return [
'id' => $article->id,
'description' => (!empty($article->description)) ? $article->description : $article->product->description,
'article_nature_id' => $article->article_nature_id,
'description' => $article->description ? $article->description : $article->product->description,
'image' => self::getFullImageByArticle($article),
'product_type' => $article->product_type,
'product_id' => $article->product_id,
@@ -238,6 +239,38 @@ class Articles
return $data;
}
public static function getArticleNaturesWithOffers($options = false)
{
return ArticleNatures::getNamesByIds(self::getArticleNaturesIdsWithOffers($options));
}
public static function getArticleNaturesIdsWithOffers($options = false)
{
$sale_channel_id = $options['sale_channel_id'] ?? SaleChannels::getDefaultID();
$model = self::getModelByOptions($options);
$data = $model->withAvailableOffers($sale_channel_id)->get()->pluck('article_nature_id')->unique();
return array_values($data->toArray());
}
public static function getProductTypesWithOffers($options = false)
{
$data = [];
$classes = self::getProductTypesClassesWithOffers($options);
foreach ($classes as $class) {
$type = ArticleNatures::getProductTypeNameByClass($class);
$data[$type] = true;
}
return array_keys($data);
}
public static function getProductTypesClassesWithOffers($options = false)
{
$sale_channel_id = $options['sale_channel_id'] ?? SaleChannels::getDefaultID();
$model = self::getModelByOptions($options);
$data = $model->withAvailableOffers($sale_channel_id)->get()->pluck('product_type')->unique();
return $data->toArray();
}
public static function getModelByOptions($options = false)
{
$category_id = $options['category_id'] ?? false;