Current File : //home/tradevaly/new.tradevaly.com.bd/app/Http/Controllers/HomeController.php
<?php

namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use App\Models\Banner;
use App\Models\BuyOffer;
use App\Models\Package;
use App\Models\FeaturedProduct;
use App\Models\ViewProduct;
use App\Models\Product;
use App\Models\User;
use App\Models\Tag;
use App\Models\Page;
use App\Models\Category;
use App\Models\About;
use App\Models\Country;
use App\Models\Company;
use App\Models\Testimonial;
use App\Models\Message;
use App\Models\Thread;
use App\Models\Tradeshows;
use App\Models\AdvertiserOrder;
use App\Models\QuoteMessage;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Brian2694\Toastr\Facades\Toastr;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Mail;
use shurjopayv2\ShurjopayLaravelPackage8\Http\Controllers\ShurjopayController;

class HomeController extends Controller
{
    public function country($country){
        $data['country'] = Country::take(10)->pluck('id')->toArray();
        
        $data['cat'] = Category::first();
        
        
        
            $data['port'] = Product::where('status',1)->groupBy('port')->pluck('port')->toArray();
           $data['supplier'] = Product::where('status',1)->groupBy('supplier_id')->pluck('supplier_id')->toArray();
           $data['unit'] = Product::where('status',1)->groupBy('unit')->pluck('unit')->toArray();
           $data['port'] = Product::where('status',1)->groupBy('port')->pluck('port')->toArray();
           $data['time'] = Product::where('status',1)->groupBy('processing_time')->pluck('processing_time')->toArray();
           $data['supply_ability'] = Product::where('status',1)->groupBy('supply_ability')->pluck('supply_ability')->toArray();
           $data['payment_method'] = Product::where('status',1)->groupBy('payment_method')->pluck('payment_method')->toArray();
           
            $products = Product::where('status',1)->query();
            $country_id = Country::where('iso', $country)->first();
            
        if ($country_id != null) {
                $products = $products->where('country_id', $country_id);
            }
         $data['products'] = $products->paginate(18); 
        return view('frontend.pages.list_products')->with($data);
    }
     public function all_product  ()
    {
           
        $data['country'] = Country::take(10)->pluck('id')->toArray();
        
        $data['cat'] = Category::first();
        
        
        
            $data['port'] = Product::where('status',1)->groupBy('port')->pluck('port')->toArray();
           $data['supplier'] = Product::where('status',1)->groupBy('supplier_id')->pluck('supplier_id')->toArray();
           $data['unit'] = Product::where('status',1)->groupBy('unit')->pluck('unit')->toArray();
           $data['port'] = Product::where('status',1)->groupBy('port')->pluck('port')->toArray();
           $data['time'] = Product::where('status',1)->groupBy('processing_time')->pluck('processing_time')->toArray();
           $data['supply_ability'] = Product::where('status',1)->groupBy('supply_ability')->pluck('supply_ability')->toArray();
           $data['payment_method'] = Product::where('status',1)->groupBy('payment_method')->pluck('payment_method')->toArray();
           
            $products = Product::where('status',1)->query();
            $data['products'] = $products->paginate(18); 
            return view('frontend.pages.list_products')->with($data);
    }
    
    public function ajax_cat(Request $request) {
        $states = Category::where('parent_id', $request->sub_id)->get();
        $html = '<option value="">'.translate("Select Sub Category").'</option>';
        
        foreach ($states as $state) {
            $html .= '<option value="' . $state->id . '">' . $state->name . '</option>';
        }
        
        echo json_encode($html);
    }
    
    public function ajax_subcat(Request $request) {
        $states = Category::where('parent_id', $request->sub_id)->orderBy('name', 'asc')->get();
        $html = '<option value="">'.translate("Select Child Category").'</option>';
        
        foreach ($states as $state) {
            $html .= '<option value="' . $state->id . '">' . $state->name . '</option>';
        }
        
        echo json_encode($html);
    }
    
