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); } } }