| Current Path : /var/www/html/reddsis/app/Http/Controllers/Backend/ |
| Current File : /var/www/html/reddsis/app/Http/Controllers/Backend/FrontendSiteController.php |
<?php
namespace App\Http\Controllers\Backend;
use App\Http\Controllers\Controller;
use App\Http\Requests\Backend\FrontendSiteRequest;
use App\Models\Backend\FrontendSite;
use App\Models\Backend\FrontendComponent;
use App\Services\BladeSyncService;
use Illuminate\Http\Request;
class FrontendSiteController extends Controller
{
public function index(Request $request)
{
$search = $request->get('search');
$sites = FrontendSite::with('header', 'footer')
->when($search, fn($q) => $q->where(function($q) use ($search) {
$q->where('name', 'like', "%{$search}%")
->orWhere('slug', 'like', "%{$search}%");
}))
->orderByDesc('is_default')
->orderByDesc('status')
->orderBy('sort_order')
->orderBy('name')
->paginate(10);
return view('backend.module.frontendSite.site.index', ['sites' => $sites, 'search' => $search]);
}
public function create()
{
$headers = FrontendComponent::where('category', 'Header')->where('status', true)->get();
$footers = FrontendComponent::where('category', 'Footer')->where('status', true)->get();
$components = FrontendComponent::where('status', true)->get();
return view('backend.module.frontendSite.site.create', ['headers' => $headers, 'footers' => $footers, 'components' => $components]);
}
public function store(FrontendSiteRequest $request)
{
$data = $request->validated();
$data['status'] = $request->boolean('status');
$data['is_default'] = $request->boolean('is_default');
if ($data['is_default']) {
FrontendSite::where('is_default', true)->update(['is_default' => false]);
}
$site = FrontendSite::create($data);
if (FrontendSite::count() === 1) {
$site->update(['is_default' => true]);
}
app(BladeSyncService::class)->syncAll();
if ($request->ajax()) {
return response()->json(['message' => 'Code updated successfully!']);
}
flash()->success('Site created successfully!');
return redirect()->route('frontend-site.sites.index');
}
public function edit($id)
{
$site = FrontendSite::findOrFail($id);
$headers = FrontendComponent::where('category', 'Header')->where('status', true)->get();
$footers = FrontendComponent::where('category', 'Footer')->where('status', true)->get();
$components = FrontendComponent::where('status', true)->get();
return view('backend.module.frontendSite.site.edit', ['site' => $site, 'headers' => $headers, 'footers' => $footers, 'components' => $components]);
}
public function update(FrontendSiteRequest $request, $id)
{
$site = FrontendSite::findOrFail($id);
$data = $request->validated();
$data['status'] = $request->boolean('status');
$data['is_default'] = $request->boolean('is_default');
if ($data['is_default']) {
FrontendSite::where('is_default', true)->update(['is_default' => false]);
$site->refresh();
}
$site->update($data);
app(BladeSyncService::class)->syncAll();
if ($request->ajax()) {
return response()->json(['message' => 'Code updated successfully!']);
}
flash()->success('Site updated successfully!');
return redirect()->route('frontend-site.sites.index');
}
public function destroy($id)
{
$site = FrontendSite::findOrFail($id);
$site->delete();
app(BladeSyncService::class)->syncAll();
flash()->success('Site deleted successfully.');
return redirect()->route('frontend-site.sites.index');
}
public function toggleStatus($id)
{
$site = FrontendSite::findOrFail($id);
$site->update(['status' => !$site->status]);
app(BladeSyncService::class)->syncAll();
return response()->json(['status' => $site->fresh()->status]);
}
public function toggleDefault($id)
{
$site = FrontendSite::findOrFail($id);
// Unset all first
FrontendSite::where('is_default', true)->update(['is_default' => false]);
// Set this one as default
$site->update(['is_default' => true]);
app(BladeSyncService::class)->syncAll();
flash()->success("'{$site->name}' is now the default site");
return response()->json(['is_default' => true, 'name' => $site->name]);
}
}