Updates to 03-2025

This commit is contained in:
Kevin Adametz 2025-04-01 10:39:21 +02:00
parent 6167273a48
commit 9b54eb0512
348 changed files with 34535 additions and 5774 deletions

View file

@ -5,12 +5,14 @@ namespace App\Repositories;
use App\Models\CountryPrice;
use App\Models\Attribute;
use App\Models\Product;
use App\Models\ProductAttribute;
use App\Models\ProductCategory;
use App\Models\ProductImage;
use App\Models\ProductIngredient;
class ProductRepository extends BaseRepository {
@ -29,10 +31,12 @@ class ProductRepository extends BaseRepository {
$data['active'] = isset($data['active']) ? 1 : 0;
$data['single_commission'] = isset($data['single_commission']) ? 1 : 0;
$data['amount_commission'] = isset($data['amount_commission']) ? 1 : 0;
$data['exclude_stats_sales'] = isset($data['exclude_stats_sales']) ? 1 : 0;
$data['whitelabel'] = isset($data['whitelabel']) ? 1 : 0;
$data['shipping_addon'] = isset($data['shipping_addon']) ? 1 : 0;
$data['max_buy'] = isset($data['max_buy']) ? 1 : 0;
$data['show_on'] = isset($data['show_on']) ? $data['show_on'] : null;
if($data['id'] === "new"){
$this->model = Product::create($data);
}
@ -42,9 +46,14 @@ class ProductRepository extends BaseRepository {
$this->model->save();
}
$this->updateCategories(isset($data['categories']) ? $data['categories'] : array());
$this->updateAttributes(isset($data['attributes']) ? $data['attributes'] : array());
$this->updateIngredients(isset($data['product_ingredients']) ? $data['product_ingredients'] : array());
$this->updateCategories(isset($data['categories']) ? $data['categories'] : []);
$this->updateAttributes(isset($data['attributes']) ? $data['attributes'] : []);
$this->updateWLVariants(isset($data['whitelabel_variants']) ? $data['whitelabel_variants'] : []);
$this->updateWLImageAttributs(isset($data['image_wl_attributes']) ? $data['image_wl_attributes'] : [] , isset($data['whitelabel_variants']) ? $data['whitelabel_variants'] : []);
$this->updateIngredients(isset($data['product_ingredients']) ? $data['product_ingredients'] : []);
$this->updateCountryPrices($data);
@ -103,15 +112,62 @@ class ProductRepository extends BaseRepository {
//set attr
if(is_array($data)){
foreach ($data as $id) {
$attribute = Attribute::findOrFail($id);
ProductAttribute::create([
'product_id' => $this->model->id,
'attribute_id' => $id,
'type_id' => $attribute->attribute_type_id,
'attribute_id' => $attribute->id,
]);
}
}
return true;
}
public function updateWLVariants($data = array())
{
foreach ($this->model->attribute_variants as $variant) {
if(($pos = array_search($variant->attribute_id, $data)) !== FALSE){
unset($data[$pos]);
}else{
$variant->delete();
}
}
//set attr
if(is_array($data)){
foreach ($data as $id) {
$attribute = Attribute::findOrFail($id);
ProductAttribute::create([
'product_id' => $this->model->id,
'type_id' => $attribute->attribute_type_id,
'attribute_id' => $attribute->id,
]);
}
}
return true;
}
public function updateWLImageAttributs($attributes = [], $variants = [])
{
//abgleich der attributes gegen die variants
foreach ($attributes as $image => $value) {
foreach ($value as $k => $val) {
if(!is_array($variants) || !in_array($val, $variants)){
unset($attributes[$image][$k]);
}
}
}
foreach ($this->model->whitelabel_images as $image) {
$image->update([
'attributes' => isset($attributes[$image->id]) ? $attributes[$image->id] : NULL,
]);
}
return true;
}
public function updateCountryPrices($data)
{
if(!isset($data['country_prices']) || !is_array($data['country_prices'])){
@ -128,7 +184,6 @@ class ProductRepository extends BaseRepository {
'c_price_old' => isset($data['c_price_old'][$country_id]) ? reFormatNumber($data['c_price_old'][$country_id]) : null,
'c_currency' => isset($data['c_currency'][$country_id]) ? reFormatNumber($data['c_currency'][$country_id]) : null,
]);
}
@ -156,6 +211,7 @@ class ProductRepository extends BaseRepository {
foreach ($model->attributes as $attribute){
ProductAttribute::create([
'product_id' => $this->model->id,
'type_id' => $this->model->attribute_type_id,
'attribute_id' => $attribute->attribute_id,
]);
}
@ -182,30 +238,26 @@ class ProductRepository extends BaseRepository {
'images/product/'.$this->model->id.'/'.$name
);
ProductImage::create([
'product_id' => $this->model->id,
'type' => $image->type,
'filename' => $name,
'original_name' => $image->original_name,
'ext' => $image->ext,
'mine' => $image->mine,
'size' => $image->size
'size' => $image->size,
'attributes' => $image->attributes
]);
}
return $this->model;
}
public function delete()
{
}
}