From 14931bc5e6a1d49031ab901b21dc84e789de8cd3 Mon Sep 17 00:00:00 2001 From: Ludovic CANDELLIER Date: Mon, 7 Mar 2022 22:10:59 +0100 Subject: [PATCH] Add method to get image with parent for article --- app/Datatables/Shop/ArticlesDataTable.php | 3 +- app/Repositories/Shop/Articles.php | 35 +++++++++++++++++++++-- app/Repositories/Shop/Offers.php | 3 +- app/Traits/Repository/Imageable.php | 4 +-- 4 files changed, 38 insertions(+), 7 deletions(-) diff --git a/app/Datatables/Shop/ArticlesDataTable.php b/app/Datatables/Shop/ArticlesDataTable.php index 56cfec88..1772f6b4 100644 --- a/app/Datatables/Shop/ArticlesDataTable.php +++ b/app/Datatables/Shop/ArticlesDataTable.php @@ -44,7 +44,8 @@ class ArticlesDataTable extends DataTable { $datatables ->editColumn('thumb', function (Article $article) { - return ''; + $image = Articles::getFullImageByArticle($article); + return ''; }) ->editColumn('article_nature.name', function (Article $article) { return $article->article_nature ? $article->article_nature->name : ''; diff --git a/app/Repositories/Shop/Articles.php b/app/Repositories/Shop/Articles.php index c5988fd2..fa501da7 100644 --- a/app/Repositories/Shop/Articles.php +++ b/app/Repositories/Shop/Articles.php @@ -80,8 +80,9 @@ class Articles $article = self::get($id); $data = $article->toArray(); $data['description'] = (!empty($article->description)) ? $article->description : $article->product->description; - $data['image'] = self::getPreview($article->image); - $data['image_big'] = self::getImage($article->image); + $image = self::getFullImageByArticle($article); + $data['image'] = self::getPreview($image); + $data['image_big'] = self::getImage($image); $data['inherited'] = self::getInherited($id); $data['categories'] = self::getCategoriesNameByArticle($article); $data['tags'] = self::getTagsSlugByArticle($article); @@ -113,7 +114,7 @@ class Articles if (!is_array($data[$article->name] ?? false)) { $data[$article->name] = [ 'description' => (!empty($article->description)) ? $article->description : $article->product->description, - 'image' => $article->image, + 'image' => self::getFullImageByArticle($article), 'product_type' => $article->product_type, 'product_id' => $article->product_id, 'product_name' => $article->product->name, @@ -324,6 +325,34 @@ class Articles return Article::find($id); } + public static function getFullImageById($id) + { + $article = self::get($id); + return self::getFullImageByImage($article); + } + + public static function getFullImageByArticle($article) + { + $image = $article->image; + if (!$image) { + switch ($article->product_type) { + case 'App\Models\Botanic\Variety': + $variety = $article->product; + $image = $variety->image; + if (!$image) { + $specie = $variety->specie; + $image = $specie->image; + } + break; + case 'App\Models\Botanic\Specie': + $specie = $article->product; + $image = $specie->image; + break; + } + } + return $image; + } + public static function storeFull($data) { $images = isset($data['images']) ? $data['images'] : false; diff --git a/app/Repositories/Shop/Offers.php b/app/Repositories/Shop/Offers.php index 9be3c8d1..a4587e64 100644 --- a/app/Repositories/Shop/Offers.php +++ b/app/Repositories/Shop/Offers.php @@ -33,7 +33,8 @@ class Offers public static function getThumbSrc(Offer $offer) { - return $offer->article ? Articles::getThumbSrc($offer->article->image) : false; + $image = $offer->article ? Articles::getFullImageByArticle($offer->article) : false; + return $image ? Articles::getThumbSrc($image) : false; } public static function getLast() diff --git a/app/Traits/Repository/Imageable.php b/app/Traits/Repository/Imageable.php index 2b21b365..a45469fd 100644 --- a/app/Traits/Repository/Imageable.php +++ b/app/Traits/Repository/Imageable.php @@ -6,9 +6,9 @@ use App\Repositories\Core\Medias; trait Imageable { - public static function storeImages($variety, $files) + public static function storeImages($model, $files) { - return Medias::storeImages($variety, $files); + return Medias::storeImages($model, $files); } public static function getImages($id)