Init commit
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user