| Current Path : /var/www/html/reddsis/app/Http/Controllers/Backend/ |
| Current File : /var/www/html/reddsis/app/Http/Controllers/Backend/FrontendComponentController.php |
<?php
namespace App\Http\Controllers\Backend;
use App\Http\Controllers\Controller;
use App\Models\Backend\FrontendComponent;
use App\Services\BladeSyncService;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class FrontendComponentController extends Controller
{
public function index(Request $request)
{
$search = $request->get('search');
$components = FrontendComponent::when($search, fn($q) => $q->where(function($q) use ($search) {
$q->where('name', 'like', "%{$search}%")
->orWhere('code', 'like', "%{$search}%")
->orWhere('category', 'like', "%{$search}%");
}))
->orderBy('category')
->orderBy('name')
->paginate(15);
return view('backend.module.frontendSite.component.index', ['components' => $components, 'search' => $search]);
}
public function create()
{
return view('backend.module.frontendSite.component.create');
}
public function store(Request $request)
{
$data = $request->validate([
'name' => 'required|string|max:255',
'code' => 'required|string|max:255|unique:frontend_components,code',
'content' => 'nullable|string',
'type' => 'nullable|string|in:PHP,HTML,JS,CSS',
'category' => 'nullable|string|in:Header,Footer,Section,Content,Panel,Modal',
'status' => 'nullable|boolean',
]);
$data['status'] = $request->boolean('status');
$data['type'] ??= 'PHP';
$data['category'] ??= 'Section';
FrontendComponent::create($data);
app(BladeSyncService::class)->syncAll();
if ($request->ajax()) {
return response()->json(['message' => 'Code updated successfully!']);
}
flash()->success('Code created successfully!');
return redirect()->route('frontend-site.components.index');
}
public function edit($id)
{
$component = FrontendComponent::findOrFail($id);
return view('backend.module.frontendSite.component.edit', ['component' => $component]);
}
public function update(Request $request, $id)
{
$component = FrontendComponent::findOrFail($id);
$data = $request->validate([
'name' => 'required|string|max:255',
'code' => 'required|string|max:255|unique:frontend_components,code,' . $id,
'content' => 'nullable|string',
'type' => 'nullable|string|in:PHP,HTML,JS,CSS',
'category' => 'nullable|string|in:Header,Footer,Section,Content,Panel,Modal',
'status' => 'nullable|boolean',
]);
$data['status'] = $request->boolean('status');
$data['type'] ??= 'PHP';
$data['category'] ??= 'Section';
$component->update($data);
app(BladeSyncService::class)->syncAll();
if ($request->ajax()) {
return response()->json(['message' => 'Code updated successfully!']);
}
flash()->success('Code updated successfully!');
return redirect()->route('frontend-site.components.index');
}
public function destroy($id)
{
$component = FrontendComponent::findOrFail($id);
$component->delete();
app(BladeSyncService::class)->syncAll();
flash()->success('Component deleted successfully.');
return redirect()->route('frontend-site.components.index');
}
}