[WIP] Fix on prices & attributes

This commit is contained in:
Ludovic CANDELLIER
2020-06-15 00:17:15 +02:00
parent abc1510284
commit 5bd09966b7
6 changed files with 49 additions and 30 deletions

View File

@@ -29,19 +29,7 @@ class ArticleController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$data = $request->all(); $data = $request->all();
$images = isset($data['images']) ? $data['images'] : false; Articles::storeFull($data);
$categories = isset($data['categories']) ? $data['categories'] : false;
$tags = isset($data['tags']) ? $data['tags'] : false;
$prices = isset($data['prices']) ? $data['prices'] : false;
unset($data['images']);
unset($data['categories']);
unset($data['tags']);
unset($data['prices']);
$article = Articles::store($data);
Articles::storeImages($article, $images);
Articles::storeCategories($article, $categories);
Articles::storeTags($article, $categories);
Articles::storePrices($article, $prices);
return redirect()->route('Shop.Admin.Articles.index'); return redirect()->route('Shop.Admin.Articles.index');
} }

View File

@@ -6,6 +6,9 @@ use Illuminate\Database\Eloquent\Model;
class ArticleAttribute extends Model class ArticleAttribute extends Model
{ {
protected $guarded = ['id'];
protected $table = 'shop_article_attribute_attributes';
public function Price() public function Price()
{ {
return $this->belongsTo('App\Models\Shop\ArticlePrice'); return $this->belongsTo('App\Models\Shop\ArticlePrice');

View File

@@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\Model;
class ArticlePrice extends Model class ArticlePrice extends Model
{ {
protected $guarded = ['id']; protected $guarded = ['id'];
protected $table = 'shop_article_prices';
public function Article() public function Article()
{ {

View File

@@ -29,12 +29,17 @@ class ArticleAttributes
{ {
foreach ($attributes as $key => $attribute) foreach ($attributes as $key => $attribute)
{ {
$attributes[$key]['article_price_id'] = $article_price_id; self::storeAttribute($article_price_id, $attributes[$key]);
unset($attributes[$key]['attribute_family_id']);
self::store($attributes[$key]);
} }
} }
public static function storeAttribute($article_price_id, $attribute)
{
$attribute['article_price_id'] = $article_price_id;
unset($attribute['attribute_family_id']);
return self::store($attribute);
}
public static function store($data) public static function store($data)
{ {
$id = isset($data['id']) ? $data['id'] : false; $id = isset($data['id']) ? $data['id'] : false;

View File

@@ -32,7 +32,7 @@ class ArticlePrices
public static function storePrices($article_id, $prices) public static function storePrices($article_id, $prices)
{ {
if ($prices) { if ($prices) {
foreach ($prices as $$key => $price) { foreach ($prices as $key => $price) {
$prices[$key]['article_id'] = $article_id; $prices[$key]['article_id'] = $article_id;
self::store($prices[$key]); self::store($prices[$key]);
} }
@@ -41,11 +41,6 @@ class ArticlePrices
} }
} }
public static function storeAttributes($article_price_id,$attributes)
{
return ArticleAttributes::storeAttributes($article_price_id, $attributes);
}
public static function store($data) public static function store($data)
{ {
$attributes = isset($data['attributes']) ? $data['attributes'] : false; $attributes = isset($data['attributes']) ? $data['attributes'] : false;
@@ -59,6 +54,12 @@ class ArticlePrices
return $price->id; return $price->id;
} }
public static function storeAttributes($article_price_id,$attributes)
{
return ArticleAttributes::storeAttribute($article_price_id, $attributes);
}
public static function create($data) public static function create($data)
{ {
return ArticlePrice::create($data); return ArticlePrice::create($data);

View File

@@ -60,6 +60,24 @@ class Articles
return Article::find($id); return Article::find($id);
} }
public static function storeFull($data)
{
$images = isset($data['images']) ? $data['images'] : false;
$categories = isset($data['categories']) ? $data['categories'] : false;
$tags = isset($data['tags']) ? $data['tags'] : false;
$prices = isset($data['prices']) ? $data['prices'] : false;
unset($data['images']);
unset($data['categories']);
unset($data['tags']);
unset($data['prices']);
$article = self::store($data);
self::storeImages($article, $images);
self::storeCategories($article, $categories);
self::storeTags($article, $tags);
self::storePrices($article, $prices);
return $article;
}
public static function store($data) public static function store($data)
{ {
$id = isset($data['id']) ? $data['id'] : false; $id = isset($data['id']) ? $data['id'] : false;
@@ -86,21 +104,24 @@ class Articles
public static function storeCategories($article, $categories) public static function storeCategories($article, $categories)
{ {
if ($categories) if ($categories) {
{
$categories = collect($categories)->transform(function ($item, $key) { $categories = collect($categories)->transform(function ($item, $key) {
return (int) $item; return (int) $item;
})->toArray(); })->toArray();
return $article->attachCategories($categories); return $article->syncCategories($categories, true);
} else return false; } else {
return false;
}
} }
public static function storeTags($article, $tags) public static function storeTags($article, $tags)
{ {
if ($tags) if ($tags) {
{ $tags = collect($tags)->transform(function ($item, $key) {
return $article->attachTags($tags); return (int) $item;
} })->toArray();
return $article->syncTags($tags, true);
} else return false;
} }
public static function storePrices($article, $prices) public static function storePrices($article, $prices)