Your IP : 216.73.216.79


Current Path : /var/www/html/reddsis/app/Http/Controllers/Backend/
Upload File :
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');
    }
}