?
Current File : /home/sanghavirealty/public_html/appazwer/Http/Controllers/LeadController.php
<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
// use Auth\Auth;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
use App\Models\Navigation;
use App\Models\Widget;
use App\Models\WidgetSetting;
use App\Models\Lead;
use App\Models\Product;
use App\Models\Mailemit;
use App\Http\Controllers\Traits\CaptchaGeneratorTrait;


// CaptchaGeneratorTrait

use Illuminate\Support\Str;


class LeadController extends Controller
{


  function flagTheReview (Request $req){

    $getUserID = Auth::user()->id ;
    $type = "Review"  ;
    $subject = "User Flagged Content" ;
    $req->validate([
      'leadmsg' => 'required'
        ],
        [
          'leadmsg.required'=>'Please update reason .' ]
      );


    $utmparameter = null ;
  $utmparameter = $req->utmparameter ;

 

  Lead::insert([
    'userid'=>$getUserID,
    'brandid'=>$req->id,
    'reviewid'=>$req->rid,
    'message'=>$req->leadmsg,
    'type'=>$type,
    'subject'=>$subject,
    'refURL'=>request()->headers->get('referer'),
    'utm'=>$utmparameter,
    'createby'=>1,
    'createdate'=>Carbon::Now(),
    'createip'=>$req->ip()
]);


  $messagesuccess = session()->flash('sucess', 'Thanks for your request');

  return redirect()->back();

}




function showReviewFlagData($type=0){

      
       
  $dataviewer = Lead::WHERE('currentstatus','0')
  ->WHERE('subject','User Flagged Content')
  ->With('getBrandTitle')
  ->With('getReviewTitle')
  ->Orderby('createdate', 'DESC')
  ->paginate(20);



  $sendType = $type ;

  return view('ticketlead.leadmanager',['data'=>$dataviewer, 'getType' => $sendType]);
  
  }





  function showBrandData($type=0){

      
       
    $dataviewer = Lead::WHERE('currentstatus','0')
    ->WHERE('subject','Reported by user')
    ->With('getBrandTitle')
    ->Orderby('createdate', 'DESC')
    ->paginate(20);

    $sendType = $type ;
  
    return view('ticketlead.leadmanager',['data'=>$dataviewer, 'getType' => $sendType]);
    
    }

function reportBrand(Request $req) {



  $getUserID = Auth::user()->id ;
  $type = $req->report ;
  $subject = "Reported by user" ;

  $req->validate([
    'name' => 'required|min:7',
    'passwordemailxxx' => 'bail|required|email',
    'leadmsg' => 'required'
      ],
      [
        'passwordemailxxx.required'=>'The email field is required.',
        'leadmsg.required'=>'Please update feature request .'
        
        
        ]
    
    
    );

  $utmparameter = null ;
  $utmparameter = $req->utmparameter ;

  Lead::insert([
    'userid'=>$getUserID,
    'name'=>$req->name,
    'email'=>$req->passwordemailxxx,
    'phone'=>$req->phone,
    'brandid'=>$req->id,
    'message'=>$req->leadmsg,
    'type'=>$type,
    'subject'=>$subject,
    'refURL'=>request()->headers->get('referer'),
    'utm'=>$utmparameter,
    'createby'=>1,
    'createdate'=>Carbon::Now(),
    'createip'=>$req->ip()
]);


  $messagesuccess = session()->flash('sucess', 'Thanks for your request');

  return redirect()->back();

}




  function LeadUpdateStatus($id){

    //changes the current status of leads

    $PostUpdate = Lead::find($id) ; 
    $PostUpdate->currentstatus	 = 1	 ;
    $PostUpdate->isDirty('currentstatus');
    $PostUpdate->save();

    return redirect()->back()->with('msg', 'Lead has been deleted');



  }

  function showData($type=0){

      
       
    $dataviewer = Lead::WHERE('currentstatus','0')
    ->Orderby('createdate', 'DESC')
    ->paginate(50);

    $sendType = $type ;
  
    return view('ticketlead.leadmanager',['data'=>$dataviewer, 'getType' => $sendType]);
    
    }

