fedi-feed-router/app/Http/Controllers/Api/V1/SettingsController.php

71 lines
2.4 KiB
PHP
Raw Normal View History

2025-08-02 15:20:09 +02:00
<?php
namespace App\Http\Controllers\Api\V1;
use App\Models\Setting;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;
class SettingsController extends BaseController
{
/**
* Display current settings
*/
public function index(): JsonResponse
{
try {
$settings = [
'article_processing_enabled' => Setting::isArticleProcessingEnabled(),
'publishing_approvals_enabled' => Setting::isPublishingApprovalsEnabled(),
'article_publishing_interval' => Setting::getArticlePublishingInterval(),
2025-08-02 15:20:09 +02:00
];
return $this->sendResponse($settings, 'Settings retrieved successfully.');
} catch (\Exception $e) {
return $this->sendError('Failed to retrieve settings: ' . $e->getMessage(), [], 500);
}
}
/**
* Update settings
*/
public function update(Request $request): JsonResponse
{
try {
$validated = $request->validate([
'article_processing_enabled' => 'boolean',
'publishing_approvals_enabled' => 'boolean',
'article_publishing_interval' => 'integer|min:0',
2025-08-02 15:20:09 +02:00
]);
if (isset($validated['article_processing_enabled'])) {
Setting::setArticleProcessingEnabled($validated['article_processing_enabled']);
}
if (isset($validated['publishing_approvals_enabled'])) {
Setting::setPublishingApprovalsEnabled($validated['publishing_approvals_enabled']);
2025-08-02 15:20:09 +02:00
}
if (isset($validated['article_publishing_interval'])) {
Setting::setArticlePublishingInterval($validated['article_publishing_interval']);
}
2025-08-02 15:20:09 +02:00
$updatedSettings = [
'article_processing_enabled' => Setting::isArticleProcessingEnabled(),
'publishing_approvals_enabled' => Setting::isPublishingApprovalsEnabled(),
'article_publishing_interval' => Setting::getArticlePublishingInterval(),
2025-08-02 15:20:09 +02:00
];
return $this->sendResponse(
$updatedSettings,
'Settings updated successfully.'
);
} catch (ValidationException $e) {
return $this->sendValidationError($e->errors());
} catch (\Exception $e) {
return $this->sendError('Failed to update settings: ' . $e->getMessage(), [], 500);
}
}
}