add shipping rules

This commit is contained in:
Ludovic CANDELLIER
2023-07-16 14:45:42 +02:00
parent 297dcc62d2
commit 39c80ce6d1
459 changed files with 6219 additions and 5416 deletions

View File

@@ -2,17 +2,14 @@
namespace App\Repositories\Shop;
use Illuminate\Support\Str;
use App\Repositories\Core\Tag;
use App\Repositories\Core\Medias;
use App\Repositories\Core\Comments;
use App\Repositories\Botanic\Species;
use App\Repositories\Botanic\Varieties;
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\Repository\Imageable;
use Illuminate\Support\Str;
class Articles
{
@@ -25,6 +22,7 @@ class Articles
foreach ($data as $key => $name) {
$export[] = ['value' => $key, 'text' => $name];
}
return $export;
}
@@ -40,6 +38,7 @@ class Articles
'prices' => $offer->tariff->price_lists->first()->price_list_values->toArray(),
];
}
return $data ?? false;
}
@@ -56,6 +55,7 @@ class Articles
$data[strtolower($sibling->article_nature->name)] = $sibling->description;
}
}
return $data ?? false;
}
@@ -82,9 +82,10 @@ class Articles
{
$articles = Article::with(['article_nature'])->get();
foreach ($articles as $article) {
$data[$article->id] = ($article->article_nature->name ?? null) . ' - ' . $article->name;
$data[$article->id] = ($article->article_nature->name ?? null).' - '.$article->name;
}
asort($data, SORT_NATURAL);
return $data;
}
@@ -97,6 +98,7 @@ class Articles
{
$data = self::getArticle($id);
$data['offers'] = self::getOffersGroupedByNature($id, $sale_channel_id);
return $data;
}
@@ -113,6 +115,7 @@ class Articles
$data['categories'] = self::getCategoriesNameByArticle($article);
$data['tags'] = self::getFullTagsSlugByArticle($article);
$data['comments'] = Comments::getByModel($article);
return $data;
}
@@ -150,6 +153,7 @@ class Articles
($data['plus'] ?? null);
*/
$data['description'] = $article->description;
return $data;
}
@@ -166,6 +170,7 @@ class Articles
]),
];
}
return $data ?? [];
}
@@ -174,10 +179,10 @@ class Articles
$articles = self::getArticlesWithOffers($options);
foreach ($articles as $article) {
$price_lists = $article->offers[0]->tariff->price_lists->toArray();
if (!count($price_lists)) {
if (! count($price_lists)) {
continue;
}
if (!is_array($data[$article->name] ?? false)) {
if (! is_array($data[$article->name] ?? false)) {
$data[$article->name] = self::getDataForSale($article);
}
$prices = $price_lists[0]['price_list_values'][0];
@@ -187,6 +192,7 @@ class Articles
if ($data ?? false) {
ksort($data);
}
return $data ?? false;
}
@@ -236,6 +242,7 @@ class Articles
'offers.tariff.price_lists.price_list_values',
'offers.variation.package',
])->get();
return $data;
}
@@ -249,6 +256,7 @@ class Articles
$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());
}
@@ -260,6 +268,7 @@ class Articles
$type = ArticleNatures::getProductTypeNameByClass($class);
$data[$type] = true;
}
return array_keys($data);
}
@@ -268,6 +277,7 @@ class Articles
$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();
}
@@ -294,6 +304,7 @@ class Articles
$model = $model->merchandise();
break;
}
return $model;
}
@@ -301,6 +312,7 @@ class Articles
{
$data['article'] = self::getArticleEdit($id);
self::getMeta($data);
return $data;
}
@@ -312,12 +324,14 @@ class Articles
$data['categories'] = self::getCategoriesByArticle($article);
$data['tags'] = self::getTagsByArticle($article);
$data['comments'] = Comments::getByModel($article);
return $data;
}
public static function getInherited($id)
{
$article = Article::with('product.tags.tag_group')->findOrFail($id);
return self::getInheritedByProduct($article->product_id, $article->product_type);
}
@@ -350,10 +364,11 @@ class Articles
$data[] = [
'name' => 'Marchandise',
'description' => $product->description,
'tags' => $product->tags->toArray()
'tags' => $product->tags->toArray(),
];
break;
}
return $data ?? false;
}
@@ -370,6 +385,7 @@ class Articles
$data['images'] = Merchandises::getImages($product_id);
break;
}
return $data ?? false;
}
@@ -398,6 +414,7 @@ class Articles
'App\Models\Botanic\Variety' => 'Variétés',
'App\Models\Shop\Merchandise' => 'Marchandise',
];
return $data;
}
@@ -414,6 +431,7 @@ class Articles
public static function getProductTypeByCategory($category_id)
{
$models = self::getProductTypesModelsByCategory($category_id);
return (($models[0] ?? false) == Merchandise::class) ? 'merchandise' : 'botanic';
}
@@ -470,10 +488,11 @@ class Articles
$data += $article->tags->toArray();
foreach ($data as $tag) {
if (!isset($tags[$tag['group']][$tag['name']])) {
if (! isset($tags[$tag['group']][$tag['name']])) {
$tags[$tag['group']][] = $tag['name'];
}
}
return $tags ?? null;
}
@@ -490,12 +509,14 @@ class Articles
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;
}
@@ -523,6 +544,7 @@ class Articles
$images = count($merchandise->images ?? []) ? $merchandise->images : $images;
break;
}
return $images;
}
@@ -548,6 +570,7 @@ class Articles
$image = $article->product->image ?? false;
break;
}
return $image;
}
@@ -555,26 +578,28 @@ class Articles
{
$images = $data['images'] ?? false;
unset($data['images']);
$categories = $data['categories'] ?? false;
unset($data['categories']);
$tags = $data['tags'] ?? false;
unset($data['tags']);
$prices = $data['prices'] ?? false;
unset($data['prices']);
$article = self::store($data);
self::storeImages($article, $images);
self::storeCategories($article, $categories);
self::storeTags($article, $tags);
return $article->id;
}
public static function store($data)
{
$data['visible'] = $data['visible'] ?? false;
return ($data['id'] ?? false) ? self::update($data) : self::create($data);
}
@@ -588,6 +613,7 @@ class Articles
$id = $id ? $id : $data['id'];
$article = self::get($id);
$ret = $article->update($data);
return $article;
}
@@ -598,7 +624,7 @@ class Articles
public static function storeCategories($article, $categories)
{
if (!$categories) {
if (! $categories) {
return false;
}
$categories = collect($categories)->transform(
@@ -606,6 +632,7 @@ class Articles
return (int) $item;
}
)->toArray();
return $article->syncCategories($categories, true);
}
@@ -632,6 +659,7 @@ class Articles
public static function getHash($id)
{
$name = self::get($id)->name ?? false;
return $name ? hash('crc32c', Str::slug($name)) : false;
}
}