JFIF  x x C         C     "        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz        w !1AQ aq"2B #3Rbr{ gilour

File "HomeController.php"

Full Path: /var/www/laravel_filter/app/Http/Controllers/HomeController.php
File size: 25.5 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace App\Http\Controllers;

use App\Models\User;
use App\Models\Order;
use App\Models\Review;
use App\Rules\Captcha;
use GuzzleHttp\Client;
use App\Models\Setting;
use App\Events\TestEvent;
use App\Models\SeoSetting;
use App\Helpers\MailHelper;
use Illuminate\Http\Request;
use App\Models\EmailTemplate;
use App\Models\MultiCurrency;
use App\Models\ContactMessage;
use Modules\Page\Entities\Faq;
use Modules\Blog\Entities\Blog;
use App\Mail\SendContactMessage;
use App\Models\CustomPagination;
use App\Models\EmailConfiguration;
use MercadoPago\MercadoPagoConfig;
use Modules\Page\Entities\AboutUs;
use App\Models\AppointmentSchedule;
use Illuminate\Support\Facades\Log;
use Modules\Page\Entities\HomePage;
use Modules\Page\Entities\ContactUs;
use Modules\Page\Entities\CustomPage;
use Modules\Section\Entities\Partner;
use Modules\Service\Entities\Service;
use Modules\Blog\Entities\BlogComment;
use Modules\Service\Entities\Category;
use Modules\Blog\Entities\BlogCategory;
use Modules\Language\Entities\Language;
use Modules\Section\Entities\SliderOne;

use Modules\Page\Entities\PrivacyPolicy;
use Modules\Section\Entities\OurFeature;
use Modules\Section\Entities\Testimonial;

use Modules\Section\Entities\WhyChooseUs;
use MercadoPago\Exceptions\MPApiException;
use Str, Mail, Hash, Auth, Session,Config;


require_once 'vendor/autoload.php';

use Modules\Page\Entities\TermAndCondition;
use MercadoPago\Client\Common\RequestOptions;
use MercadoPago\Client\Payment\PaymentClient;
use Modules\Section\Entities\WorkingProccess;


use Modules\Service\Entities\AdditionalService;
use MercadoPago\Client\Preference\PreferenceClient;


