PHP 8.3.30
Preview: IndexController.php Size: 13.62 KB
/home/getspomw/itechservicellc.com/app/Http/Controllers/IndexController.php

<?php

namespace App\Http\Controllers;

use App\Mail\NewSubscriber;
use App\Models\Blog;
use App\Models\Contact;
use App\Models\CustomerInquiry;
use App\Models\Subscribe;
use App\Models\SettingPag;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Validator;

class IndexController extends Controller
{
    //

    protected $title_default;
    protected $description_default;
    protected $keyword_default;
    public function __construct()
    {
        $this->title_default = 'Smart Web Elevate | Digital Marketing Services for Growth';
        $this->description_default = ' Elevate your brand with Smart Web Elevate’s expert digital marketing services. SEO, PPC, content marketing, and social media to enhance your online success.';
        $this->keyword_default = 'digital marketing, SEO, PPC, social media';
    }
    public function index()
    {
        $blogs = Blog::latest()->limit(3)->get();
        $data = SettingPag::where('page', 'home')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.index', compact('blogs', 'title', 'desc', 'key', 'faqSchema'));
    }
    public function about()
    {
        $data = SettingPag::where('page', 'about-us')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.about', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function blog()
    {
        $data = SettingPag::where('page', 'blog')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        $blog = Blog::all();
        return view('frontend.blog', compact('blog', 'title', 'desc', 'key', 'faqSchema'));
    }
    public function blog_detail($slug)
    {
        $blog = Blog::where('slug', $slug)->firstOrFail();
        $blogs = Blog::latest()->limit(3)->get();
        $data = SettingPag::where('page', 'blog-detail')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.blog-details', compact('blog', 'blogs', 'title', 'desc', 'key', 'faqSchema'));
    }
    public function digital_content_marketing()
    {
        $data = SettingPag::where('page', 'digital-content-marketing')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.content-marketing', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function ecommerce_seo()
    {
        $data = SettingPag::where('page', 'ecommerce-seo')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.ecommerce-seo', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function local_seo()
    {
        $data = SettingPag::where('page', 'local-seo')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.local-seo', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function ppc_service()
    {
        $data = SettingPag::where('page', 'ppc-services')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.ppc-service', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function privacy()
    {
        $data = SettingPag::where('page', 'privacy')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.privacy-policy', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function refund()
    {
        $data = SettingPag::where('page', 'refund')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.refund-policy', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function search_engine_optimization()
    {
        $data = SettingPag::where('page', 'search-engine-optimization')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.seo-service', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function social_media_marketing()
    {
        $data = SettingPag::where('page', 'social-media-marketing')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.social-media-marketing', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function terms_condition()
    {
        $data = SettingPag::where('page', 'terms-condition')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.terms-condition', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function web_design()
    {
        $data = SettingPag::where('page', 'web-design')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.web-designing', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function web_development()
    {
        $data = SettingPag::where('page', 'web-development')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.web-development', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function contact()
    {
        $data = SettingPag::where('page', 'contact')->first();
        $title = $data->title ?? $this->title_default;
        $desc = $data->description ?? $this->description_default;
        $key = $data->keyword ?? $this->keyword_default;
        $faqSchema = !empty($data->faq_schema)
            ? json_encode(json_decode($data->faq_schema, true), JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)
            : null;
        return view('frontend.contact', compact('title', 'desc', 'key', 'faqSchema'));
    }
    public function sendOtp_contact(Request $request)
    {
        $request->validate(['email' => 'required|email']);

        try {
            $otp = rand(100000, 999999);
            Session::put('otp_' . $request->email, $otp);

            Mail::raw("Your OTP is: $otp", function ($message) use ($request) {
                $message->to($request->email)
                    ->subject('Your OTP for Form Verification');
            });

            return response()->json(['success' => true, 'message' => 'OTP sent successfully!']);
        } catch (\Exception $e) {
            return response()->json([
                'success' => false,
                'message' => 'Failed to send OTP: ' . $e->getMessage()
            ]);
        }
    }

    public function verifyOtp(Request $request)
    {
        $request->validate(['email' => 'required|email', 'otp' => 'required']);
        $storedOtp = Session::get('otp_' . $request->email);
        if ($storedOtp && $storedOtp == $request->otp) {
            Session::forget('otp_' . $request->email);
            return response()->json(['success' => true, 'message' => 'OTP verified successfully!']);
        }
        return response()->json(['success' => false, 'message' => 'Invalid OTP.']);
    }

    public function contact_store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required',
            'email' => 'required|email',
            'phone' => 'required',
            'service' => 'required'
        ]);
        if ($validator->fails()) {
            return response()->json(['success' => false, 'errors' => $validator->errors()]);
        }
        CustomerInquiry::create($request->all());
        Mail::raw("New contact submission:\nName: {$request->name}\nEmail: {$request->email}\nPhone: {$request->phone}\nService: {$request->service}", function ($message) {
            $message->to(env('MAIL_FROM_ADDRESS'))->subject('New Contact Form Submission');
        });
        return response()->json(['success' => true, 'message' => 'Form submitted successfully!']);
    }
    public function subscribe(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'email' => 'required|email'
        ]);
        if ($validator->fails()) {
            return response()->json([
                'success' => false,
                'message' => 'Please enter a valid email address.'
            ]);
        }
        try {
            $subscriber = Subscribe::where('email', $request->email)->first();
            if ($subscriber) {
                if ($subscriber->is_active) {
                    return response()->json([
                        'success' => false,
                        'message' => 'This email is already subscribed.'
                    ]);
                } else {
                    $subscriber->update(['is_active' => true]);
                    return response()->json([
                        'success' => true,
                        'message' => 'Welcome back! You have been re-subscribed.'
                    ]);
                }
            }
            Subscribe::create([
                'email' => $request->email,
            ]);
            Mail::raw("A new user has subscribed to your newsletter:\n\nEmail: {$request->email}", function ($message) {
                $message->to(env('MAIL_FROM_ADDRESS'))
                    ->subject('New Newsletter Subscription');
            });
            return response()->json([
                'success' => true,
                'message' => 'Thank you for subscribing!'
            ]);
        } catch (\Exception $e) {
            return response()->json([
                'success' => false,
                'message' => 'Something went wrong. Please try again later.'
            ]);
        }
    }
}

Directory Contents

Dirs: 1 × Files: 2

Name Size Perms Modified Actions
Admin DIR
- drwxr-xr-x 2025-11-18 19:23:42
Edit Download
77 B lrw-r--r-- 2025-10-28 20:21:36
Edit Download
13.62 KB lrw-r--r-- 2025-12-17 11:26:20
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).