From 01785b7bb9933dc1f1790705b59ba9836a557ceb Mon Sep 17 00:00:00 2001 From: aanol Date: Thu, 5 Jun 2025 15:19:12 +0545 Subject: [PATCH] services done --- app/Http/Controllers/AboutController.php | 75 +++++++++++++++++ app/Http/Controllers/FrontendController.php | 6 +- app/Http/Controllers/ServiceController.php | 81 ++++++++++++++++++ app/Models/Service.php | 10 +++ app/Models/about.php | 22 +++++ ...025_06_05_061619_create_services_table.php | 31 +++++++ .../2025_06_05_071040_create_abouts_table.php | 35 ++++++++ resources/views/abouts/create.blade.php | 52 ++++++++++++ resources/views/abouts/edit.blade.php | 64 +++++++++++++++ resources/views/abouts/index.blade.php | 55 +++++++++++++ resources/views/abouts/show.blade.php | 26 ++++++ resources/views/dashboard.blade.php | 4 + resources/views/frontend/home.blade.php | 4 +- .../views/frontend/partials/about.blade.php | 8 +- .../views/frontend/partials/service.blade.php | 82 +++++++++++++++++++ resources/views/layouts/app.blade.php | 6 ++ resources/views/services/create.blade.php | 30 +++++++ resources/views/services/edit.blade.php | 40 +++++++++ resources/views/services/index.blade.php | 48 +++++++++++ resources/views/services/show.blade.php | 16 ++++ routes/web.php | 4 + 21 files changed, 691 insertions(+), 8 deletions(-) create mode 100644 app/Http/Controllers/AboutController.php create mode 100644 app/Http/Controllers/ServiceController.php create mode 100644 app/Models/Service.php create mode 100644 app/Models/about.php create mode 100644 database/migrations/2025_06_05_061619_create_services_table.php create mode 100644 database/migrations/2025_06_05_071040_create_abouts_table.php create mode 100644 resources/views/abouts/create.blade.php create mode 100644 resources/views/abouts/edit.blade.php create mode 100644 resources/views/abouts/index.blade.php create mode 100644 resources/views/abouts/show.blade.php create mode 100644 resources/views/frontend/partials/service.blade.php create mode 100644 resources/views/services/create.blade.php create mode 100644 resources/views/services/edit.blade.php create mode 100644 resources/views/services/index.blade.php create mode 100644 resources/views/services/show.blade.php diff --git a/app/Http/Controllers/AboutController.php b/app/Http/Controllers/AboutController.php new file mode 100644 index 0000000..31a6443 --- /dev/null +++ b/app/Http/Controllers/AboutController.php @@ -0,0 +1,75 @@ +get(); + return view('abouts.index', compact('abouts')); + } + + // Show form to create new block + public function create() + { + return view('abouts.create'); + } + + // Store new block to DB + public function store(Request $request) + { + $data = $this->validateData($request); + + About::create($data); + + return redirect()->route('abouts.index')->with('success', 'Block created successfully.'); + } + + // Show form to edit a block + public function edit($id) + { + $about = About::findOrFail($id); + return view('abouts.edit', compact('about')); + } + + // Update existing block + public function update(Request $request, $id) + { + $about = About::findOrFail($id); + + $data = $this->validateData($request); + + $about->update($data); + + return redirect()->route('abouts.index')->with('success', 'Block updated successfully.'); + } + + // Delete a block + public function destroy($id) + { + $about = About::findOrFail($id); + $about->delete(); + + return redirect()->route('abouts.index')->with('success', 'Block deleted successfully.'); + } + + // Validation rules + protected function validateData(Request $request) + { + return $request->validate([ + 'title' => 'nullable|string|max:255', + 'description' => 'nullable|string', + 'icon_class' => 'nullable|string|max:255', + 'button_text' => 'nullable|string|max:100', + 'button_url' => 'nullable|string|max:255', + 'image' => 'nullable|image|max:2048', // max 2MB image upload + 'display_order' => 'nullable|integer', + 'extra_classes' => 'nullable|string|max:255', + ]); + } +} diff --git a/app/Http/Controllers/FrontendController.php b/app/Http/Controllers/FrontendController.php index 45134fc..3fc0f76 100644 --- a/app/Http/Controllers/FrontendController.php +++ b/app/Http/Controllers/FrontendController.php @@ -8,6 +8,8 @@ use Illuminate\Http\Request; use App\Models\Post; use App\Models\Slider; use App\Models\Preparation; +use App\Models\Service; +use App\Models\About; class FrontendController extends Controller { @@ -15,8 +17,8 @@ class FrontendController extends Controller { $data['sliderItems'] = Slider::all(); $data['preparations'] = Preparation::all(); - // $data['services'] = Service::all(); - // $data['about'] = About::all(); + $data['services'] = Service::all(); + $data['about'] = About::all(); // $data['contact'] = Contact::first(); // $data['testimonials'] = Testimonial::all(); // $data['partners'] = Partner::all(); diff --git a/app/Http/Controllers/ServiceController.php b/app/Http/Controllers/ServiceController.php new file mode 100644 index 0000000..1ee1af3 --- /dev/null +++ b/app/Http/Controllers/ServiceController.php @@ -0,0 +1,81 @@ +validate([ + 'title' => 'required|string|max:225', + 'description' => 'required|string', + 'button_url' => 'nullable|url', + 'image' => 'nullable|image|mimes:jpeg,png,jpg,webp|max:2048', + ]); + + if ($request->hasFile('image')) { + $validated['image'] = $request->file('image')->store('services', 'public'); + } + + Service::create($validated); + + return redirect()->route('services.index')->with('success', 'Service created successfully'); + } + + public function show(Service $service) + { + return view('services.show', compact('service')); + } + + public function edit(Service $service) + { + return view('services.edit', compact('service')); + } + + public function update(Request $request, Service $service) + { + $validated = $request->validate([ + 'title' => 'required|string|max:225', + 'description' => 'required|string', + 'button_url' => 'nullable|string', + 'image' => 'nullable|image|mimes:jpeg,png,jpg,webp|max:2048', + ]); + + if ($request->hasFile('image')) { + // Delete old image + if ($service->image) { + Storage::disk('public')->delete($service->image); + } + + $validated['image'] = $request->file('image')->store('services', 'public'); + } + + $service->update($validated); + return redirect()->route('services.index')->with('success', 'Service updated successfully'); + } + + public function destroy(Service $service) + { + if ($service->image) { + Storage::disk('public')->delete($service->image); + } + + $service->delete(); + return redirect()->route('services.index')->with('success', 'Service deleted successfully'); + } +} diff --git a/app/Models/Service.php b/app/Models/Service.php new file mode 100644 index 0000000..eb2d29e --- /dev/null +++ b/app/Models/Service.php @@ -0,0 +1,10 @@ +id(); + $table->string('title'); + $table->text('description'); + $table->string('image')->nullable(); + $table->string('button_url')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('services'); + } +}; diff --git a/database/migrations/2025_06_05_071040_create_abouts_table.php b/database/migrations/2025_06_05_071040_create_abouts_table.php new file mode 100644 index 0000000..018cde4 --- /dev/null +++ b/database/migrations/2025_06_05_071040_create_abouts_table.php @@ -0,0 +1,35 @@ +id(); + $table->string('title')->nullable(); + $table->text('description')->nullable(); + $table->string('icon_class')->nullable(); + $table->string('button_text')->nullable(); + $table->string('button_url')->nullable(); + $table->string('image')->nullable(); + $table->integer('display_order')->nullable(); + $table->string('extra_classes')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('abouts'); + } +}; diff --git a/resources/views/abouts/create.blade.php b/resources/views/abouts/create.blade.php new file mode 100644 index 0000000..43492c2 --- /dev/null +++ b/resources/views/abouts/create.blade.php @@ -0,0 +1,52 @@ +@extends('layouts.app') + +@section('content') +
+