class HomeController extends Controller
{
    public function index(Request $request){


        // $client = new Client([
        //     'base_uri' => 'https://graph.facebook.com/v12.0/',
        // ]);

        // $accessToken ='EAAMflpyVSukBO2UXKt0miswi4ZAVXyrQl0ptrbTcCgxnP6GyQgeZBk296CanBUTkp30XAxyXCR9W5Eqz8x94ecTZA0GCEJlJ6JJtPtZBR2X6yaPxxRTpxkFADYUrC8u6aUZA8YcLHZAuX15pRdJeexK6ixnl4a343jomLXZApg0WZC3TyZCAs2TsKvS1N8yQ8K5ZBKUt41Hv7ZC14PW9jeG190wxDPGYRZCPVDTk';

        // $pageId = 'QuomodoSoft';
        // try {
        //     $response = $client->request('GET', "{$pageId}", [
        //         'query' => [
        //             'fields' => 'followers_count',
        //             'access_token' => $accessToken
        //         ]
        //     ]);

        //     $data = json_decode($response->getBody(), true);

        //     return response()->json(['followers' => $data['followers_count'] ?? 0]);

        // } catch (\Exception $e) {
        //     return response()->json(['error' => $e->getMessage()], 500);
        // }




        $setting = Setting::select('selected_theme')->first();
        if($setting->selected_theme == 'all_theme'){
            if($request->has('theme')){
                $theme = $request->theme;
                if($theme == 'one'){
                    Session::put('selected_theme', 'theme_one');
                }elseif($theme == 'two'){
                    Session::put('selected_theme', 'theme_two');
                }elseif($theme == 'three'){
                    Session::put('selected_theme', 'theme_three');
                }else{
                    if(!Session::has('selected_theme')){
                        Session::put('selected_theme', 'theme_one');
                    }
                }
            }else{
                Session::put('selected_theme', 'theme_one');
            }
        }else{
            if($setting->selected_theme == 'theme_one'){
                Session::put('selected_theme', 'theme_one');
            }elseif($setting->selected_theme == 'theme_two'){
                Session::put('selected_theme', 'theme_two');
            }elseif($setting->selected_theme == 'theme_three'){
                Session::put('selected_theme', 'theme_three');
            }
        }

        $seo_setting = SeoSetting::where('id', 1)->first();

        $slider = SliderOne::first();

        $our_feature = OurFeature::first();

        $working_proccess = WorkingProccess::first();

        $partners = Partner::all();

        $blogs = Blog::with('author')->where('show_homepage', 'yes')->orderBy('id','desc')->get();

        $featured_services = Service::with('category','influencer')->where(['status' => 'active', 'approve_by_admin' => 'enable', 'is_banned' => 'disable'])->orderBy('id','desc')->get()->take(8);

        $categories = Category::where('status', 'active')->get();

        $why_choose_us = WhyChooseUs::first();

        $testimonials = Testimonial::orderBy('id','desc')->get();

        $faqs = Faq::orderBy('id','desc')->get();

        $selected_theme = Session::get('selected_theme');

        $influencers = User::where(['status' => 'enable' , 'is_banned' => 'no', 'is_influencer' => 'yes'])->where('email_verified_at', '!=', null)->orderBy('id','desc')->select('id','name','username','designation','total_follower','total_following','image','status','is_banned','is_influencer', 'facebook', 'facebook_follower', 'youtube' , 'youtube_follower', 'instagram', 'instagram_follower', 'tiktok', 'tiktok_follower')->get()->take(8);

        if ($selected_theme == 'theme_one'){
            return view('index')->with([
                'seo_setting' => $seo_setting,
                'slider' => $slider,
                'our_feature' => $our_feature,
                'influencers' => $influencers,
                'featured_services' => $featured_services,
                'working_proccess' => $working_proccess,
                'partners' => $partners,
                'faqs' => $faqs,
                'blogs' => $blogs,
            ]);
        }elseif($selected_theme == 'theme_two'){
            return view('index2')->with([
                'seo_setting' => $seo_setting,
                'slider' => $slider,
                'categories' => $categories,
                'our_feature' => $our_feature,
                'influencers' => $influencers,
                'featured_services' => $featured_services,
                'working_proccess' => $working_proccess,
                'why_choose_us' => $why_choose_us,
                'testimonials' => $testimonials,
                'partners' => $partners,
                'faqs' => $faqs,
                'blogs' => $blogs,
            ]);
        }elseif($selected_theme == 'theme_three'){
            return view('index3')->with([
                'seo_setting' => $seo_setting,
                'slider' => $slider,
                'categories' => $categories,
                'our_feature' => $our_feature,
                'influencers' => $influencers,
                'featured_services' => $featured_services,
                'working_proccess' => $working_proccess,
                'why_choose_us' => $why_choose_us,
                'testimonials' => $testimonials,
                'partners' => $partners,
                'faqs' => $faqs,
                'blogs' => $blogs,
            ]);
        }else{
            return view('index')->with([
                'seo_setting' => $seo_setting,
                'slider' => $slider,
                'categories' => $categories,
                'our_feature' => $our_feature,
                'influencers' => $influencers,
                'featured_services' => $featured_services,
                'working_proccess' => $working_proccess,
                'why_choose_us' => $why_choose_us,
                'testimonials' => $testimonials,
                'partners' => $partners,
                'faqs' => $faqs,
                'blogs' => $blogs,
            ]);
        }

    }


