172 lines
5.1 KiB
PHP
172 lines
5.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\BlockedDate;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Validation\ValidationException;
|
|
|
|
class BlockedDateController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*/
|
|
public function index(): JsonResponse
|
|
{
|
|
try {
|
|
$blockedDates = BlockedDate::orderBy('date', 'asc')->get();
|
|
return response()->json($blockedDates);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'message' => 'Geblokkeerde data ophalen mislukt',
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Display a listing of blocked dates for public access (booking form)
|
|
*/
|
|
public function publicIndex(): JsonResponse
|
|
{
|
|
try {
|
|
$blockedDates = BlockedDate::where('date', '>=', now()->toDateString())
|
|
->orderBy('date', 'asc')
|
|
->get(['date']);
|
|
|
|
return response()->json($blockedDates);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'message' => 'Geblokkeerde data ophalen mislukt',
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*/
|
|
public function store(Request $request): JsonResponse
|
|
{
|
|
try {
|
|
$validated = $request->validate([
|
|
'date' => 'required|date|after:today',
|
|
'reason' => 'nullable|string',
|
|
], [
|
|
'date.required' => 'Datum is verplicht',
|
|
'date.after' => 'Datum moet in de toekomst liggen',
|
|
]);
|
|
|
|
$blockedDate = BlockedDate::create($validated);
|
|
|
|
return response()->json($blockedDate, 201);
|
|
} catch (ValidationException $e) {
|
|
return response()->json([
|
|
'message' => 'Validatie mislukt',
|
|
'errors' => $e->errors()
|
|
], 422);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'message' => 'Geblokkeerde datum aanmaken mislukt',
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*/
|
|
public function show(BlockedDate $blockedDate): JsonResponse
|
|
{
|
|
try {
|
|
return response()->json($blockedDate);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'message' => 'Geblokkeerde datum ophalen mislukt',
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*/
|
|
public function update(Request $request, BlockedDate $blockedDate): JsonResponse
|
|
{
|
|
try {
|
|
$validated = $request->validate([
|
|
'date' => 'required|date|after:today',
|
|
'reason' => 'nullable|string',
|
|
], [
|
|
'date.required' => 'Datum is verplicht',
|
|
'date.after' => 'Datum moet in de toekomst liggen',
|
|
]);
|
|
|
|
$blockedDate->update($validated);
|
|
|
|
return response()->json($blockedDate);
|
|
} catch (ValidationException $e) {
|
|
return response()->json([
|
|
'message' => 'Validatie mislukt',
|
|
'errors' => $e->errors()
|
|
], 422);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'message' => 'Geblokkeerde datum bijwerken mislukt',
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*/
|
|
public function destroy(BlockedDate $blockedDate): JsonResponse
|
|
{
|
|
try {
|
|
$blockedDate->delete();
|
|
return response()->json([
|
|
'message' => 'Geblokkeerde datum succesvol verwijderd'
|
|
]);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'message' => 'Geblokkeerde datum verwijderen mislukt',
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if a specific date is blocked
|
|
*/
|
|
public function checkDate(Request $request): JsonResponse
|
|
{
|
|
try {
|
|
$validated = $request->validate([
|
|
'date' => 'required|date',
|
|
], [
|
|
'date.required' => 'Datum is verplicht',
|
|
]);
|
|
|
|
$blockedDate = BlockedDate::where('date', $validated['date'])->first();
|
|
|
|
return response()->json([
|
|
'date' => $validated['date'],
|
|
'is_blocked' => !is_null($blockedDate),
|
|
'reason' => $blockedDate ? $blockedDate->reason : null
|
|
]);
|
|
} catch (ValidationException $e) {
|
|
return response()->json([
|
|
'message' => 'Validatie mislukt',
|
|
'errors' => $e->errors()
|
|
], 422);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'message' => 'Datum controleren mislukt',
|
|
'error' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
}
|