/home/brandsfa/bigshoponly.com/app/Http/Controllers/Web/CompareController.php
<?php
namespace App\Http\Controllers\Web;
use App\Http\Controllers\Controller;
use App\Models\Attribute;
use App\Models\ProductCompare;
use Illuminate\Http\Request;
class CompareController extends Controller
{
public function __construct(
private ProductCompare $product_compare,
) {
}
public function index(){
$attributes = [];
$compare_lists = $this->product_compare->with('product')->whereHas('product')->where('user_id', auth('customer')->id())->get();
if(theme_root_path()=='theme_fashion' || theme_root_path() == 'theme_all_purpose'){
$attributes = Attribute::all();
}
return view(VIEW_FILE_NAMES['account_compare_list'], compact('compare_lists','attributes'));
}
public function store_compare_list(Request $request)
{
if ($request->ajax()) {
if (auth('customer')->check()) {
$compare_list = $this->product_compare->where(['user_id' => auth('customer')->id(), 'product_id' => $request->product_id])->first();
if ($compare_list) {
$compare_list->delete();
$count_compare_list = $this->product_compare->whereHas('product', function ($q) {
return $q;
})->where('user_id', auth('customer')->id())->count();
$compare_product_ids = $this->product_compare->where('user_id', auth('customer')->id())->pluck('product_id')->toArray();
$product_count = count($compare_product_ids);
session()->put('compare_list', $this->product_compare->where('user_id', auth('customer')->id())->pluck('product_id')->toArray());
return response()->json([
'error' => translate("compare_list_Removed"),
'value' => 2,
'count' => $count_compare_list,
'product_count' => $product_count,
'compare_product_ids' => $compare_product_ids
]);
} else {
$count_compare_list_exist = $this->product_compare->where('user_id', auth('customer')->id())->count();
if ($count_compare_list_exist == 3) {
$this->product_compare->where('user_id', auth('customer')->id())->orderBY('id')->first()->delete();
}
$compare_list = new ProductCompare;
$compare_list->user_id = auth('customer')->id();
$compare_list->product_id = $request->product_id;
$compare_list->save();
$count_compare_list = $this->product_compare->whereHas('product', function ($q) {
return $q;
})->where('user_id', auth('customer')->id())->count();
$compare_product_ids = $this->product_compare->where('user_id', auth('customer')->id())->pluck('product_id')->toArray();
$product_count = count($compare_product_ids);
session()->put('compare_list', $this->product_compare->where('user_id', auth('customer')->id())->pluck('product_id')->toArray());
return response()->json([
'success' => translate("Product_has_been_added_to_Compare_list"),
'value' => 1,
'count' => $count_compare_list,
'id' => $request->product_id,
'product_count' => $product_count,
'compare_product_ids' => $compare_product_ids
]);
}
}else {
return response()->json(['error' => translate('login_first'), 'value' => 0]);
}
}else{
$compare_list = $this->product_compare->where(['user_id'=> auth('customer')->id(), 'product_id'=> $request->product_id])->first();
if($compare_list){
return redirect()->back();
}
else{
$new_compare_list = $this->product_compare->find($request->compare_id);
if ($new_compare_list) {
$new_compare_list->product_id = $request->product_id;
$new_compare_list->save();
}else{
$this->product_compare->insert([
'user_id'=> auth('customer')->id(),
'product_id'=> $request->product_id
]);
}
return redirect()->back();
}
}
}
//for fashion theme
public function delete_compare_list(Request $request){
$this->product_compare->where(['id'=>$request->id])->delete();
session()->put('compare_list', $this->product_compare->where('user_id', auth('customer')->user()->id)->pluck('product_id')->toArray());
return redirect()->back();
}
public function delete_compare_list_all(){
$this->product_compare->where('user_id', auth('customer')->id())->delete();
session()->put('compare_list', $this->product_compare->where('user_id', auth('customer')->user()->id)->pluck('product_id')->toArray());
return redirect()->back();
}
}