Files
opensem/app/Repositories/Shop/ArticleImages.php
2024-01-21 11:42:42 +01:00

111 lines
3.4 KiB
PHP

<?php
namespace App\Repositories\Shop;
use App\Models\Shop\Article;
use App\Models\Shop\Merchandise;
use App\Repositories\Botanic\Species;
use App\Repositories\Botanic\Varieties;
use App\Repositories\Core\Comments;
use App\Repositories\Core\Tag;
use App\Traits\Model\Basic;
use App\Traits\Repository\Imageable;
use Illuminate\Support\Str;
class ArticleImages
{
use Basic, Imageable;
public static function getFullImagesByArticleId($id)
{
$article = self::get($id);
return $article ? self::getFullImagesByArticle($article) : false;
}
public static function countFullImagesByArticleId($id)
{
$article = self::get($id);
return $article ? self::countFullImagesByArticle($article) : 0;
}
public static function countFullImagesByArticle($article)
{
return count(self::getFullImagesByArticle($article));
}
public static function getFullImagesByArticle($article)
{
$images = count($article->images) ? $article->images : collect([]);
switch ($article->product_type) {
case 'App\Models\Botanic\Variety':
$variety = $article->product ?? false;
$specie = $variety->specie ?? false;
if ($variety) {
$images = count($variety->images ?? []) ? $images->merge($variety->images) : $images;
}
if ($specie) {
$images = count($specie->images ?? []) ? $images->merge($specie->images) : $images;
}
break;
case 'App\Models\Botanic\Specie':
$specie = $article->product ?? false;
$images = count($specie->images ?? []) ? $specie->images : $images;
break;
case 'App\Models\Shop\Merchandise':
$merchandise = $article->product ?? false;
$images = count($merchandise->images ?? []) ? $merchandise->images : $images;
break;
default:
}
return $images;
}
public static function getFullImageById($id)
{
return self::getFullImageByArticle(self::get($id));
}
public static function getFullImageByArticle($article)
{
$image = $article->image;
if ($image) {
return $image;
}
switch ($article->product_type) {
case 'App\Models\Botanic\Variety':
$image = $article->product->image ?? ($article->product->specie->image ?? false);
break;
case 'App\Models\Botanic\Specie':
$image = $article->product->image ?? false;
break;
case 'App\Models\Shop\Merchandise':
$image = $article->product->image ?? false;
break;
default:
}
return $image;
}
public static function getInheritedImagesByProduct($product_id, $product_type)
{
switch ($product_type) {
case 'App\Models\Botanic\Variety':
$images = Varieties::getImages($product_id);
break;
case 'App\Models\Botanic\Specie':
$images = Species::getImages($product_id);
break;
case 'App\Models\Shop\Merchandise':
$images = Merchandises::getImages($product_id);
break;
default:
}
return $images ?? false ? ['images' => $images] : false;
}
}