HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.shooperm.com/Modules/Product/Repositories/TagRepository.php
<?php
namespace Modules\Product\Repositories;

use App\Repositories\FilterRepository;
use Modules\GiftCard\Entities\GiftCard;
use Modules\Product\Entities\Attribute;
use Modules\Product\Entities\Brand;
use Modules\Product\Entities\Category;
use Modules\Product\Entities\CategoryProduct;
use Modules\Product\Entities\Product;
use Modules\Product\Entities\ProductTag;
use Modules\Product\Entities\ProductVariations;
use Modules\Seller\Entities\SellerProduct;
use Modules\Setup\Entities\Tag;

class TagRepository
{

    public function tagList(){
        return Tag::latest()->paginate(10);
    }

    public function getByTag($tag){
        $tag = Tag::where('name', $tag)->orWhere('id', $tag)->first();
        if($tag){
            $data['tag'] = $tag;
            $mainProducts = ProductTag::where('tag_id', $tag->id)->pluck('product_id')->toArray();
            $category_ids = CategoryProduct::whereIn('product_id',$mainProducts)->distinct()->pluck('category_id');
            $data['CategoryList'] = Category::whereIn('id',$category_ids)->get();
            $brandIds = Product::whereIn('id',$mainProducts)->distinct()->pluck('brand_id')->toArray();
            $data['brandList'] = Brand::whereIn('id',$brandIds)->get();
            $attribute_ids = ProductVariations::whereIn('product_id',$mainProducts)->distinct()->pluck('attribute_id');
            $data['attributeLists'] =  Attribute::with('values')->whereIn('id', $attribute_ids)->where('id','>',1)->get();
            $data['color'] = Attribute::with('values')->whereIn('id',$attribute_ids)->first();
            $products = SellerProduct::with('product')->where('status', 1)->whereHas('product', function($query) use($mainProducts){
                return $query->whereIn('product_id',$mainProducts);
            })->activeSeller()->get();

            $giftCards = GiftCard::where('status', 1)->whereHas('tags', function($q) use($tag){
                return $q->where('tag_id', $tag->id);

            })->select(['*', 'name as product_name','sku as slug'])->where('status', 1)->get();
            $filterRepo = new FilterRepository();
            $product_min_price = $filterRepo->filterProductMinPrice($products->pluck('id')->toArray());
            $product_max_price = $filterRepo->filterProductMaxPrice($products->pluck('id')->toArray());

            $giftcard_min_price = $giftCards->min('selling_price');
            $giftcard_max_price = $giftCards->max('selling_price');

            $data['min_price'] = (min($product_min_price,$giftcard_min_price) != null)?min($product_min_price,$giftcard_min_price):0;
            $data['max_price'] = max($product_max_price,$giftcard_max_price);

            $products = $products->merge($giftCards);

            $data['products'] = $products->paginate(10);
            return $data;
        }else{
            return false;
        }
        
    }

}