    public function country_code(Request $request){
        $country = Country::where('id', $request->id)->first();
        if($country != null){
            return '+'.$country->phonecode;
        } else {
            return '';
        }
    }
    public function index(Request $request,$country = null)
    {
// if (ViewProduct::where('ip_address',$request->getClientIp())->first()) {
//     $like_product_id = ViewProduct::where('ip_address',$request->getClientIp())->orderBy('created_at', 'desc')->first()->product_id;
//     $like_category = Product::find($like_product_id)->category_id;
//     // $data['like_sub_categories'] = Category::where('parent_id', $like_category)->take(4)->get();
//     $data['like_sub_categories'] = Product::where('status',1)->orderBy('view', 'desc')->take(4)->get();
// } else {
//      $like_product_id = ViewProduct::orderBy('view', 'desc')->first()->product_id;
//     $like_category = Product::find($like_product_id)->category_id;
//     // $data['like_sub_categories'] = Category::where('parent_id', $like_category)->take(4)->get();
//     $data['like_sub_categories'] = Product::where('status',1)->orderBy('view', 'desc')->take(4)->get();
// }
  $data['like_sub_categories'] = Product::where('status',1)->orderBy('updated_at', 'desc')->take(4)->get();
        $data['packages']= Package::where('status', 1)->latest()->get();
       
       if(!empty($country)){
           $pcountry = Country::where('iso', $country)->first();
        
           $data['products']= Product::where('status', 1)->where('country_id', $pcountry->id)->take('6')->latest()->get();
        $data['buyoffer']= BuyOffer::where('status', 1)->where('country_id', $pcountry->id)->take('7')->get();
       } else {
         $data['products']= Product::where('status', 1)->take('6')->latest()->get();
         $data['buyoffer']= BuyOffer::where('status', 1)->take('7')->get();  
       }
        
        
        
        $data['banners']= Banner::where('position', 'slider')->latest()->get();
        $data['verified_products'] = FeaturedProduct::where('status', 1)->latest()->get();
      
        $data['verified_category'] = Category::where('parent_id', 0)->take('12')->get();
        $data['tradeshows_group'] = Tradeshows::take('4')->latest()->get()->chunk(3);
        $data['testmonies'] = Testimonial::take('12')->latest()->get();
        $date = today()->format('Y-m-d');     
        $data['verified_seller'] = User::whereNotNull('package_id')->where('expire', '>=', $date)->where('type', 'seller')->take('24')->get();

        $users =  User::where('type','seller')->select('country_id')->get()->toArray(); 
        $country = array();
        foreach($users as $user){
            array_push( $country,$user['country_id']);
        }
        $data['buyers'] =  array_unique($country);


        return view('frontend.pages.index')->with($data);
    }
    
    public function buyers(){
        $data['pages'] = Page::where('slug', 'buyer')->firstOrFail();
        $data['country'] = Country::all();
        $users =  User::where('type','buyer')->select('country_id')->get()->take(8)->toArray(); 
        $country = array();
        foreach($users as $user){
            array_push( $country,$user['country_id']);
        }
        $data['top_banners'] = Banner::where('position','top_buyer_banner')->latest()->get();
        $data['bottom_banners'] = Banner::Where('position','bottom_buyer_banner')->latest()->get();
        
        $data['buyers'] =  array_unique($country);
        $data['buyoffer'] = BuyOffer::latest()->take(20)->get();
        $data['tags'] = Tag::orderBy('views', 'desc')->take(10)->get();
        // $data['tagsbyword'] = Tag::orderBy('views', 'desc')->get();
        $data['tagsbyword'] = Product::where('status',1)->latest()->get();
        // $data['tagsbyword'] = Category::where('parent_id','!=', 0)->get();
        // return $data['tagsbyword'];
       return view('frontend.pages.buyers')->with($data); 
    }
    public function advertiser(){
        
        $data['pages'] = Page::where('slug', 'buyer')->firstOrFail();
        $data['country'] = Country::all();
        $users =  User::where('type','buyer')->select('country_id')->get()->take(8)->toArray(); 
        $country = array();
        foreach($users as $user){
            array_push( $country,$user['country_id']);
        }
        $data['buyers'] =  array_unique($country);
        $data['buyoffer'] = BuyOffer::latest()->take(20)->get();
        $data['tags'] = Tag::orderBy('views', 'desc')->take(10)->get();
        // $data['tagsbyword'] = Tag::orderBy('views', 'desc')->get();
        $data['tagsbyword'] = Product::where('status',1)->latest()->get();
        // $data['tagsbyword'] = Category::where('parent_id','!=', 0)->get();
        // return $data['tagsbyword'];
        $data['banners'] = Banner::where('position','top_buyer_banner')->orWhere('position','bottom_buyer_banner')->latest()->get();
       return view('frontend.pages.advertiser')->with($data); 
    }
    
