| Current Path : /var/www/html/reddsis/app/Http/Controllers/Backend/ |
| Current File : /var/www/html/reddsis/app/Http/Controllers/Backend/ContentPublicHolidayController.php |
<?php
namespace App\Http\Controllers\Backend;
use App\Http\Controllers\Controller;
use App\Http\Requests\Backend\ContentPublicHolidayRequest;
use App\Models\Backend\ContentPublicHoliday;
use App\Models\Backend\Ref;
use Illuminate\Http\Request;
class ContentPublicHolidayController extends Controller
{
public function index(Request $request)
{
$search = $request->get('search');
$statusFilter = $request->get('status');
$yearFilter = $request->get('year');
$holidays = ContentPublicHoliday::query()
->when($search, function ($q) use ($search) {
$q->where(function ($sub) use ($search) {
$sub->where('public_holiday_title', 'like', "%{$search}%")
->orWhere('public_holiday_status', 'like', "%{$search}%");
});
})
->when($statusFilter, fn($q) => $q->where('public_holiday_status', $statusFilter))
->when($yearFilter, function ($q) use ($yearFilter) {
$q->whereYear('public_holiday_start_date', $yearFilter)
->orWhereYear('public_holiday_end_date', $yearFilter);
})
->orderBy('public_holiday_start_date', 'desc')
->paginate(10)
->onEachSide(1)
->withQueryString();
$statuses = Ref::where('cat', 'HOLIDAY_STATUS')->orderBy('sort')->pluck('descr', 'code');
$years = ContentPublicHoliday::selectRaw('YEAR(public_holiday_start_date) as year')
->whereNotNull('public_holiday_start_date')
->distinct()
->orderBy('year', 'desc')
->pluck('year');
return view('backend.module.contentPublicHoliday.index', [
'holidays' => $holidays,
'statuses' => $statuses,
'years' => $years,
'search' => $search,
'statusFilter' => $statusFilter,
'yearFilter' => $yearFilter,
]);
}
public function create()
{
$statuses = Ref::where('cat', 'HOLIDAY_STATUS')->orderBy('sort')->pluck('descr', 'code');
return view('backend.module.contentPublicHoliday.create', [
'statuses' => $statuses,
]);
}
public function store(ContentPublicHolidayRequest $request)
{
ContentPublicHoliday::create([
'public_holiday_title' => $request->public_holiday_title,
'public_holiday_start_date' => $request->public_holiday_start_date,
'public_holiday_end_date' => $request->public_holiday_end_date,
'public_holiday_status' => $request->public_holiday_status,
'created_by' => auth()->id(),
'updated_by' => auth()->id(),
]);
flash()->success('Public holiday created successfully!');
return redirect()->route('content-public-holiday.index');
}
public function edit($id)
{
$holiday = ContentPublicHoliday::findOrFail($id);
$statuses = Ref::where('cat', 'HOLIDAY_STATUS')->orderBy('sort')->pluck('descr', 'code');
return view('backend.module.contentPublicHoliday.edit', [
'holiday' => $holiday,
'statuses' => $statuses,
]);
}
public function update(ContentPublicHolidayRequest $request, $id)
{
$holiday = ContentPublicHoliday::findOrFail($id);
$holiday->update([
'public_holiday_title' => $request->public_holiday_title,
'public_holiday_start_date' => $request->public_holiday_start_date,
'public_holiday_end_date' => $request->public_holiday_end_date,
'public_holiday_status' => $request->public_holiday_status,
'updated_by' => auth()->id(),
]);
flash()->success('Public holiday updated successfully!');
return redirect()->route('content-public-holiday.index');
}
public function destroy($id)
{
$holiday = ContentPublicHoliday::findOrFail($id);
$holiday->delete();
flash()->success('Public holiday deleted successfully.');
return redirect()->route('content-public-holiday.index');
}
}