Files
2026-05-16 13:44:12 -04:00

97 lines
3.0 KiB
PHP
Executable File

<?php
namespace App\Controllers\View;
use App\Models\ConfigurationModel;
use CodeIgniter\Controller;
class ConfigurationController extends Controller
{
protected $configModel;
public function __construct()
{
$this->configModel = new ConfigurationModel();
}
// Method to load configuration management page
public function index()
{
helper('url');
return view('configuration/configuration_view', [
'configEndpoint' => site_url('api/configuration'),
]);
}
public function addConfig()
{
// Retrieve POST data
$configKey = $this->request->getPost('config_key');
$configValue = $this->request->getPost('config_value');
// Validate inputs (optional)
if ($configKey && $configValue) {
// Save to the database
$this->configModel->save([
'config_key' => $configKey,
'config_value' => $configValue,
]);
// Redirect to the configuration view page
return redirect()->to('/configuration/configuration_view')->with('success', 'Configuration added.');
}
// If validation fails, reload the form with input
return redirect()->back()->withInput()->with('error', 'Please fill in all required fields.');
}
// Method to edit an existing configuration
public function editConfig($id)
{
$config = $this->configModel->find($id);
if (strtolower($this->request->getMethod()) === 'post') {
$key = trim((string) $this->request->getPost('config_key'));
$value = trim((string) $this->request->getPost('config_value'));
$this->configModel->update($id, [
'config_key' => $key,
'config_value' => $value
]);
return redirect()->to('/configuration/configuration_view')->with('success', 'Configuration updated.');
}
return view('configuration/configuration_edit', ['config' => $config]);
}
public function deleteConfig($id)
{
if ($this->configModel->find($id)) {
$this->configModel->delete($id);
return redirect()->to('/configuration/configuration_view')->with('success', 'Configuration deleted successfully.');
}
return redirect()->to('/configuration/configuration_view')->with('error', 'Configuration not found.');
}
public function listData()
{
$rows = $this->configModel
->orderBy('id', 'ASC')
->findAll();
$configs = array_map(static function ($row) {
if (!is_array($row)) {
return [];
}
return [
'id' => (int) ($row['id'] ?? 0),
'config_key' => (string) ($row['config_key'] ?? ''),
'config_value' => (string) ($row['config_value'] ?? ''),
];
}, $rows ?? []);
return $this->response->setJSON(['configs' => $configs]);
}
}