    public function manufacturers(){
        $data['pages'] = Page::where('slug', 'buyer')->firstOrFail();
        $data['country'] = Country::all();
        $users =  User::select('country_id')->get()->toArray(); 
        $country = array();
        foreach($users as $user){
            array_push( $country,$user['country_id']);
        }
        $data['buyers'] =  array_unique($country);
        $data['buyoffer'] = BuyOffer::latest()->take(20)->get();
        $data['tags'] = Tag::orderBy('views', 'desc')->take(10)->get();
        $data['tagsbyword'] = Product::where('status',1)->latest()->get();
        $data['category'] = Category::where('parent_id', 0)->get();
        
        $data['top_banners'] = Banner::where('position','top_manufacture_banner')->latest()->get();
        $data['bottom_banners'] = Banner::Where('position','bottom_manufacture_banner')->latest()->get();
        
       return view('frontend.pages.manufacturers')->with($data); 
    }
    public function countries(){
        $data['pages'] = Page::where('slug', 'buyer')->firstOrFail();
        $data['country'] = Country::all();
        $data['buyoffer'] = BuyOffer::latest()->take(20)->get();
        $data['tags'] = Tag::orderBy('views', 'desc')->take(10)->get();
        $data['tagsbyword'] = Tag::orderBy('views', 'desc')->get();
        $data['category'] = Category::where('parent_id', 0)->get();
       return view('frontend.pages.countries')->with($data); 
    }
    public function about_us(){
        $data['pages'] = Page::where('slug', 'buyer')->firstOrFail();
        $data['about'] = About::first();
       return view('frontend.pages.about_us')->with($data); 
    }
    
    public function products(){
        $data['pages'] = Page::where('slug', 'products')->firstOrFail();
        $data['category'] = Category::where('parent_id', 0)->get();
         $data['tagsbyword'] = Category::where('parent_id','!=', 0)->get();
         $data['top_banners'] = Banner::where('position','top_product_banner')->latest()->get();
         $data['bottom_banners'] = Banner::Where('position','bottom_product_banner')->latest()->get();
       return view('frontend.pages.products')->with($data); 
    }
    
    public function companies(){
        $data['pages'] = Page::where('slug', 'companies')->firstOrFail();
        $data['seller'] = User::where('type', 'seller')->paginate(12);
        $data['top_banners'] =Banner::where('position','top_company_banner')->latest()->get();
        $data['bottom_banners'] = Banner::Where('position','bottom_company_banner')->latest()->get();
       return view('frontend.pages.companies')->with($data); 
    }
    
    
    public function events($slug){
        $data['product'] = Tradeshows::where('slug', $slug)->firstOrFail();
       return view('frontend.pages.events')->with($data); 
    }
    
     public function alcompanies(Request $request, $a){
        $data['seller'] = User::where('type', 'seller')->whereHas('company', function($q) use($a){
        $q->where('name', 'like',  $a . '%');
        })->paginate(12);
         $data['pages'] = Page::where('slug', 'companies')->firstOrFail();
       return view('frontend.pages.companies')->with($data); 
    }
    
