diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php index c9bc7ed..fc7cffc 100644 --- a/app/Http/Controllers/ClientController.php +++ b/app/Http/Controllers/ClientController.php @@ -206,6 +206,8 @@ class ClientController extends Controller ->where('data', 'LIKE', '%"'.$prop->name.'":"' . $request->meta[$prop->name] . '"%') ->pluck('product_id')->toArray(); + $id = array_merge($id,$query->whereMeta($prop->name, $request->input('meta')[$prop->name])->pluck('id')->toArray()); + $id = array_unique($id); $query->whereIn('id', $id); }else{ $query->whereMeta($prop->name, $request->input('meta')[$prop->name]); @@ -347,4 +349,17 @@ class ClientController extends Controller return redirect()->back()->with(['message' => $message]); } } + + + + public function compare() + { + $area = 'compare'; + $title = __("Compare products"); + $subtitle = ''; + $ids = json_decode(\Cookie::get('compares'), true); + $products = Product::whereIn('id',$ids)->where('status',1)->get(); + return view('client.default-list', compact('area', 'products', 'title', 'subtitle')); + } + } diff --git a/app/Models/Product.php b/app/Models/Product.php index 4b50b4c..5a5193d 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -232,13 +232,18 @@ class Product extends Model implements HasMedia $result[$key]['human_value'] = "
 
"; break; case 'checkbox': - $result[$key]['human_value'] = $value ? '✅' : '❌'; + $result[$key]['human_value'] = $value ? '' : ''; break; - case 'multi': case 'select': case 'singlemulti': if (!is_array($value)) { - $result[$key]['human_value'] = $result[$key]['data']->datas[$value]; + if (isset( $result[$key]['data']->datas[$value])){ + + $result[$key]['human_value'] = + $result[$key]['data']->datas[$value]; + }else{ + $result[$key]['human_value'] = '-'; + } } else { $result[$key]['human_value'] = ''; foreach ($value as $k => $v) { @@ -249,10 +254,13 @@ class Product extends Model implements HasMedia break; default: if (is_array($value)) { - $result[$key]['human_value'] = implode(', ', $value); + $result[$key]['human_value'] = ''.implode(' ', $value).''; } else { - - $result[$key]['human_value'] = $value; + if ($value == '' || $value == null) { + $result[$key]['human_value'] = '-'; + }else{ + $result[$key]['human_value'] = $value; + } } } diff --git a/resources/views/segments/compare/CompareProducts/CompareProducts.blade.php b/resources/views/segments/compare/CompareProducts/CompareProducts.blade.php new file mode 100644 index 0000000..8fd0332 --- /dev/null +++ b/resources/views/segments/compare/CompareProducts/CompareProducts.blade.php @@ -0,0 +1,47 @@ +
+
+

+ {{$title}} +

+
+ @foreach($products as $product) +
+
+
+ +

+ {{$product->name}} +

+
+
    +
  • + + {{__("Price")}} + + + {{$product->getPrice()}} + +
  • + @foreach($product->fullMeta() as $meta) +
  • + + {{$meta['data']->label}} + + + {!! $meta['human_value'] !!} + +
  • + @endforeach +
+ +
+
+ @endforeach +
+
+
diff --git a/resources/views/segments/compare/CompareProducts/CompareProducts.js b/resources/views/segments/compare/CompareProducts/CompareProducts.js new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/segments/compare/CompareProducts/CompareProducts.json b/resources/views/segments/compare/CompareProducts/CompareProducts.json new file mode 100644 index 0000000..1c72aae --- /dev/null +++ b/resources/views/segments/compare/CompareProducts/CompareProducts.json @@ -0,0 +1,10 @@ +{ + "name": "CompareProducts", + "version": "1.0", + "author": "xStack", + "email": "xshop@xstack.ir", + "license": "GPL-3.0-or-later", + "url": "https:\/\/xstack.ir", + "author_url": "https:\/\/4xmen.ir", + "packages": [] +} \ No newline at end of file diff --git a/resources/views/segments/compare/CompareProducts/CompareProducts.php b/resources/views/segments/compare/CompareProducts/CompareProducts.php new file mode 100644 index 0000000..a00caa7 --- /dev/null +++ b/resources/views/segments/compare/CompareProducts/CompareProducts.php @@ -0,0 +1,21 @@ +name('welcome'); Route::get('/posts', [\App\Http\Controllers\ClientController::class,'posts'])->name('posts'); + Route::get('/compare', [\App\Http\Controllers\ClientController::class,'compare'])->name('compare'); Route::get('/galleries', [\App\Http\Controllers\ClientController::class,'galleries'])->name('galleries'); Route::get('/products', [\App\Http\Controllers\ClientController::class,'products'])->name('products'); Route::get('/tag/{post}', [\App\Http\Controllers\ClientController::class,'tag'])->name('tag'); // wip