diff --git a/app/Datatables/Botanic/VarietiesDataTable.php b/app/Datatables/Botanic/VarietiesDataTable.php
index aab54b9f..9f6f432c 100644
--- a/app/Datatables/Botanic/VarietiesDataTable.php
+++ b/app/Datatables/Botanic/VarietiesDataTable.php
@@ -14,7 +14,7 @@ class VarietiesDataTable extends DataTable
public function query(Variety $model)
{
// $model = $model::with('specie')->withCount('Articles')->select('botanic_varieties.*');
- $model = $model::joinRelationship('Specie')->select('botanic_varieties.*', 'botanic_species.name as specie_name')->with(['image','Specie'])->withCount('Articles');
+ $model = $model::joinRelationship('Specie')->select('botanic_varieties.*', 'botanic_species.name as specie_name')->with(['image', 'Specie'])->withCount(['Articles', 'tags']);
return $this->buildQuery($model);
}
@@ -37,6 +37,7 @@ class VarietiesDataTable extends DataTable
Column::make('thumb')->title('')->searchable(false)->orderable(false)->width(40)->class('text-center'),
Column::make('name')->title('Nom'),
Column::make('articles_count')->title('Nb articles')->class('text-right')->searchable(false),
+ Column::make('tags_count')->title('Nb tags')->class('text-right')->searchable(false),
$this->makeColumnButtons(),
];
}
diff --git a/app/Datatables/Shop/OffersDataTable.php b/app/Datatables/Shop/OffersDataTable.php
index d5dfc430..d3216dc5 100644
--- a/app/Datatables/Shop/OffersDataTable.php
+++ b/app/Datatables/Shop/OffersDataTable.php
@@ -13,17 +13,31 @@ class OffersDataTable extends DataTable
public function query(Offer $model)
{
$model = $model->with(['article.article_nature', 'variation', 'tariff']);
+ $model = self::filterByArticleNature($model);
+ $model = self::filterByPackage($model);
return $this->buildQuery($model);
}
+ public static function filterByArticleNature($model, $article_nature_id = false)
+ {
+ $article_nature_id = $article_nature_id ? $article_nature_id : self::isFilteredByField('article_nature_id');
+ return $article_nature_id ? $model->byArticleNature($article_nature_id) : $model;
+ }
+
+ public static function filterByPackage($model, $package_id = false)
+ {
+ $package_id = $package_id ? $package_id : self::isFilteredByField('package_id');
+ return $package_id ? $model->byPackage($package_id) : $model;
+ }
+
protected function getColumns()
{
return [
- Column::make('article.name')->title('Article'),
- Column::make('article.article_nature.name')->title('Nature'),
- Column::make('variation.name')->title('Déclinaison'),
- Column::make('tariff.name')->title('Tarif'),
- $this->makeColumnButtons(),
+ Column::make('article.name')->title('Article'),
+ Column::make('article.article_nature.name')->title('Nature'),
+ Column::make('variation.name')->title('Déclinaison'),
+ Column::make('tariff.name')->title('Tarif'),
+ $this->makeColumnButtons(),
];
}
}
diff --git a/app/Http/Controllers/Admin/Shop/OfferController.php b/app/Http/Controllers/Admin/Shop/OfferController.php
index cf872950..dab91cac 100644
--- a/app/Http/Controllers/Admin/Shop/OfferController.php
+++ b/app/Http/Controllers/Admin/Shop/OfferController.php
@@ -6,7 +6,9 @@ use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Repositories\Shop\Articles;
+use App\Repositories\Shop\ArticleNatures;
use App\Repositories\Shop\Offers;
+use App\Repositories\Shop\Packages;
use App\Repositories\Shop\Tariffs;
use App\Repositories\Shop\Variations;
use App\Datatables\Shop\OffersDataTable;
@@ -15,6 +17,8 @@ class OfferController extends Controller
{
public function index(OffersDataTable $dataTable)
{
+ $data['article_natures'] = ArticleNatures::getOptions();
+ $data['packages'] = Packages::getOptions();
return $dataTable->render('Admin.Shop.Offers.list', $data ?? []);
}
diff --git a/app/Models/Shop/ArticleNature.php b/app/Models/Shop/ArticleNature.php
index 2fac2e49..cb44600d 100644
--- a/app/Models/Shop/ArticleNature.php
+++ b/app/Models/Shop/ArticleNature.php
@@ -19,4 +19,9 @@ class ArticleNature extends Model
{
return $this->hasMany(Article::class);
}
+
+ public function scopeByArticleNature($query, $id)
+ {
+ return $query->where($this->table . '.id', $id);
+ }
}
diff --git a/app/Models/Shop/Customer.php b/app/Models/Shop/Customer.php
index 7ce655da..3269329e 100644
--- a/app/Models/Shop/Customer.php
+++ b/app/Models/Shop/Customer.php
@@ -8,6 +8,11 @@ class Customer extends Model
{
protected $guarded = ['id'];
protected $table = 'shop_customers';
+
+ public function CustomerAddresses()
+ {
+ return $this->hasMany(CustomerAddress::class);
+ }
public function Invoices()
{
diff --git a/app/Models/Shop/Offer.php b/app/Models/Shop/Offer.php
index 1aa71e65..2298a579 100644
--- a/app/Models/Shop/Offer.php
+++ b/app/Models/Shop/Offer.php
@@ -38,13 +38,27 @@ class Offer extends Model
return $query->where('article_id', $id);
}
+ public function scopeByArticleNature($query, $article_nature_id)
+ {
+ return $query->whereHas('article.article_nature', function ($query) use ($article_nature_id) {
+ $query->byArticleNature($article_nature_id);
+ });
+ }
+
public function scopeByCategory($query, $category_id)
{
return $query->whereHas('article.categories', function ($query) use ($category_id) {
$query->where('category_id', $category_id);
});
}
-
+
+ public function scopeByPackage($query, $package_id)
+ {
+ return $query->whereHas('variation', function ($query) use ($package_id) {
+ $query->byPackage($package_id);
+ });
+ }
+
public function scopeByStatus($query, $id)
{
return $query->where('status_id', $id);
diff --git a/app/Models/Shop/Variation.php b/app/Models/Shop/Variation.php
index 5428ee8b..d6dddcd6 100644
--- a/app/Models/Shop/Variation.php
+++ b/app/Models/Shop/Variation.php
@@ -27,4 +27,9 @@ class Variation extends Model
{
return $this->hasMany(Offer::class);
}
+
+ public function scopeByPackage($query, $package_id)
+ {
+ return $query->where($this->table . '.package_id', $package_id);
+ }
}
diff --git a/app/Repositories/Shop/Articles.php b/app/Repositories/Shop/Articles.php
index a69deb38..4d2c725b 100644
--- a/app/Repositories/Shop/Articles.php
+++ b/app/Repositories/Shop/Articles.php
@@ -12,6 +12,7 @@ use App\Repositories\Botanic\Varieties;
use App\Models\Shop\Article;
use App\Traits\Repository\Imageable;
+
class Articles
{
use Imageable;
@@ -50,6 +51,7 @@ class Articles
{
$article = self::get($id);
$data = $article->toArray();
+ $data['image'] = Articles::getPreview($article->image);
$data['inherited'] = self::getInherited($id);
$data['categories'] = self::getCategoriesNameByArticle($article);
$data['tags'] = self::getTagsNameByArticle($article);
@@ -164,12 +166,25 @@ class Articles
public static function getMeta(&$data = [])
{
- $data['products'] = (($data['article']['product_type'] ?? false) == 'App\Models\Botanic\Variety') ? Varieties::getOptionsWithSpecie() : Species::getOptions();
+ switch ($data['article']['product_type'] ?? false) {
+ case 'App\Models\Botanic\Variety':
+ $data['products'] = Varieties::getOptionsWithSpecie();
+ break;
+ case 'App\Models\Botanic\Variety':
+ $data['products'] = Species::getOptions();
+ break;
+ default:
+ $data['products'] = Species::getOptions();
+ }
+
$data['categories_options'] = Categories::getOptions();
$data['natures_options'] = ArticleNatures::getOptions();
- $data['packages'] = ($data['article']['article_family_id'] ?? false) ? Packages::getSelectByFamily($data['article']['article_family_id']) : [];
+ // $data['packages'] = ($data['article']['article_family_id'] ?? false) ? Packages::getSelectByFamily($data['article']['article_family_id']) : [];
$data['tags_list'] = TagGroups::getTreeTags();
- $data['models_options'] = ['App\Models\Botanic\Specie' => 'Espèces', 'App\Models\Botanic\Variety' => 'Variétés'];
+ $data['models_options'] = [
+ 'App\Models\Botanic\Specie' => 'Espèces',
+ 'App\Models\Botanic\Variety' => 'Variétés',
+ ];
return $data;
}
@@ -271,5 +286,4 @@ class Articles
{
return Tag::storeTags($article, $tags);
}
-
}
diff --git a/app/Traits/Model/Imageable.php b/app/Traits/Model/Imageable.php
index 9dce0018..56ca3d2f 100644
--- a/app/Traits/Model/Imageable.php
+++ b/app/Traits/Model/Imageable.php
@@ -6,12 +6,10 @@ use Spatie\Image\Manipulations;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
use Spatie\MediaLibrary\InteractsWithMedia;
-use App\Repositories\Core\Medias;
-
trait Imageable
{
use InteractsWithMedia;
-
+
public function images()
{
return $this->hasMany('App\Models\Core\Media', 'model_id')->where('model_type', get_class($this));
@@ -19,7 +17,7 @@ trait Imageable
public function image()
{
- return $this->hasOne('App\Models\Core\Media', 'model_id')->where('model_type', get_class($this));
+ return $this->hasOne('App\Models\Core\Media', 'model_id')->where('model_type', get_class($this))->latest();
}
public function registerMediaConversions(Media $media = null) : void
@@ -30,5 +28,4 @@ trait Imageable
$this->addMediaConversion('normal')->fit(Manipulations::FIT_CROP, 480, 480);
// $this->addMediaConversion('zoom')->fit(Manipulations::FIT_CROP, 1200, 1200)->withResponsiveImages();
}
-
}
diff --git a/app/Traits/Repository/Imageable.php b/app/Traits/Repository/Imageable.php
index cce57ab3..472049e4 100644
--- a/app/Traits/Repository/Imageable.php
+++ b/app/Traits/Repository/Imageable.php
@@ -28,7 +28,7 @@ trait Imageable
public static function getPreview($image)
{
- return '';
+ return '
';
}
public static function getPreviewSrc($image)
diff --git a/resources/views/Admin/Shop/Articles/list.blade.php b/resources/views/Admin/Shop/Articles/list.blade.php
index 9c978ddc..f925b46f 100644
--- a/resources/views/Admin/Shop/Articles/list.blade.php
+++ b/resources/views/Admin/Shop/Articles/list.blade.php
@@ -8,7 +8,7 @@
@component('components.card')
@include('components.datatable', ['route' => route('Admin.Shop.Articles.index'), 'model' => 'articles', 'with_filters' => true])
@component('components.layout.modal', ['title' => 'Filtres', 'id' => 'modal-articles-filters'])
- @include('Admin.Shop.Articles.partials.filters')
+ @include('Admin.Shop.Articles.partials.filters', ['model' => 'articles'])
@endcomponent
@endcomponent
@endsection
diff --git a/resources/views/Admin/Shop/Articles/partials/filters.blade.php b/resources/views/Admin/Shop/Articles/partials/filters.blade.php
index 570385e8..5555bcb0 100644
--- a/resources/views/Admin/Shop/Articles/partials/filters.blade.php
+++ b/resources/views/Admin/Shop/Articles/partials/filters.blade.php
@@ -1,4 +1,4 @@
-