    public function inquery(Request $request, $slug)
    {
        if ($request->isMethod('post')) {
        $receive = Product::where('status',1)->where('slug', $slug)->firstorFail();
        $thread = new Thread();
        $thread->sender_id = Auth::user()->id;
        $thread->receiver_id = $receive->supplier_id;
        $thread->subject = $request->subject;
        $thread->product_id = $receive->id;
         $thread->name = $request->name;
        $thread->email = $request->email;
        $thread->number = $request->phone;
        $thread->country = $request->country_id;
        
        $buy_offer = new BuyOffer();
        $buy_offer->title  = $request->subject;
        $buy_offer->slug  = Str::slug($request->subject);
        $buy_offer->details  = $request->details;
        $buy_offer->country_id  = $request->country_id;
        $buy_offer->buyer_id  =Auth::id();
        $buy_offer->seller_id  = $receive->supplier_id;
        $buy_offer->product_id  = $receive->id;
        $buy_offer->ip  = visitorip();
        $buy_offer->date  = Carbon::now();
        $buy_offer->category_id  = $receive->category->id;
        $buy_offer->created_at  = Carbon::now();
        $buy_offer->save();
        
        if($thread->save()){
              Toastr::success('Succesfully Message Sent', '', ['progressBar' => true, 'closeButton' => true, 'positionClass' => 'toast-top-right']);
              return redirect()->back(); 
        }
        }
        
        $data['product'] = Product::where('status',1)->where('slug', $slug)->firstorFail();
        if($request->filled('bid')){
            $data['title'] = $data['company']->title;
        } else {
            $data['title'] = '';
        }
        return view('frontend.pages.inquery')->with($data);
    }
    public function inquery_contact(Request $request, $username)
    {
        
        if ($request->isMethod('post')) {
        $receive = User::where('username',$username)->firstOrFail();
        $thread = new Thread();
        $thread->sender_id = Auth::user()->id;
        $thread->receiver_id = $receive->id;
        $thread->subject = $request->subject;
         $thread->name = $request->name;
        $thread->email = $request->email;
        $thread->number = $request->phone;
        $thread->country = $request->country_id;
        
        $buy_offer = new BuyOffer();
        $buy_offer->title  = $request->subject;
        $buy_offer->slug  = Str::slug($request->subject);
        $buy_offer->details  = $request->details;
        $buy_offer->country_id  = $request->country_id;
        $buy_offer->buyer_id  =Auth::id();
        $buy_offer->seller_id  = $receive->id;
        $buy_offer->ip  = visitorip();
        $buy_offer->date  = Carbon::now();
        $buy_offer->category_id  = $receive->category_id;
        $buy_offer->created_at  = Carbon::now();
        $buy_offer->save();
        
        if($thread->save()){
              Toastr::success('Succesfully Message Sent', '', ['progressBar' => true, 'closeButton' => true, 'positionClass' => 'toast-top-right']);
              return redirect()->back(); 
        }
        }
        $data['user'] = User::where('username',$username)->firstOrFail();
        if($request->filled('bid')){
            $data['title'] = $data['company']->title;
        } else {
            $data['title'] = '';
        }
        return view('frontend.pages.inquery_contact')->with($data);
    }
    
