simedkom/app/Http/Controllers/Homepage/LandingPageController.php
myuqinurrohman 7cd72f7f0f chore: add validation
chore: add info when search data not found
2025-03-30 11:51:01 +07:00

58 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers\Homepage;
use App\Http\Controllers\Controller;
use App\Models\News;
use Carbon\Carbon;
use Illuminate\Http\Request;
class LandingPageController extends Controller
{
public function index(){
$data = [
'title' => 'Beranda',
'page' => 'landing',
'news' => News::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])
->where('category', '=', '0')
->latest()
->get(),
'announcements' => News::whereBetween('created_at', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])
->where('category', '=', '1')
->latest()
->get(),
];
return view('homepage.index', $data);
}
public function search(Request $request){
$request->validate([
'search' => 'nullable|string|max:255|regex:/^[a-zA-Z0-9\s]+$/'
], [
'search.string' => 'Pencarian harus berupa teks.',
'search.max' => 'Pencarian tidak boleh lebih dari 255 karakter.',
'search.regex' => 'Pencarian hanya boleh mengandung huruf, angka, dan spasi.'
]);
$search = trim($request->input('search'));
$data = [
'title' => 'Pencarian',
'page' => 'search',
'data' => News::query()
->when($search, function ($query, $search) {
return $query->where('title', 'LIKE', '%' . $search . '%');
})
->latest()
->simplePaginate(12)
->appends(['search' => $search]),
'search' => $search
];
return view('homepage.search', $data);
}
}