services done
This commit is contained in:
75
app/Http/Controllers/AboutController.php
Normal file
75
app/Http/Controllers/AboutController.php
Normal file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\About;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class AboutController extends Controller
|
||||
{
|
||||
// Show all blocks
|
||||
public function index()
|
||||
{
|
||||
$abouts = About::orderBy('display_order')->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',
|
||||
]);
|
||||
}
|
||||
}
|
@ -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();
|
||||
|
81
app/Http/Controllers/ServiceController.php
Normal file
81
app/Http/Controllers/ServiceController.php
Normal file
@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Service;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class ServiceController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$services = Service::all();
|
||||
return view('services.index', compact('services'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
return view('services.create');
|
||||
}
|
||||
public function store(Request $request)
|
||||
{
|
||||
|
||||
$validated = $request->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');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user