    public function contact(Request $request, $id)
    {
        
          $buy_offer =  BuyOffer::where('seller_id',Auth::id())->where('id',$id)->firstOrFail();
          
       if ($request->isMethod('post')) {
           $request->validate([
               'subject' => 'required | max:255',
               'details' => 'required | max:1024',
               ]);
               
              $quote_message = new QuoteMessage();
              $quote_message->buy_offer_id = $buy_offer->id;
              $quote_message->sender_id =Auth::id();
              $quote_message->receiver_id = $buy_offer->buyer_id;
              $quote_message->message = $request->details;
              $quote_message->subject = $request->subject;
              $quote_message->save();
              
              
               if($buy_offer->buyer_id != null){
                   $user = User::find($buy_offer->buyer_id);
                   $email = $user->email;
               }
               if($buy_offer->rfq_id != null){
                   $user = Thread::find($buy_offer->rfq_id);
                   $email = $user->email;
               }
              $buy_offer->other_info = $user;
              $buy_offer->new_subject = $request->subject;
              $buy_offer->new_details = $request->details;
              
         Mail::to($email)->send(new \App\Mail\BuyOffer($buy_offer));
        //  Mail::to($email)->send(new \App\Mail\BuyOffer($buy_offer));
       
       
            
            
            Toastr::success('Quote Sent Succesfully !!', '', ['progressBar' => true, 'closeButton' => true, 'positionClass' => 'toast-top-right']);
              return redirect()->back(); 
    
        }
        
        $data['company'] = User::findOrFail($buy_offer->buyer_id);
            $data['buy_offer'] = $buy_offer;
        return view('frontend.pages.query')->with($data);
    }
    
    
    public function register(Request $request)
    {
        
        if(User::where('email', $request->email)->first() != null){
             Toastr::error('Email Already Exists', '', ['progressBar' => true, 'closeButton' => true, 'positionClass' => 'toast-top-right']);
              return redirect()->back();
        }
        if(User::where('username', $request->username)->first() != null){
             Toastr::error('Username Already Exists', '', ['progressBar' => true, 'closeButton' => true, 'positionClass' => 'toast-top-right']);
              return redirect()->back();
        }
        
        $this->validate($request, [
            'name' => 'required',
            'email' => 'required',
            'password' => 'required',
            'category_id' => 'required',
            'username' => 'required',
            'type' => 'required',
            'country_id' => 'required',
            'company' => 'required',
            'g-recaptcha-response' => 'required',
        ]);
        $password = rand(10,100).$request->password;
        $user = new User();
        $user->name = $request->name;
        $user->email = $request->email;
        $user->category_id = $request->category_id;
        $user->username = $request->username;
        $user->type = $request->type;
        $user->image = 'image.jpg';
        $user->password = bcrypt($password);
        $user->country_id = $request->country_id;
        $user->package_id = 1;
        $user->next_pay = date('Y-m-d',strtotime("+25000 days"));
        if($user->save()){
            $user->password = $password;
            $company = new Company();
            $company->user_id = $user->id;
            $company->name = $request->company;
            $company->image = 'image.jpg';
            $company->phone = $request->phone;
            if($company->save()){
                Mail::to($request->email)->send(new \App\Mail\RegistrationComfirm($user));
                 if($request->admin_user_create){
                         Toastr::success('Registration Successfull');
                      return back();
                    }

                // Auth::loginUsingId($user->id);
                Toastr::success('Registration Successfull Please Check Your Email !! For Login', '', ['progressBar' => true, 'closeButton' => true, 'positionClass' => 'toast-top-right']);
              return view('thankyou');
            }
        }
    }
    public function list_tag($tag){
        $slug  = Tag::where('slug',$tag)->first();
        $data['tags'] = Tag::latest()->get();
        $data['slug'] = $tag;
        $data['products'] = Product::where('status',1)->where(function ($query) use ($slug) {
            $query->orWhere('tags','LIKE', "%$slug->name%");
        })->latest()->get();
        return view('frontend.pages.tage_product')->with($data); 
    }
    
 
    public function categories(Request $request,$slug)
    {
      
        $data['cat'] =  Category::where('slug', $slug)->first();
        if($data['cat']->parent_id == 0){
            $data['categories'] = Category::where('parent_id', $data['cat']->id)->get();
            $tree = Category::where('parent_id', $data['cat']->id)->pluck('id')->toArray();
            $ptree = Category::whereIn('sub_id', $tree)->pluck('id')->toArray();
            $data['tree'] = $tree;
            $data['buyoffer'] = BuyOffer::whereIn('category_id', $tree)->orWhere('category_id', $data['cat']->id)->take(30)->get();
            $data['products'] = Product::where('status',1)->whereIn('category_id', array_merge($tree,$ptree))->take(12)->get();
            $data['tags'] = Tag::whereIn('category_id', $tree)->orWhere('category_id', $data['cat']->id)->orderBy('views', 'desc')->take(20)->get();
            
            $data['top_banners'] = Banner::where('position','top_category_banner')->where('category_id',$data['cat']->id)->latest()->get();
            $data['bottom_banners'] = Banner::Where('position','bottom_category_banner')->where('category_id',$data['cat']->id)->latest()->get();
            
        return view('frontend.pages.main_categories')->with($data);
        } else {
           $subcat = Category::where('parent_id', $data['cat']->id)->pluck('id')->toArray();
           $childcat = Category::whereIn('parent_id', $subcat)->pluck('id')->toArray();
           $catid[] = $data['cat']->id;
           $catlist = array_merge($subcat,$childcat,$catid);
           $data['catlist'] = $catlist;
           
           $data['countries'] = Product::whereIn('category_id', $catlist)->groupBy('country_id')->pluck('country_id')->toArray();
           $data['port'] = Product::whereIn('category_id', $catlist)->groupBy('port')->pluck('port')->toArray();
           $data['suppliers'] = Product::whereIn('category_id', $catlist)->groupBy('supplier_id')->pluck('supplier_id')->toArray();
           $data['unit'] = Product::whereIn('category_id', $catlist)->groupBy('unit')->pluck('unit')->toArray();
           $data['port'] = Product::whereIn('category_id', $catlist)->groupBy('port')->pluck('port')->toArray();
           $data['time'] = Product::whereIn('category_id', $catlist)->groupBy('processing_time')->pluck('processing_time')->toArray();
           $data['supply_ability'] = Product::whereIn('category_id', $catlist)->groupBy('supply_ability')->pluck('supply_ability')->toArray();
           $data['payment_methods'] = Product::whereIn('category_id', $catlist)->groupBy('payment_method')->pluck('payment_method')->toArray();
           
           
           
           
           $products = Product::where('status',1)->whereIn('category_id', $catlist);
           
           if ($request->filled('supplier_id')) {
                $products = $products->where('supplier_id', $request->supplier_id);
            }
           if ($request->filled('country_id')) {
                $products = $products->where('country_id', $request->country_id);
            }
           if ($request->filled('ptime')) {
                $products = $products->where('processing_time', $request->ptime);
            }
           
           if ($request->filled('port')) {
                $products = $products->where('port', $request->port);
            }
            if ($request->filled('unit')) {
                $products = $products->where('unit', $request->unit);
            }
            if ($request->filled('material')) {
                $products = $products->where('material', $request->material);
            }
            if ($request->filled('processing_time')) {
                $products = $products->where('processing_time', $request->material);
            }
            if ($request->filled('port')) {
                $products = $products->where('port', $request->material);
            }
            if ($request->filled('supply_ability')) {
                $products = $products->where('supply_ability', $request->supply_ability);
            }
            if ($request->filled('unit')) {
                $products = $products->where('unit', $request->unit);
            }
            if ($request->filled('payment_method')) {
                $products = $products->where('payment_method','like', '%' . $request->payment_method . '%' );
            }
           $data['products'] = $products->where('status', 1)->paginate(18);
            
           return view('frontend.pages.list_products')->with($data);
        }
    }
    
    
    public function search(Request $request)
    {
     if($request->filled('type') || $request->filled('s')){
        if($request->type == 'product'){
          $products = Product::where('status',1)->where('title', 'like', '%' . $request->s . '%')->orWhereJsonContains("tags", $request->s);
          
           if ($request->filled('supplier_id')) {
                $products = $products->where('supplier_id', $request->supplier_id);
            }
           if ($request->filled('country_id')) {
                $products = $products->where('country_id', $request->country_id);
            }
           if ($request->filled('ptime')) {
                $products = $products->where('processing_time', $request->ptime);
            }
           
           if ($request->filled('port')) {
                $products = $products->where('port', $request->port);
            }
            if ($request->filled('unit')) {
                $products = $products->where('unit', $request->unit);
            }
           $data['products'] = $products->paginate(18);
          
          
          $country = Product::where('status',1)->where('title', 'like', '%' . $request->s . '%')->orWhereJsonContains("tags", $request->s)->pluck('country_id')->toArray();
          $supplier = Product::where('status',1)->where('title', 'like', '%' . $request->s . '%')->orWhereJsonContains("tags", $request->s)->pluck('supplier_id')->toArray();
          $data['countries'] = Country::whereIn('id', $country)->get();
          $data['suppliers'] = Company::whereIn('user_id', $supplier)->get();
          $data['time'] = Product::where('status',1)->where('title', 'like', '%' . $request->s . '%')->orWhereJsonContains("tags", $request->s)->groupBy('processing_time')->pluck('processing_time')->toArray();
          $data['port'] = Product::where('status',1)->where('title', 'like', '%' . $request->s . '%')->orWhereJsonContains("tags", $request->s)->groupBy('port')->pluck('port')->toArray();
          $data['supply_ability'] = Product::where('status',1)->where('title', 'like', '%' . $request->s . '%')->orWhereJsonContains("tags", $request->s)->groupBy('supply_ability')->pluck('supply_ability')->toArray();
          $data['payment_method'] = Product::where('status',1)->where('title', 'like', '%' . $request->s . '%')->orWhereJsonContains("tags", $request->s)->groupBy('payment_method')->pluck('payment_method')->toArray();
            
          
          
          
           return view('frontend.pages.result_products')->with($data);
        } elseif($request->type == 'seller'){
           $company = Company::where('name', 'like', '%' . $request->s . '%')->orWhere('main_products', 'like', '%' . $request->s . '%');
                if ($request->filled('country_id')) {
                $company = $company->whereHas('user', function($q){
                $q->where('country_id', $request->country_id);
                });
            }
           
            $data['countries'] = Country::take(10)->get();
           $data['seller'] = $company->paginate(18); 
           return view('frontend.pages.result_company')->with($data);
        } else {
            $data['countries'] = Country::take(10)->get();
             $offer = BuyOffer::where('title', 'like', '%' . $request->s . '%')->orWhere(function($query) use($request){
        
            $query->whereJsonContains("tags", $request->s);
        });
        if ($request->filled('country_id')) {
                $offer = $offer->where('country_id', $request->country_id);
        }
        $data['offers'] = $offer->paginate(18);
           return view('frontend.pages.result_buyer')->with($data);
        }
         
     } else {
        abort(404); 
     }  
    }