    public function about_us(){
        $seo_setting = SeoSetting::where('id', 3)->first();

        $our_feature = OurFeature::first();

        $about_us = AboutUs::first();

        $working_proccess = WorkingProccess::first();

        $partners = Partner::all();

        $testimonials = Testimonial::where('status', 'enable')->orderBy('id','desc')->get();

        return view('about_us')->with([
            'seo_setting' => $seo_setting,
            'our_feature' => $our_feature,
            'about_us' => $about_us,
            'working_proccess' => $working_proccess,
            'partners' => $partners,
            'testimonials' => $testimonials,
        ]);
    }


    public function contact_us(){
        $seo_setting = SeoSetting::where('id', 4)->first();

        $contact_us = ContactUs::first();

        return view('contact_us')->with([
            'seo_setting' => $seo_setting,
            'contact_us' => $contact_us,
        ]);
    }

    public function store_contact_message(Request $request){
        $rules = [
            'name'=>'required',
            'email'=>'required',
            'subject'=>'required',
            'message'=>'required',
            'g-recaptcha-response'=>new Captcha()
        ];
        $customMessages = [
            'name.required' => trans('admin_validation.Name is required'),
            'email.required' => trans('admin_validation.Email is required'),
            'subject.required' => trans('admin_validation.Subject is required'),
            'message.required' => trans('admin_validation.Message is required')
        ];
        $this->validate($request, $rules,$customMessages);

        $setting = Setting::first();

        if( $setting->save_contact_message == 'enable'){
            $contact_message = new ContactMessage();
            $contact_message->name = $request->name;
            $contact_message->email = $request->email;
            $contact_message->phone = $request->phone;
            $contact_message->subject = $request->subject;
            $contact_message->message = $request->message;
            $contact_message->save();
        }

        if($setting->send_contact_message == 'enable'){

            MailHelper::setMailConfig();

            $template = EmailTemplate::find(2);
            $message = $template->description;
            $subject = $template->subject;
            $message = str_replace('{{name}}',$request->name,$message);
            $message = str_replace('{{email}}',$request->email,$message);
            $message = str_replace('{{phone}}',$request->phone,$message);
            $message = str_replace('{{subject}}',$request->subject,$message);
            $message = str_replace('{{message}}',$request->message,$message);

            Mail::to($setting->contact_message_mail)->send(new SendContactMessage($message,$subject, $request->email, $request->name));

        }

        $notification= trans('admin_validation.Your message has send successfully');
        $notification=array('messege'=>$notification,'alert-type'=>'success');
        return redirect()->back()->with($notification);

    }

    public function blogs(Request $request){

        $seo_setting = SeoSetting::where('id', 2)->first();

        $paginate_info = CustomPagination::where('id', 1)->first();

        $blogs = Blog::with('author')->orderBy('id','desc')->where('status', 1);

        if($request->category){
            $blog_category = BlogCategory::where('slug', $request->category)->first();
            $blogs = $blogs->where('blog_category_id', $blog_category->id);
        }

        if($request->search){
            $blogs = $blogs->whereHas('translations', function ($query) use ($request) {
                            $query->where('title', 'like', '%' . $request->search . '%')
                                ->orWhere('description', 'like', '%' . $request->search . '%');
                        })
                        ->orWhere(function ($query) use ($request) {
                            $query->whereJsonContains('tags', ['value' => $request->search]);
                        });
        }

        $blogs = $blogs->paginate($paginate_info->qty);

        $popular_blogs = Blog::where('is_popular', 'yes')->where('status', 1)->orderBy('id','desc')->get();

        $categories = BlogCategory::where('status', 1)->get();

        return view('blog')->with([
            'seo_setting' => $seo_setting,
            'blogs' => $blogs,
            'popular_blogs' => $popular_blogs,
            'categories' => $categories,
        ]);
    }

    public function blog_show(Request $request, $slug){
        $blog = Blog::where('status', 1)->where(['slug' => $slug])->first();

        $blog_comments = BlogComment::orderBy('id','desc')->where('blog_id', $blog->id)->where('status', 1)->get();

        $popular_blogs = Blog::where('is_popular', 'yes')->where('status', 1)->orderBy('id','desc')->get();

        $categories = BlogCategory::where('status', 1)->get();

        return view('blog_show')->with([
            'blog' => $blog,
            'blog_comments' => $blog_comments,
            'popular_blogs' => $popular_blogs,
            'categories' => $categories,
        ]);
    }

