firstcommit

This commit is contained in:
2025-08-17 16:23:14 +05:45
commit 76bf4c0a18
2648 changed files with 362795 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, ValidatesRequests;
}

View File

@@ -0,0 +1,256 @@
<?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 back();
}
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 back();
} catch (\Throwable $th) {
report($th);
}
}
}

68
app/Http/Kernel.php Normal file
View File

@@ -0,0 +1,68 @@
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array<int, class-string|string>
*/
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Illuminate\Http\Middleware\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array<string, array<int, class-string|string>>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's middleware aliases.
*
* Aliases may be used instead of class names to conveniently assign middleware to routes and groups.
*
* @var array<string, class-string|string>
*/
protected $middlewareAliases = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class,
'signed' => \App\Http\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Illuminate\Http\Request;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*/
protected function redirectTo(Request $request): ?string
{
return $request->expectsJson() ? null : route('login');
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array<int, string>
*/
protected $except = [
//
];
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;
class PreventRequestsDuringMaintenance extends Middleware
{
/**
* The URIs that should be reachable while maintenance mode is enabled.
*
* @var array<int, string>
*/
protected $except = [
//
];
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next, string ...$guards): Response
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array<int, string>
*/
protected $except = [
'current_password',
'password',
'password_confirmation',
];
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustHosts as Middleware;
class TrustHosts extends Middleware
{
/**
* Get the host patterns that should be trusted.
*
* @return array<int, string|null>
*/
public function hosts(): array
{
return [
$this->allSubdomainsOfApplicationUrl(),
];
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array<int, string>|string|null
*/
protected $proxies;
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers =
Request::HEADER_X_FORWARDED_FOR |
Request::HEADER_X_FORWARDED_HOST |
Request::HEADER_X_FORWARDED_PORT |
Request::HEADER_X_FORWARDED_PROTO |
Request::HEADER_X_FORWARDED_AWS_ELB;
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Routing\Middleware\ValidateSignature as Middleware;
class ValidateSignature extends Middleware
{
/**
* The names of the query string parameters that should be ignored.
*
* @var array<int, string>
*/
protected $except = [
// 'fbclid',
// 'utm_campaign',
// 'utm_content',
// 'utm_medium',
// 'utm_source',
// 'utm_term',
];
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array<int, string>
*/
protected $except = [
//
];
}