  function referAFriend(Request $req)  {


    $getUserID = Auth::user()->id ;

    $type = 'Referral' ;
    $subject = 'Your friend has Referred' ;


    $refToken = (string) Str::uuid();
   
    //Hash::make($data['password']),


    $req->validate([
      'name'  => 'required',
      'email' => 'bail|required|email',

  
    ]);


    lead::insert([
      'userid'=>$getUserID,
      'name'=>$req->name,
      'email'=>$req->email,
      'type'=>$type,
      'subject'=>$subject,
      'refferalkey'=>$refToken,
      'refURL'=>request()->headers->get('referer'),
      'createby'=>1,
      'createdate'=>Carbon::Now(),
      'createip'=>$req->ip()
  ]);

    $messagesuccess = session()->flash('sucess', 'updated sucessfully');




  }



function OptInUpdate (Request $req) {
$type = 'OptIn';
$getUserID = '1' ; //Auth::user()->id
$listing_id =  $req->zzpzzozzszztzzizzdzz;
$subject = "Optin" ;
$product = $req->zzpzzozzszztzzizzdzz ;
$name = $req->xxnxxaxxmxxexx ; 
$email =$req->xxexxmxxaxxixxlxx ;


    $req->validate([
      'xxnxxaxxmxxexx'  => 'required',
      'xxexxmxxaxxixxlxx' => 'bail|unique:ticketlead,email|required|email',],
      ['xxnxxaxxmxxexx.required'=>'The Name field is required.',
      'xxexxmxxaxxixxlxx.email'=>'The email field is required.', 
      'xxexxmxxaxxixxlxx.unique'=>'This email is already registered', 
    ]);


    lead::insert([
      'userid'=>$getUserID,
      'ing_id'=>$product,
      'name'=>$name,
      'email'=>$email,
      'type'=>$type,
      'subject'=>$subject,
      'refURL'=>request()->headers->get('referer'),
      'createby'=>$getUserID,
      'createdate'=>Carbon::Now(),
      'createip'=>$req->ip()
  ]);

    // $messagesuccess = session()->flash('sucess', 'updated sucessfully');

    return redirect(request()->headers->get('referer'))->with('sucess', 'Thanks, we will update you soon');


}





  function leadInsert(Request $req){

    $type = 'listingAd' ;
    $subject = 'Lead from the Listing' ;
   
    $req->validate([
  'email' => 'bail|required|email',
  'name' => 'required|min:7',
  'phone' => 'required|numeric',
  'leadmsg' => 'required'
    ],
    ['leadmsg.required'=>'The Message field is required.']
  
  
  );





    $getUserID = Auth::user()->id ;

    lead::insert([
      'userid'=>$getUserID,
      'listing_id'=>$req->id,
      'name'=>$req->name,
      'email'=>$req->email,
      'phone'=>$req->phone,
      'message'=>$req->leadmsg,
      'type'=>$type,
      'subject'=>$subject,
      'refURL'=>request()->headers->get('referer'),
      'createby'=>1,
      'createdate'=>Carbon::Now(),
      'createip'=>$req->ip()
  ]);

    $messagesuccess = session()->flash('sucess', 'updated sucessfully');

   return view('ticketlead.leadcapture',[
    'message' => $messagesuccess ,]);


  }


  function ListingInsert(Request $req){

    // return $req->all();



    $type = 'Listing' ;
    $subject = 'Lead from the Website' ;
   
    $req->validate([
  'name' => 'required|min:7',
  'passwordemailxxx' => 'bail|required|email',
  'phone' => 'required|numeric',
  'leadmsg' => 'required'
    ],
    [
      'passwordemailxxx.required'=>'The email field is required.',
      'leadmsg.required'=>'The Message field is required.'
      
      
      ]
  
  
  );


  $getUserID = Auth::user()->id ;

    lead::insert([
      'userid'=>$getUserID,
      'name'=>$req->name,
      'email'=>$req->passwordemailxxx,
      'phone'=>$req->phone,
      'message'=>$req->leadmsg,
      'type'=>$type,
      'subject'=>$req->subject,
      'refURL'=>request()->headers->get('referer'),
      'createby'=>1,
      'createdate'=>Carbon::Now(),
      'createip'=>$req->ip()
  ]);

  


    $messagesuccess = session()->flash('sucess', 'Thanks for your request, our team will get back to you');

    return redirect('/Contact-Us');



  }


  function FamilyLeadInsert (Request $req) {

    $getUserID = Auth::user()->id ;
    $type = "Response from website" ;
    $subject = "Response from website for the Family" ;

    $req->validate([
      'name' => 'required|min:7',
      'passwordemailxxx' => 'bail|required|email',
      'leadmsg' => 'required'
        ],
        [
          'passwordemailxxx.required'=>'The email field is required.',
          'leadmsg.required'=>'Please update feature request .'
          
          
          ]
      
      
      );

    $utmparameter = null ;
    $utmparameter = $req->utmparameter ;



    Lead::insert([
      'userid'=>$getUserID,
      'family_uniqueid'=>$req->id,
      'name'=>$req->name,
      'email'=>$req->passwordemailxxx,
      'phone'=>$req->phone,
      'message'=>$req->leadmsg,
      'type'=>$type,
      'subject'=>$subject,
      'refURL'=>request()->headers->get('referer'),
      'utm'=>$utmparameter,
      'createby'=>1,
      'createdate'=>Carbon::Now(),
      'createip'=>$req->ip()
  ]);


    $messagesuccess = session()->flash('sucess', 'Thanks for your request');

    return redirect()->back();

  }