    public function store_comment(Request $request){
        $rules = [
            'blog_id'=>'required',
            'name'=>'required',
            'email'=>'required',
            'comment'=>'required',
            'g-recaptcha-response'=>new Captcha()
        ];
        $customMessages = [
            'name.required' => trans('admin_validation.Name is required'),
            'email.required' => trans('admin_validation.Email is required'),
            'comment.required' => trans('admin_validation.Comment is required')
        ];
        $this->validate($request, $rules,$customMessages);

        $blog_comment = new BlogComment();
        $blog_comment->blog_id = $request->blog_id;
        $blog_comment->name = $request->name;
        $blog_comment->email = $request->email;
        $blog_comment->comment = $request->comment;
        $blog_comment->save();

        $notification= trans('admin_validation.Blog comment has submited');
        $notification=array('messege'=>$notification,'alert-type'=>'success');
        return redirect()->back()->with($notification);
    }

    public function faq(){
        $seo_setting = SeoSetting::where('id', 5)->first();

        $faqs = Faq::get();

        $testimonials = Testimonial::where('status', 'enable')->orderBy('id','desc')->get();

        return view('faq')->with([
            'seo_setting' => $seo_setting,
            'faqs' => $faqs,
            'testimonials' => $testimonials,
        ]);
    }

    public function terms_conditions(){
        $seo_setting = SeoSetting::where('id', 6)->first();

        $terms_conditions = TermAndCondition::where('lang_code', Session::get('front_lang'))->first();

        return view('terms_conditions')->with([
            'seo_setting' => $seo_setting,
            'terms_conditions' => $terms_conditions,
        ]);
    }

    public function privacy_policy(){
        $seo_setting = SeoSetting::where('id', 7)->first();

        $privacy_policy = PrivacyPolicy::where('lang_code', Session::get('front_lang'))->first();

        return view('privacy_policy')->with([
            'seo_setting' => $seo_setting,
            'privacy_policy' => $privacy_policy,
        ]);
    }

    public function custom_page($slug){

        $custom_page = CustomPage::where('slug', $slug)->first();

        return view('custom_page')->with([
            'custom_page' => $custom_page,
        ]);
    }

    public function services(Request $request){

        $seo_setting = SeoSetting::where('id', 8)->first();

        $paginate_info = CustomPagination::where('id', 2)->first();

        $services = Service::with('category','influencer')->where(['status' => 'active', 'approve_by_admin' => 'enable', 'is_banned' => 'disable']);

        if($request->categories){
            $filter_category = array();

            foreach($request->categories as $req_category){
                $find_cat = Category::where('slug', $req_category)->first();
                if($find_cat){
                    $filter_category[] = $find_cat->id;
                }
            }

            $services = $services->whereIn('category_id', $filter_category);
        }

        if($request->min_amount && $request->max_amount){
            $services = $services->where('price', '>=', $request->min_amount)->where('price', '<=', $request->max_amount);
        }

        if($request->search){
            $services = $services->whereHas('translations', function ($query) use ($request) {
                            $query->where('title', 'like', '%' . $request->search . '%')
                                ->orWhere('description', 'like', '%' . $request->search . '%');
                        })
                        ->orWhere(function ($query) use ($request) {
                            $query->whereJsonContains('tags', ['value' => $request->search]);
                        });
        }



        $services = $services->orderBy('id','desc')->paginate($paginate_info->qty);

        $categories = Category::where('status', 'active')->get();

        $max_amount = Service::orderBy('price', 'desc')->first();

        $max_amount = $max_amount ? $max_amount->price : 0;
        $req_max_amount = $request->max_amount ? $request->max_amount : $max_amount;
        $req_min_amount =  $request->min_amount ? $request->min_amount : 0;

        return view('service')->with([
            'seo_setting' => $seo_setting,
            'services' => $services,
            'categories' => $categories,
            'max_amount' => $max_amount,
            'req_max_amount' => $req_max_amount,
            'req_min_amount' => $req_min_amount,
        ]);
    }


