2026-01-13 16:48:43 +07:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Controllers;
|
|
|
|
|
|
|
|
|
|
use App\Models\ValueSet\ValueSetDefModel;
|
2026-02-18 10:15:47 +07:00
|
|
|
use App\Traits\ResponseTrait;
|
2026-01-13 16:48:43 +07:00
|
|
|
|
|
|
|
|
class ValueSetDefController extends \CodeIgniter\Controller
|
|
|
|
|
{
|
|
|
|
|
use ResponseTrait;
|
|
|
|
|
|
|
|
|
|
protected $model;
|
|
|
|
|
|
|
|
|
|
public function __construct()
|
|
|
|
|
{
|
|
|
|
|
$this->model = new ValueSetDefModel();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function index()
|
|
|
|
|
{
|
|
|
|
|
$search = $this->request->getGet('search') ?? null;
|
|
|
|
|
$limit = (int) ($this->request->getGet('limit') ?? 100);
|
|
|
|
|
$page = (int) ($this->request->getGet('page') ?? 1);
|
|
|
|
|
$offset = ($page - 1) * $limit;
|
|
|
|
|
|
|
|
|
|
$rows = $this->model->getValueSetDefs($search);
|
|
|
|
|
|
|
|
|
|
$paged = array_slice($rows, $offset, $limit);
|
|
|
|
|
|
|
|
|
|
return $this->respond([
|
|
|
|
|
'status' => 'success',
|
|
|
|
|
'data' => $paged,
|
|
|
|
|
'meta' => [
|
|
|
|
|
'total' => count($rows),
|
|
|
|
|
'page' => $page,
|
|
|
|
|
'limit' => $limit
|
|
|
|
|
]
|
|
|
|
|
], 200);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function show($id = null)
|
|
|
|
|
{
|
|
|
|
|
$row = $this->model->find($id);
|
|
|
|
|
if (!$row) {
|
|
|
|
|
return $this->failNotFound("ValueSet definition not found: $id");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$itemCount = $this->model->db->table('valueset')
|
|
|
|
|
->select('COUNT(*) as ItemCount')
|
|
|
|
|
->where('VSetID', $id)
|
|
|
|
|
->where('EndDate IS NULL')
|
|
|
|
|
->get()
|
|
|
|
|
->getRowArray()['ItemCount'] ?? 0;
|
|
|
|
|
|
|
|
|
|
$row['ItemCount'] = (int) $itemCount;
|
|
|
|
|
|
|
|
|
|
return $this->respond([
|
|
|
|
|
'status' => 'success',
|
|
|
|
|
'data' => $row
|
|
|
|
|
], 200);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function create()
|
|
|
|
|
{
|
|
|
|
|
$input = $this->request->getJSON(true);
|
|
|
|
|
if (!$input) {
|
|
|
|
|
return $this->failValidationErrors(['Invalid JSON input']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$data = [
|
|
|
|
|
'SiteID' => $input['SiteID'] ?? 1,
|
|
|
|
|
'VSName' => $input['VSName'] ?? '',
|
|
|
|
|
'VSDesc' => $input['VSDesc'] ?? ''
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
$id = $this->model->insert($data, true);
|
|
|
|
|
if (!$id) {
|
|
|
|
|
return $this->failValidationErrors($this->model->errors());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$newRow = $this->model->find($id);
|
|
|
|
|
return $this->respondCreated([
|
|
|
|
|
'status' => 'success',
|
|
|
|
|
'message' => 'ValueSet definition created',
|
|
|
|
|
'data' => $newRow
|
|
|
|
|
]);
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
return $this->failServerError('Failed to create: ' . $e->getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function update($id = null)
|
|
|
|
|
{
|
|
|
|
|
$input = $this->request->getJSON(true);
|
|
|
|
|
if (!$input) {
|
|
|
|
|
return $this->failValidationErrors(['Invalid JSON input']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$existing = $this->model->find($id);
|
|
|
|
|
if (!$existing) {
|
|
|
|
|
return $this->failNotFound("ValueSet definition not found: $id");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$data = [];
|
|
|
|
|
if (isset($input['VSName'])) $data['VSName'] = $input['VSName'];
|
|
|
|
|
if (isset($input['VSDesc'])) $data['VSDesc'] = $input['VSDesc'];
|
|
|
|
|
if (isset($input['SiteID'])) $data['SiteID'] = $input['SiteID'];
|
|
|
|
|
|
|
|
|
|
if (empty($data)) {
|
|
|
|
|
return $this->respond([
|
|
|
|
|
'status' => 'success',
|
|
|
|
|
'message' => 'No changes to update',
|
|
|
|
|
'data' => $existing
|
|
|
|
|
], 200);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
$updated = $this->model->update($id, $data);
|
|
|
|
|
if (!$updated) {
|
|
|
|
|
return $this->failValidationErrors($this->model->errors());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$newRow = $this->model->find($id);
|
|
|
|
|
return $this->respond([
|
|
|
|
|
'status' => 'success',
|
|
|
|
|
'message' => 'ValueSet definition updated',
|
|
|
|
|
'data' => $newRow
|
|
|
|
|
], 200);
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
return $this->failServerError('Failed to update: ' . $e->getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function delete($id = null)
|
|
|
|
|
{
|
|
|
|
|
$existing = $this->model->find($id);
|
|
|
|
|
if (!$existing) {
|
|
|
|
|
return $this->failNotFound("ValueSet definition not found: $id");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
$this->model->delete($id);
|
|
|
|
|
return $this->respond([
|
|
|
|
|
'status' => 'success',
|
|
|
|
|
'message' => 'ValueSet definition deleted'
|
|
|
|
|
], 200);
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
return $this->failServerError('Failed to delete: ' . $e->getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|