  function BrandLeadInsert (Request $req) {

    $getUserID = Auth::user()->id ;
    $type = "Request For Quote" ;
    $subject = "Request For Quote From Your Biz Profile" ;

    $req->validate([
      'name' => 'required|min:7',
      'passwordemailxxx' => 'bail|required|email',
      'leadmsg' => 'required'
        ],
        [
          'passwordemailxxx.required'=>'The email field is required.',
          'leadmsg.required'=>'Please update feature request .'
          
          
          ]
      
      
      );

    $utmparameter = null ;
    $utmparameter = $req->utmparameter ;

    Lead::insert([
      'userid'=>$getUserID,
      'name'=>$req->name,
      'email'=>$req->passwordemailxxx,
      'phone'=>$req->phone,
      'message'=>$req->leadmsg,
      'type'=>$type,
      'subject'=>$subject,
      'refURL'=>request()->headers->get('referer'),
      'utm'=>$utmparameter,
      'createby'=>1,
      'createdate'=>Carbon::Now(),
      'createip'=>$req->ip()
  ]);


    $messagesuccess = session()->flash('sucess', 'Thanks for your request');

    return redirect()->back();

  }



 public function ContactCaptureDisplay()
    {
        $widgetsetting = WidgetSetting::getAllWidgetSettingGeneric();

           $bottomTicker = Widget::SingleDataSpecific('BottomTicker');
        
        return view('ticketlead.contactcapture', [
            "widgetsetting" => $widgetsetting,
            '$bottomTicker' => $bottomTicker,
        ]);
    }


public function ContactInsert(Request $req)
{
    // 1. Honeypot check for bots
    if (!empty($req->input('honeypot'))) {
        // Redirect to a success page to deceive the bot
        return redirect('/thanks');
    }

    // 2. Validate all other form fields and the CAPTCHA
    $req->validate([
        'name' => 'required|min:7',
        'passwordemailxxx' => 'bail|required|email',
        'phone' => 'required|numeric',
        'leadmsg' => 'required',
        'captcha' => 'required', // The captcha field must be required
    ], [
        'passwordemailxxx.required' => 'The email field is required.',
        'leadmsg.required' => 'The Message field is required.',
        'captcha.required' => 'The captcha field is required.',
    ]);

    // 3. Perform the server-side CAPTCHA validation
    if ($req->input('captcha') != session('captcha_answer')) {
        return back()->withErrors(['captcha' => 'Incorrect captcha. Please try again.'])->withInput();
    }

    // 4. Insert lead into the database
    lead::insert([
        'name' => $req->name,
        'email' => $req->passwordemailxxx,
        'phone' => $req->phone,
        'message' => $req->leadmsg,
        'type' => 'Contact',
        'subject' => 'Lead from the Website',
        'refURL' => request()->headers->get('referer'),
        'utm' => null,
        'createby' => 1,
        'createdate' => Carbon::now(),
        'createip' => $req->ip()
    ]);

    // 5. Clear the captcha answer from the session after a successful submission
    session()->forget('captcha_answer');

    session()->flash('sucess', 'Thanks for your request, our team will get back to you');
    return redirect('/thanks');
}


























  function ContactInsertOLD( Request $req){



    $utmparameter = null ;
    $utmparameter = $req->utmparameter ;

    $type = $req->type ;

    // dd($req);

    if($type != 'Contact') {

    $type = $type ;

    $subject = $type.'Lead from the Website' ;

    $req->validate([
      'name' => 'required|min:4',
      'passwordemailxxx' => 'bail|required|email',
      'phone' => 'required|numeric',
        ],
        [
          'passwordemailxxx.required'=>'The email field is required.',
          'leadmsg.required'=>'Please update feature request .'
          
          
          ]
      
      
      );

    }else{

      $type = 'Contact' ;

   
      $subject = 'Lead from the Website' ;


      $req->validate([
        'name' => 'required|min:7',
        'passwordemailxxx' => 'bail|required|email',
        'phone' => 'required|numeric',
        'leadmsg' => 'required'
          ],
          [
            'passwordemailxxx.required'=>'The email field is required.',
            'leadmsg.required'=>'The Message field is required.'
            
            
            ]
        
        
        );



    }

    
 
   
   

  //   'userid'=>$getUserID,
  // $getUserID = Auth::user()->id ;

    lead::insert([

      'name'=>$req->name,
      'email'=>$req->passwordemailxxx,
      'phone'=>$req->phone,
      'message'=>$req->leadmsg,
      'type'=>$type,
      'subject'=>$subject,
      'refURL'=>request()->headers->get('referer'),
      'utm'=>$utmparameter,
      'createby'=>1,
      'createdate'=>Carbon::Now(),
      'createip'=>$req->ip()
  ]);

  // $fromName = $req->name; 
  // $fromEmail = $req->passwordemailxxx;

  $to = 'amit@makeyoursoftware.com';
  $name = $req->name ;
  $message_id = 3 ;
  $inject =[
    'userid'=>'',
    'name'=>$req->name,
    'email'=>$req->passwordemailxxx,
    'phone'=>$req->phone,
    'message'=>$req->leadmsg,
    'type'=>$type,
    'subject'=>$subject,
    'refURL'=>request()->headers->get('referer'),
  ];


 //$fireTheEmail =  Mailemit::LetUsSendEmail($to,$subject,$message_id,$name,$inject) ;



    $messagesuccess = session()->flash('sucess', 'Thanks for your request, our team will get back to you');

    return redirect('/thanks');



  }


