58 lines
1.7 KiB
PHP
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);
|
|
}
|
|
}
|