[WIP] begin of new display for article, shelves

This commit is contained in:
Ludovic CANDELLIER
2022-06-13 23:29:05 +02:00
parent e31978b1e3
commit b37321daf8
13 changed files with 163 additions and 98 deletions

View File

@@ -20,16 +20,19 @@ class CategoryController extends Controller
return $dataTable->render('Shop.Categories.list');
}
public function show($category_id, $by_rows = false)
public function show(Request $request, $category_id)
{
$data = self::init();
$data['display_by_rows'] = $by_rows;
$data['category'] = Categories::getFull($category_id);
$data['breadcrumb'] = Categories::getAncestorsByCategory($category_id);
$data['tags_selected'] = request()->input('tags') ?? [];
$data['display_by_rows'] = $request->input('display_by_rows') ?? false;
$data['product_type'] = $request->input('product_type') ?? 'botanic';
$data['tags_selected'] = $request->input('tags') ?? [];
$data['articles'] = Articles::getArticlesToSell([
'category_id' => $category_id,
'tags' => $data['tags_selected'],
'product_type' => $data['product_type'],
]);
// dump($data['articles']);
// exit;

View File

@@ -17,7 +17,7 @@ class HomeController extends Controller
$data = self::init();
$data['display_by_rows'] = $input['by_rows'] ?? false;
$data['shelves'] = Articles::getArticlesByHomepage();
$data['text'] = Homepages::getLast();
$data['text'] = Homepages::getHomepage();
// dump($data['shelves']);
// exit;
$data['tags'] = TagGroups::getWithTagsAndCountOffers();

View File

@@ -16,6 +16,9 @@ use Staudenmeir\EloquentHasManyDeep\HasRelationships;
use App\Traits\Model\HasComments;
use App\Traits\Model\Imageable;
use App\Models\Botanic\Variety;
use App\Models\Botanic\Specie;
class Article extends Model implements HasMedia
{
use Categorizable, EloquentJoin, HasComments, HasRelationships, Imageable, Powerjoins, Taggable, SoftDeletes, UserStamps;
@@ -99,6 +102,11 @@ class Article extends Model implements HasMedia
return $query->where($this->table . '.article_nature_id', $id);
}
public function scopeByArticleNatures($query, $ids)
{
return $query->whereIn($this->table . '.article_nature_id', $ids);
}
public function scopeByCategories($query, $categories_id)
{
return $categories_id ? $query->whereHas('categories', function ($query) use ($categories_id) {
@@ -121,6 +129,16 @@ class Article extends Model implements HasMedia
}) : $query;
}
public function scopeBotanic($query)
{
return $query->whereIn($this->table . '.product_type', [Variety::class, Specie::class]);
}
public function scopeMerchandise($query)
{
return $query->byProduct(Merchandise::class);
}
public function scopeByProduct($query, $model)
{
return $query->where($this->table . '.product_type', $model);

View File

@@ -219,12 +219,16 @@ class Articles
$search = $options['search'] ?? false;
$tags = $options['tags'] ?? false;
$article_nature_id = $options['article_nature_id'] ?? false;
$article_nature_ids = $options['article_nature_ids'] ?? false;
$product_type = $options['product_type'] ?? false;
$model = ($options['homepage'] ?? false) ? Article::homepage()->visible() : Article::visible();
$model = $category_id ? $model->byCategoryParent($category_id) : $model;
$model = $tags ? $model->byTagsSelected($tags) : $model;
$model = $search ? $model->search($search) : $model;
$model = $article_nature_id ? $model->byArticleNature($article_nature_id) : $model;
$model = $article_nature_ids ? $model->byArticleNatures($article_nature_ids) : $model;
$model = ($product_type == 'botanic') ? $model->botanic() : $model->merchandise();
return $model;
}
@@ -453,19 +457,19 @@ class Articles
switch ($article->product_type) {
case 'App\Models\Botanic\Variety':
$variety = $article->product;
$image = $variety->image;
$image = $variety->image ?? false;
if (!$image) {
$specie = $variety->specie;
$image = $specie->image;
$image = $specie->image ?? false;
}
break;
case 'App\Models\Botanic\Specie':
$specie = $article->product;
$image = $specie->image;
$image = $specie->image ?? false;
break;
case 'App\Models\Shop\Merchandise':
$merchandise = $article->product;
$image = $merchandise->image;
$image = $merchandise->image ?? false;
break;
}
}

View File

@@ -13,6 +13,11 @@ class Homepages
return $model ? $model->text : '';
}
public static function getHomepage()
{
return self::get(1)->text;
}
public static function get($id)
{
return Homepage::find($id);