services done

This commit is contained in:
2025-06-05 15:19:12 +05:45
parent 18e5f8f173
commit 01785b7bb9
21 changed files with 691 additions and 8 deletions

View 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',
]);
}
}

View File

@ -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();

View 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');
}
}

10
app/Models/Service.php Normal file
View File

@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Service extends Model
{
protected $fillable = ['title', 'description', 'image', 'button_url'];
}

22
app/Models/about.php Normal file
View File

@ -0,0 +1,22 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class about extends Model
{
use HasFactory;
protected $fillable = [
'title',
'description',
'icon_class',
'button_text',
'button_url',
'image',
'display_order',
'extra_classes'
];
//
}