Create About Section

+
+ @csrf +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + + Cancel +
+
+@endsection diff --git a/resources/views/abouts/edit.blade.php b/resources/views/abouts/edit.blade.php new file mode 100644 index 0000000..775dfaf --- /dev/null +++ b/resources/views/abouts/edit.blade.php @@ -0,0 +1,64 @@ +@extends('layouts.app') + +@section('content') +
+

Edit About Section

+ +
+ @csrf + @method('PUT') + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ @if($about->image) + Image + @else + No image uploaded + @endif +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + + Cancel +
+
+@endsection diff --git a/resources/views/abouts/index.blade.php b/resources/views/abouts/index.blade.php new file mode 100644 index 0000000..5889538 --- /dev/null +++ b/resources/views/abouts/index.blade.php @@ -0,0 +1,55 @@ +@extends('layouts.app') + +@section('content') +
+

About Sections

+ Create New About + + @if(session('success')) +
{{ session('success') }}
+ @endif + + + + + + + + + + + + + + + + @foreach($abouts as $about) + + + + + + + + + + + @endforeach + +
TitleDescriptionIcon ClassButton TextButton URLImageDisplay OrderActions
{{ $about->title }}{{ Str::limit($about->description, 50) }}{{ $about->icon_class }}{{ $about->button_text }}{{ $about->button_url }} + @if($about->image) + Image + @else + - + @endif + {{ $about->display_order }} + View + Edit +
+ @csrf + @method('DELETE') + +
+
+
+@endsection diff --git a/resources/views/abouts/show.blade.php b/resources/views/abouts/show.blade.php new file mode 100644 index 0000000..48b61ad --- /dev/null +++ b/resources/views/abouts/show.blade.php @@ -0,0 +1,26 @@ +@extends('layouts.app') + +@section('content') +
+

