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