    public function cronJobs(){
        $bannter = Banner::where('position','slider')->get();
        
        foreach($bannter as $bann){
            $bann->update([
                'isActive' => 0,
            ]);
        }
        $bnr = Banner::where('position','slider')->inRandomOrder()->first();
        $bnr->update([
            'isActive' => 1,
        ]);
        return response()->json([
            'message' => 'Success'
        ]);
   } 
    public function cronJobsfeature(){
        $products =FeaturedProduct::where('status', 1)->limit('16')->get();
        
        foreach($products as $product){
            $product->update([
                'isActive' => 0,
            ]);
        }
        $bnr =   $products =FeaturedProduct::inRandomOrder()->where('status', 1)->limit('12')->get();
        
        foreach($products as $product){
            $product->update([
                'isActive' => 1,
            ]);
        };
        return response()->json([
            'message' => 'Success'
        ]);
   } 
   public function advertiser_buy(Request $request, $slug){
    //   $request->validate([
    //       'check_status' => 'required',
    //       'g-recaptcha-response' => 'required',
    //       'check_status' => 'required',
    //   ]);
    
       $amount = 0;
       $advertiser_Order = new  AdvertiserOrder();
        if(!settings()->$slug){
              Toastr::success('Succesfully Message Sent', '', ['progressBar' => true, 'closeButton' => true, 'positionClass' => 'toast-top-right']);
              return back(); 
        }
        
        if($slug == 'category_banner'){
           $advertiser_Order->category_id = $request->category_id;
        }
           $discount_name = $slug.'_discount';
           $amount =  settings()->$slug * $request->duration;
           $discount_price = $amount /100* number_format(settings()->$discount_name);
           $main_price_usd = $amount - $discount_price;
           $amount = $amount - $discount_price;
           
        if($request->currency == 'BDT'){
                $currency = 'bdt';
                $amount = $amount * settings()->bdt_rate;
            }
            
          $advertiser_Order->currency = 'bdt';
          $advertiser_Order->advertiser_name = $slug;
         $advertiser_Order->user_id = Auth::id();
         $advertiser_Order->duration = $request->duration;
         $advertiser_Order->amount = $main_price_usd;
         $order_id = $advertiser_Order->category_id.rand(99999,9999);
         $advertiser_Order->order_id = $order_id;
         $advertiser_Order->save();
         
         $data['advertiser'] = $advertiser_Order;
         session(['advertiser' => $advertiser_Order->id]);
        $info = array(
                'currency' => 'bdt',
                'amount' =>$amount ,
                'order_id' => $order_id, 
                'discsount_amount' => 0,
                'disc_percent' => 0,
                'client_ip' => "N/L",
                'customer_name' => Auth::user()->name,
                'customer_phone' => ((Auth::user()->company->phone)? Auth::user()->company->phone:'+0170000000'),
                'email' => Auth::user()->email,
                'customer_address' => (Auth::user()->address? Auth::user()->address:'N\L'),
                'customer_city' => "N/L",
                'customer_state' => "N/L",
                'customer_postcode' => "N/L",
                'customer_country' => Auth::user()->country->name
            );
            Mail::to('tradevalyb2b@gmail.com')->send(new \App\Mail\AdvertiserPurchase($advertiser_Order));
            session(['order_id' => $advertiser_Order->id]);

$shurjopay_service = new ShurjopayController(); return $shurjopay_service->checkout($info);
        
   }
   