    public function service_show($slug){
        $service = Service::with('category','influencer')->where(['status' => 'active', 'approve_by_admin' => 'enable', 'is_banned' => 'disable', 'slug' => $slug])->first();

        if(!$service)abort(404);

        $related_services = Service::with('category','influencer')->where(['status' => 'active', 'approve_by_admin' => 'enable', 'is_banned' => 'disable', 'category_id' => $service->category_id])->where('id' , '!=', $service->id)->get()->take(10);

        $service_author = User::where(['status' => 'enable' , 'is_banned' => 'no', 'is_influencer' => 'yes'])->where('email_verified_at', '!=', null)->orderBy('id','desc')->select('id','name','username','designation','total_follower','total_following','image','status','is_banned','is_influencer', 'facebook', 'facebook_follower', 'youtube' , 'youtube_follower', 'instagram', 'instagram_follower', 'tiktok', 'tiktok_follower')->where('id', $service->influencer_id)->first();

        if(!$service_author)abort(404);

        $days = array(
            'Sunday',
            'Monday',
            'Tuesday',
            'Wednesday',
            'Thursday',
            'Friday',
            'Saturday'
        );

        $schedule_list = array();

        foreach($days as $day_item){
            $schedule_item = AppointmentSchedule::where('user_id', $service->influencer_id)->where('service_id', $service->id)->where('day', $day_item)->orderBy('start_time','asc')->first();

            if($schedule_item){
                $start_time = strtoupper(date('h:i A', strtotime($schedule_item->start_time)));

                $schedule_item = AppointmentSchedule::where('user_id', $service->influencer_id)->where('service_id', $service->id)->where('day', $day_item)->orderBy('end_time','desc')->first();
                $end_time = strtoupper(date('h:i A', strtotime($schedule_item->end_time)));

                $schedule = array(
                    'day' => $day_item,
                    'start_time' => $start_time,
                    'end_time' => $end_time
                );

                $schedule_list[] = $schedule;
            }
        }

        $reviews = Review::with('user')->orderBy('id','desc')->where('status', 1)->where('service_id', $service->id)->paginate(10);

        return view('service_show')->with([
            'service' => $service,
            'service_author' => $service_author,
            'schedule_list' => $schedule_list,
            'related_services' => $related_services,
            'reviews' => $reviews,

        ]);

    }

    public function influencers(Request $request){

        $seo_setting = SeoSetting::where('id', 9)->first();

        $paginate_info = CustomPagination::where('id', 3)->first();

        $influencers = User::where(['status' => 'enable' , 'is_banned' => 'no', 'is_influencer' => 'yes'])->where('email_verified_at', '!=', null)->orderBy('id','desc')->select('id','name','username','designation','total_follower','total_following','image','status','is_banned','is_influencer', 'facebook', 'facebook_follower', 'youtube' , 'youtube_follower', 'instagram', 'instagram_follower', 'tiktok', 'tiktok_follower')->paginate($paginate_info->qty);

        return view('influencers')->with([
            'seo_setting' => $seo_setting,
            'influencers' => $influencers,

        ]);

    }


