diversen
This commit is contained in:
@@ -0,0 +1,196 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\PageContent;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
class PageContentController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
public function index(): JsonResponse
|
||||
{
|
||||
try {
|
||||
$content = PageContent::all();
|
||||
return response()->json($content);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'message' => 'Pagina-inhoud ophalen mislukt',
|
||||
'error' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*/
|
||||
public function store(Request $request): JsonResponse
|
||||
{
|
||||
try {
|
||||
$validated = $request->validate([
|
||||
'key' => 'required|string|max:255|unique:page_content,key',
|
||||
'value' => 'required|string',
|
||||
'description' => 'nullable|string',
|
||||
], [
|
||||
'key.required' => 'Sleutel is verplicht',
|
||||
'key.unique' => 'Deze sleutel bestaat al',
|
||||
'key.max' => 'Sleutel mag maximaal 255 karakters bevatten',
|
||||
'value.required' => 'Waarde is verplicht',
|
||||
]);
|
||||
|
||||
$content = PageContent::create($validated);
|
||||
|
||||
return response()->json($content, 201);
|
||||
} catch (ValidationException $e) {
|
||||
return response()->json([
|
||||
'message' => 'Validatie mislukt',
|
||||
'errors' => $e->errors()
|
||||
], 422);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'message' => 'Pagina-inhoud aanmaken mislukt',
|
||||
'error' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*/
|
||||
public function show(PageContent $pageContent): JsonResponse
|
||||
{
|
||||
try {
|
||||
return response()->json($pageContent);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'message' => 'Pagina-inhoud ophalen mislukt',
|
||||
'error' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*/
|
||||
public function update(Request $request, PageContent $pageContent): JsonResponse
|
||||
{
|
||||
try {
|
||||
$validated = $request->validate([
|
||||
'value' => 'required|string',
|
||||
'description' => 'nullable|string',
|
||||
], [
|
||||
'value.required' => 'Waarde is verplicht',
|
||||
]);
|
||||
|
||||
$pageContent->update($validated);
|
||||
|
||||
return response()->json($pageContent);
|
||||
} catch (ValidationException $e) {
|
||||
return response()->json([
|
||||
'message' => 'Validatie mislukt',
|
||||
'errors' => $e->errors()
|
||||
], 422);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'message' => 'Pagina-inhoud bijwerken mislukt',
|
||||
'error' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*/
|
||||
public function destroy(PageContent $pageContent): JsonResponse
|
||||
{
|
||||
try {
|
||||
$pageContent->delete();
|
||||
return response()->json([
|
||||
'message' => 'Pagina-inhoud succesvol verwijderd'
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'message' => 'Pagina-inhoud verwijderen mislukt',
|
||||
'error' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a specific content by key
|
||||
*/
|
||||
public function getByKey(string $key): JsonResponse
|
||||
{
|
||||
try {
|
||||
$content = PageContent::where('key', $key)->first();
|
||||
|
||||
if (!$content) {
|
||||
return response()->json([
|
||||
'message' => 'Pagina-inhoud niet gevonden'
|
||||
], 404);
|
||||
}
|
||||
|
||||
return response()->json($content);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'message' => 'Pagina-inhoud ophalen mislukt',
|
||||
'error' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update or create content by key
|
||||
*/
|
||||
public function updateByKey(Request $request, string $key): JsonResponse
|
||||
{
|
||||
try {
|
||||
$validated = $request->validate([
|
||||
'value' => 'required|string',
|
||||
'description' => 'nullable|string',
|
||||
], [
|
||||
'value.required' => 'Waarde is verplicht',
|
||||
]);
|
||||
|
||||
$content = PageContent::updateOrCreate(
|
||||
['key' => $key],
|
||||
[
|
||||
'value' => $validated['value'],
|
||||
'description' => $validated['description'] ?? null
|
||||
]
|
||||
);
|
||||
|
||||
return response()->json($content);
|
||||
} catch (ValidationException $e) {
|
||||
return response()->json([
|
||||
'message' => 'Validatie mislukt',
|
||||
'errors' => $e->errors()
|
||||
], 422);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'message' => 'Pagina-inhoud bijwerken mislukt',
|
||||
'error' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all content as key-value pairs for public access
|
||||
*/
|
||||
public function getPublicContent(): JsonResponse
|
||||
{
|
||||
try {
|
||||
$content = PageContent::all()->pluck('value', 'key');
|
||||
return response()->json($content);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'message' => 'Pagina-inhoud ophalen mislukt',
|
||||
'error' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
||||
use App\Models\ServiceRequest;
|
||||
use App\Models\Setting;
|
||||
use App\Models\Communication;
|
||||
use App\Mail\ServiceRequestNotification;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
@@ -277,10 +278,11 @@ class ServiceRequestController extends Controller
|
||||
{
|
||||
try {
|
||||
$adminEmail = Setting::getValue('admin_notification_email');
|
||||
|
||||
|
||||
if ($adminEmail) {
|
||||
// TODO: Implement actual email sending logic
|
||||
// For now, we'll just log it
|
||||
// Send email to admin
|
||||
Mail::to($adminEmail)->send(new ServiceRequestNotification($serviceRequest));
|
||||
|
||||
Log::info('Notificatie e-mail verzonden naar beheerder', [
|
||||
'service_request_id' => $serviceRequest->id,
|
||||
'admin_email' => $adminEmail,
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace App\Mail;
|
||||
|
||||
use App\Models\ServiceRequest;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Mail\Mailable;
|
||||
use Illuminate\Mail\Mailables\Content;
|
||||
use Illuminate\Mail\Mailables\Envelope;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class ServiceRequestNotification extends Mailable
|
||||
{
|
||||
use Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Create a new message instance.
|
||||
*/
|
||||
public function __construct(
|
||||
public ServiceRequest $serviceRequest
|
||||
) {
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the message envelope.
|
||||
*/
|
||||
public function envelope(): Envelope
|
||||
{
|
||||
return new Envelope(
|
||||
subject: 'Nieuwe Service Aanvraag - ' . $this->serviceRequest->name,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the message content definition.
|
||||
*/
|
||||
public function content(): Content
|
||||
{
|
||||
return new Content(
|
||||
view: 'emails.service-request-notification',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the attachments for the message.
|
||||
*
|
||||
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
|
||||
*/
|
||||
public function attachments(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class PageContent extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'page_content';
|
||||
|
||||
protected $fillable = [
|
||||
'key',
|
||||
'value',
|
||||
'description',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'created_at' => 'datetime',
|
||||
'updated_at' => 'datetime',
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user