    public function related_seller_list(){
        if(Auth::user()->type != 'buyer'  || Auth::user()->verified != 1){
            return abort(404);
        }
        $data['pages'] = Page::where('slug', 'companies')->firstOrFail();
        $data['seller'] = User::where('type', 'seller')->where('category_id',Auth::user()->category_id)->paginate(12);
        $data['top_banners'] =Banner::where('position','top_company_banner')->latest()->get();
        $data['bottom_banners'] = Banner::Where('position','bottom_company_banner')->latest()->get();
       return view('frontend.pages.companies')->with($data); 
    }
    
     public function related_buyer_list(){
         if(Auth::user()->type != 'seller'  || Auth::user()->verified != 1){
            return abort(404);
        }
        $data['pages'] = Page::where('slug', 'companies')->firstOrFail();
        $data['seller'] = User::where('type', 'buyer')->where('category_id',Auth::user()->category_id)->paginate(12);
       return view('frontend.pages.related_buyer_list')->with($data); 
    }
    public function advertiser_buy_preview(Request $request,$slug){
       
        $discount_name = $slug.'_discount';
       $data['duration'] = $request->duration;
       $data['link'] = $request->link;
       $data['amount'] = settings()->$slug;
       $data['slug'] = $slug;
       $data['discount'] = settings()->$discount_name;
        $data['pages'] = Page::where('slug', 'apply')->firstOrFail();
        return view('frontend.pages.advertiser_buy_view')->with($data);
    }
    
}