257 lines
7.8 KiB
PHP
257 lines
7.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Modules\FAQ\app\Models\Faq;
|
|
use Modules\Blog\app\Models\Blog;
|
|
use Modules\Page\app\Models\Page;
|
|
use Modules\Post\app\Models\Post;
|
|
use PhpParser\Node\Expr\FuncCall;
|
|
use App\Services\ContactUsService;
|
|
use App\Services\SubscriptionService;
|
|
use Modules\Client\app\Models\Client;
|
|
use Modules\Service\app\Models\Service;
|
|
use Doctrine\Inflector\Rules\Transformations;
|
|
use Modules\TeamMember\app\Models\TeamMember;
|
|
use Modules\Testimonial\app\Models\Testimonial;
|
|
use Modules\Consultation\app\Models\Consultation;
|
|
use Modules\Subscription\app\Models\Subscription;
|
|
use Modules\Transformation\app\Models\Transformation;
|
|
use Modules\ContactUs\app\Http\Requests\CreateContactUsRequest;
|
|
use Modules\Consultation\app\Http\Controllers\ConsultationController;
|
|
use Modules\Consultation\app\Http\Requests\CreateConsultationRequest;
|
|
|
|
class HomeController extends Controller
|
|
{
|
|
|
|
protected $subscriptionService;
|
|
protected $contactUsService;
|
|
|
|
public function __construct(SubscriptionService $subscriptionService, ContactUsService $contactUsService)
|
|
{
|
|
$this->subscriptionService = $subscriptionService;
|
|
$this->contactUsService = $contactUsService;
|
|
}
|
|
|
|
/**
|
|
* Main landing page
|
|
*/
|
|
public function home()
|
|
{
|
|
$data['homePage'] = Page::where('code', 'homepage')->first();
|
|
$data['transformations'] = Transformation::all();
|
|
$data['videoTestimonials'] = Testimonial::where('status', 'active')->where('link', '!=', '')->orderBy('ordering', 'asc')->get();
|
|
$data['normalTestimonials'] = Testimonial::where('status', 'active')->where('link', null)->orderBy('ordering', 'asc')->get();
|
|
$data['teamMembers'] = TeamMember::orderBy('id', 'asc')->take(4)->get();
|
|
$data['aboutPage'] = Page::where('code', 'about_us')->first();
|
|
$data['blogs'] = Blog::orderBy('id', 'desc')->get();
|
|
|
|
return view("theme.spade.index", $data);
|
|
}
|
|
|
|
/**
|
|
* About us page
|
|
*/
|
|
public function aboutUs()
|
|
{
|
|
$data['aboutPage'] = Page::where('code', 'about_us')->first();
|
|
$data['services'] = Service::where('status', 'active')->get();
|
|
|
|
return view('theme.spade.pages.about-us', $data);
|
|
}
|
|
|
|
/**
|
|
* Hair cluster page
|
|
*/
|
|
public function hairTransplant()
|
|
{
|
|
$page = Page::where('code', 'hair_transplant')->first();
|
|
|
|
$data['subPage'] = false;
|
|
$data['pageDetail'] = $page;
|
|
$data['posts'] = $page->posts->where('sidebar_flag', '11')->sortBy('order');
|
|
$data['ageGroupOptions'] = Consultation::AGE_GROUP_OPTIONS;
|
|
$data['procedureOptions'] = Consultation::PROCEDURE_OPTIONS;
|
|
$data['transformations'] = Transformation::all();
|
|
|
|
return view('theme.spade.pages.hair-transplant.cluster', $data);
|
|
}
|
|
|
|
/**
|
|
* Hair single page
|
|
*/
|
|
public function hairTransplantChild($slug)
|
|
{
|
|
$page = Page::where('code', 'hair_transplant')->first();
|
|
|
|
$data['subPage'] = true;
|
|
$data['pageDetail'] = $page;
|
|
$data['posts'] = $page->posts->where('sidebar_flag', '11')->sortBy('order');
|
|
$data['ageGroupOptions'] = Consultation::AGE_GROUP_OPTIONS;
|
|
$data['procedureOptions'] = Consultation::PROCEDURE_OPTIONS;
|
|
$data['post'] = Post::where('slug', $slug)->first();
|
|
$data['transformations'] = Transformation::all();
|
|
|
|
return view('theme.spade.pages.hair-transplant.child', $data);
|
|
}
|
|
|
|
/**
|
|
* Service page
|
|
*/
|
|
public function service($slug)
|
|
{
|
|
$data['service'] = Service::with('serviceMeta')->where('slug', $slug)->where('status', 'active')->first();
|
|
$data['otherServices'] = Service::where('slug', '!=', $slug)->where('status', 'active')->get();
|
|
|
|
return view('theme.spade.pages.service', $data);
|
|
}
|
|
|
|
/**
|
|
* Team member page
|
|
*/
|
|
public function doctorProvider()
|
|
{
|
|
$data['teamMembers'] = TeamMember::orderBy('id', 'asc')->get()->groupBy('group_id');
|
|
|
|
return view('theme.spade.pages.doctor-provider.grid', $data);
|
|
}
|
|
|
|
/**
|
|
* Team member appointment page
|
|
*/
|
|
public function appointment(Request $request)
|
|
{
|
|
$id = $request->input('id');
|
|
$data['teamMemberDetail'] = TeamMember::where('id', $id)->first();
|
|
|
|
return view('theme.spade.pages.doctor-provider.appointment', $data);
|
|
}
|
|
|
|
/**
|
|
* Blogs page
|
|
*/
|
|
public function blogs()
|
|
{
|
|
$data['blogs'] = Blog::where('status', 'active')
|
|
->orderBy('id', 'desc')
|
|
->paginate(env('LIMIT_PER_PAGE'));
|
|
|
|
return view('theme.spade.pages.blog.grid', $data);
|
|
}
|
|
|
|
/**
|
|
* Blog single page
|
|
*/
|
|
public function singleBlog($slug)
|
|
{
|
|
$data['page'] = Page::where('slug', 'blog-single')->first();
|
|
$data['blog'] = Blog::with('blogMeta')->where('slug', $slug)->first();
|
|
$data['ageGroupOptions'] = Consultation::AGE_GROUP_OPTIONS;
|
|
$data['procedureOptions'] = Consultation::PROCEDURE_OPTIONS;
|
|
$data['otherBlogs'] = Blog::where('slug', '!=', $slug)->where('status', 'active')->orderBy('id', 'desc')->limit(7)->get();
|
|
|
|
return view('theme.spade.pages.blog.detail', $data);
|
|
}
|
|
|
|
/**
|
|
* Faq page
|
|
*/
|
|
public function faqs()
|
|
{
|
|
$data['faqs'] = Faq::where('status', 'active')->orderBy('ordering', 'asc')->get();
|
|
|
|
return view('theme.spade.pages.faq', $data);
|
|
}
|
|
|
|
/**
|
|
* Contact us page
|
|
*/
|
|
public function contactUs()
|
|
{
|
|
$data = array();
|
|
|
|
return view("theme.spade.pages.contact-us", $data);
|
|
}
|
|
|
|
/**
|
|
* Privacy policy page
|
|
*/
|
|
public function privacyPolicy()
|
|
{
|
|
$data = [];
|
|
|
|
return view('theme.spade.pages.privacy-policy', $data);
|
|
}
|
|
|
|
/**
|
|
* Terms and condition page
|
|
*/
|
|
public function termsOfService()
|
|
{
|
|
$data = [];
|
|
|
|
return view('theme.spade.pages.term-and-condition', $data);
|
|
}
|
|
|
|
/**
|
|
* Extra page
|
|
*/
|
|
public function extraPage($slug)
|
|
{
|
|
$data['page'] = Page::with('pageMeta')->where('slug', $slug)->where('status', 'active')->first();
|
|
|
|
return view('theme.spade.pages.extra', $data);
|
|
}
|
|
|
|
public function storeSubscription(Request $request)
|
|
{
|
|
$request->validate([
|
|
'email' => 'required|email',
|
|
]);
|
|
|
|
// Check if a subscription with the provided email already exists
|
|
$existingSubscription = Subscription::where('email', $request->email)->exists();
|
|
|
|
if ($existingSubscription) {
|
|
// Subscription already exists, return message or redirect with error
|
|
toastr()->error("Wow! It's seems like you already subscribe. Thanks for subscription...");
|
|
return back();
|
|
}
|
|
|
|
// Proceed with storing the new subscription
|
|
$validated = ['email' => $request->email];
|
|
$this->subscriptionService->storeSubscription($validated);
|
|
|
|
// toastr()->success('Thanks for subscribing');
|
|
return redirect("/thankyou")->with('success','Message Sent Successfully');
|
|
}
|
|
|
|
public function storeContactUs(CreateContactUsRequest $request)
|
|
{
|
|
$validated = $request->validated();
|
|
try {
|
|
$this->contactUsService->storeContactUs($validated);
|
|
|
|
toastr()->success('Thanks for contacting us...');
|
|
return back();
|
|
} catch (\Throwable $th) {
|
|
report($th);
|
|
}
|
|
}
|
|
|
|
|
|
public function storeConsultation(CreateConsultationRequest $request)
|
|
{
|
|
$validated = $request->validated();
|
|
try {
|
|
$consultationController = new ConsultationController();
|
|
$consultationController->store($request);
|
|
// toastr()->success('Thanks for consulting us...');
|
|
return redirect("/thankyou")->with('success','Message Sent Successfully');
|
|
} catch (\Throwable $th) {
|
|
report($th);
|
|
}
|
|
}
|
|
}
|