Impment webcron and internal scheduling methods and change settings to a key value store

This commit is contained in:
2025-12-03 14:23:03 +01:00
parent e37a14993d
commit 53acdb40b7
12 changed files with 222 additions and 90 deletions
+15 -7
View File
@@ -9,19 +9,27 @@ class SettingController extends Controller
{
public function index()
{
return Setting::firstOrCreate([]);
return response()->json(Setting::allKeyValue());
}
public function update(Request $request)
{
$validatedData = $request->validate([
'invoice_number_format' => 'required|string',
'invoice_number_start' => 'required|integer',
// Batch: {"settings": {"invoice_number_start": 2, "foo": "bar"}}
if ($request->has('settings') && is_array($request->input('settings'))) {
foreach ($request->input('settings') as $k => $v) {
Setting::updateOrCreate(['key' => $k], ['value' => is_scalar($v) ? (string)$v : json_encode($v)]);
}
return response()->json(Setting::allKeyValue());
}
// Single: {"key":"invoice_number_start","value":2}
$validated = $request->validate([
'key' => 'required|string',
'value' => 'nullable',
]);
$setting = Setting::firstOrCreate([]);
$setting->update($validatedData);
Setting::updateOrCreate(['key' => $validated['key']], ['value' => isset($validated['value']) && !is_scalar($validated['value']) ? json_encode($validated['value']) : (string)($validated['value'] ?? null)]);
return response()->json($setting, 200);
return response()->json(Setting::allKeyValue());
}
}