    public function influencer(Request $request, $username){

        $influencer = User::where(['status' => 'enable' , 'is_banned' => 'no', 'is_influencer' => 'yes'])->where('email_verified_at', '!=', null)->orderBy('id','desc')->select('id','name','username','designation','total_follower','total_following','image','status','is_banned','is_influencer','tags','created_at','about_me','varsity_name','varsity_year','school_name','school_year','phone','email','address','facebook', 'facebook_follower', 'youtube' , 'youtube_follower', 'instagram', 'instagram_follower', 'tiktok', 'tiktok_follower', 'tags')->where('username', $username)->first();

        if(!$influencer) abort(404);

        $services = Service::with('category','influencer')->where(['status' => 'active', 'approve_by_admin' => 'enable', 'is_banned' => 'disable'])->where('influencer_id', $influencer->id)->orderBy('id','desc')->get();

        $total_review = Review::where('status', 1)->where('influencer_id', $influencer->id)->count();

        $total_pending = Order::where('order_status','awaiting_for_influencer_approval')->where('influencer_id', $influencer->id)->count();

        $active_booking = Order::where('order_status','approved_by_influencer')->where('influencer_id', $influencer->id)->count();

        $complete_booking = Order::where('order_status','complete')->where('influencer_id', $influencer->id)->count();

        $cancel_booking = Order::where('influencer_id', $influencer->id)->where('order_status','order_decliened_by_influencer')->orWhere('order_status', 'order_decliened_by_client')->count();

        return view('influencer')->with([
            'influencer' => $influencer,
            'services' => $services,
            'total_review' => $total_review,
            'active_booking' => $active_booking,
            'total_pending' => $total_pending,
            'cancel_booking' => $cancel_booking,
            'complete_booking' => $complete_booking,

        ]);
    }

    public function download_file($file){
        $filepath= public_path() . "/uploads/custom-images/".$file;
        return response()->download($filepath);
    }

    public function language_switcher(Request $request){

        $request_lang = Language::where('lang_code', $request->lang_code)->first();

        Session::put('front_lang', $request->lang_code);
        Session::put('lang_dir', $request_lang->lang_direction);

        app()->setLocale($request->lang_code);

        $notification= trans('admin_validation.Language switched successfully');
        $notification=array('messege'=>$notification,'alert-type'=>'success');
        return redirect()->back()->with($notification);

    }

    public function currency_switcher (Request $request){

        $request_currency = MultiCurrency::where('currency_code', $request->currency_code)->first();

        Session::put('currency_icon', $request_currency->currency_icon);
        Session::put('currency_code', $request_currency->currency_code);
        Session::put('currency_rate', $request_currency->currency_rate);
        Session::put('currency_position', $request_currency->currency_position);

        $notification= trans('admin_validation.Currency switched successfully');
        $notification=array('messege'=>$notification,'alert-type'=>'success');
        return redirect()->back()->with($notification);

    }



    public function test_mercado_pago(){


         // Step 1: Require the library from your Composer vendor folder



        //  MercadoPagoConfig::setAccessToken('APP_USR-862651926d94d77ce789b-277839184');
         MercadoPagoConfig::setAccessToken('TEST-606865252906826-529753482');
        //  MercadoPagoConfig::setAccessToken('APP_USR-28489419739829543');


         MercadoPagoConfig::setRuntimeEnviroment(MercadoPagoConfig::LOCAL);


        // Define the items
        $items = [
            [
                "title" => "Product Title",
                "quantity" => 1,
                "currency_id" => "BRL",
                "unit_price" => 100.0
            ]
        ];

        // Define payer information
        $payer = [
            "email" => 'user@gmail.com'
        ];

        // Define back URLs
        $backUrls = [
            'success' => route('home'),
            'failure' => route('home')
        ];

        // Create the preference request data
        $preferenceData = [
            "items" => $items,
            "payer" => $payer,
            "back_urls" => $backUrls,
            "auto_return" => 'approved'
        ];

        // Initialize Preference Client
        $client = new PreferenceClient();

        try {
            // Send the request to create the preference
            $preference = $client->create($preferenceData);


            return redirect($preference->init_point);
            return response()->json([
                'init_point' => $preference->init_point, // URL to redirect user to Checkout Pro
                'preference_id' => $preference->id,
            ]);

        } catch (MPApiException $e) {
            Log::error("Preference creation error: " );
            Log::error($e->getApiResponse()->getContent());
            return response()->json(['message' => 'Error creating preference'], 500);
        }


    }

}