  function PrivacyDisplay(){

    $getData = (new WidgetController)->ShowData('PrivacyPolicy');
 
    $getTitle = 'Privacy Policy';
    $getImageName = 'site-login-picture.png';
    $getContentIcon = 'bi-shield-shaded';

    return view('ticketlead.content',[
     
      'Content'=>$getData,
        'ContentTitle'=>$getTitle,
        'ContentImageName'=>$getImageName,
        'ContentIcon'=>$getContentIcon
        
     ]);


  }
  
  function ThanksDisplay (){

    $getData = (new WidgetController)->ShowData('ThanksResponse');
    $getTitle = 'Thanks';
    $getImageName = 'thanksimg.png';
    $getContentIcon = 'bi-stars';


 
    return view('ticketlead.content',[
     
      'Content'=>$getData,
        'ContentTitle'=>$getTitle,
        'ContentImageName'=>$getImageName,
        'ContentIcon'=>$getContentIcon
     
     
     ]);


  }


  

  function userRegistrationConfirmation ($response = 'UserConfirmation'){

    $getData = (new WidgetController)->ShowData($response);
    $getTitle = 'Thanks';
    $getImageName = 'site-thanks.png';
    $getContentIcon = 'bi-stars';


 
    return view('ticketlead.content',[
     
      'Content'=>$getData,
        'ContentTitle'=>$getTitle,
        'ContentImageName'=>$getImageName,
        'ContentIcon'=>$getContentIcon
     
     
     ]);


  }




  function wowDisplay ($response = 'RequestResponse'){

    $getData = (new WidgetController)->ShowData($response);
    $getTitle = 'Thanks';
    $getImageName = 'site-thanks.png';
    $getContentIcon = 'bi-stars';


 
    return view('ticketlead.content',[
     
      'Content'=>$getData,
        'ContentTitle'=>$getTitle,
        'ContentImageName'=>$getImageName,
        'ContentIcon'=>$getContentIcon
     
     
     ]);


  }

  function TOSDisplay (){

    $getData = (new WidgetController)->ShowData('TOSPolicy');
    $getTitle = 'Terms Of Service';
    $getImageName = 'site-login-picture.png';
    $getContentIcon = 'bi-shield-shaded';


 
    return view('ticketlead.content',[
     
      'Content'=>$getData,
        'ContentTitle'=>$getTitle,
        'ContentImageName'=>$getImageName,
        'ContentIcon'=>$getContentIcon
     
     
     ]);


  }




  function ContactCaptureDisplayold(){

   $widgetsetting = WidgetSetting::getAllWidgetSettingGeneric() ;



 
     return view('ticketlead.contactcapture',[
       "widgetsetting" => $widgetsetting,
    
      
      
      
      ]);
 
 
   }


   function SuggestAFeatureDisplay(){

  

 
    return view('ticketlead.suggestafeature',[
     
     
     
     
     ]);


  }






    
  function LeadCaptureDisplay($adid){

   $getadid = $adid ;
   $listingdetails = listing::where('id', $getadid)
   ->where('currentstatus', 0)
   ->get();

   $listingtitle = $listingdetails[0]['title'] ;


   if ($listingdetails->count() > 0 && is_numeric($getadid) ){

  $dataviewer = [] ;


    // 'SubcategoryGrid'=>$dataviewer,
    //     'ProductList'=>$listingBasedOnCategory,
    //     'CategoryTitle'=>$categorytitle


    return view('ticketlead.leadcapture',[

        'data'=>$dataviewer,
        'listingid'=>$getadid,
        'listingtitle'=>$listingtitle
        
      ]);





   } else {

 return  "404:::Error" ;


   }




   



  }



}