About Details

+ +
Title: {{ $about->title }}
+
Description: {!! nl2br(e($about->description)) !!}
+
Icon Class: {{ $about->icon_class }}
+
Button Text: {{ $about->button_text }}
+ +
+ Image:
+ @if($about->image) + Image + @else + No image uploaded + @endif +
+
Display Order: {{ $about->display_order }}
+
Extra Classes: {{ $about->extra_classes }}
+ + Back to List + Edit +
+@endsection diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index 7d7e318..5146464 100644 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -9,6 +9,10 @@ Manage Posts Manage Sliders Manage Preparations + Manage Services + Manage Abouts + + @endsection diff --git a/resources/views/frontend/home.blade.php b/resources/views/frontend/home.blade.php index 694ec64..de6aec1 100644 --- a/resources/views/frontend/home.blade.php +++ b/resources/views/frontend/home.blade.php @@ -4,8 +4,8 @@ @include('frontend.header') @include('frontend.partials.slider', ['sliderItems' => $sliderItems]) @include('frontend.partials.preparation', ['preparations' => $preparations]) - {{-- @include('frontend.partials.service', ['services' => $services]) --}} - {{-- @include('frontend.partials.about', ['about' => $about]) --}} + @include('frontend.partials.service', ['services' => $services]) + @include('frontend.partials.about', ['about' => $about]) {{-- @include('frontend.partials.contact', ['contact' => $contact]) --}} {{-- @include('frontend.partials.testimonial', ['testimonials' => $testimonials]) --}} {{-- @include('frontend.partials.partners', ['partners' => $partners]) --}} diff --git a/resources/views/frontend/partials/about.blade.php b/resources/views/frontend/partials/about.blade.php index e2e6b9b..d460712 100644 --- a/resources/views/frontend/partials/about.blade.php +++ b/resources/views/frontend/partials/about.blade.php @@ -49,7 +49,7 @@
--}} - @foreach($popups as $popup) + @foreach($abouts as $about)
diff --git a/resources/views/frontend/partials/service.blade.php b/resources/views/frontend/partials/service.blade.php new file mode 100644 index 0000000..1bdc66d --- /dev/null +++ b/resources/views/frontend/partials/service.blade.php @@ -0,0 +1,82 @@ + +
+
+ {{-- @dd($services) --}} +
+
+ +
+
+

SERVICES WE PROVIDE

+

Take The Road To A Healthy Heart Beat

+
+
+
+
+
+ @foreach($services as $service) +
+ +
+ @endforeach + {{--
+ +
+
+ +
--}} +
+
+
+ diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 57be742..d50710e 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -47,6 +47,12 @@ + +