fix(discharge-template): make delete endpoint reliable for URL and AJAX
This commit is contained in:
parent
a169ab174b
commit
f341e8e76e
|
|
@ -864,7 +864,7 @@ $routes->get('Lab_Admin/pathology_bridge_debug', 'Setting\Template::pathologyBri
|
||||||
|
|
||||||
$routes->match(['get', 'post'], 'setting/template/discharge_templates', 'Setting\Template::discharge_templates');
|
$routes->match(['get', 'post'], 'setting/template/discharge_templates', 'Setting\Template::discharge_templates');
|
||||||
$routes->get('setting/template/discharge_template_get/(:num)', 'Setting\Template::discharge_template_get/$1');
|
$routes->get('setting/template/discharge_template_get/(:num)', 'Setting\Template::discharge_template_get/$1');
|
||||||
$routes->get('setting/template/discharge_templates/delete/(:num)', 'Setting\Template::discharge_template_delete/$1');
|
$routes->match(['get', 'post'], 'setting/template/discharge_templates/delete/(:num)', 'Setting\Template::discharge_template_delete/$1');
|
||||||
$routes->match(['get', 'post'], 'setting/template/ipd_document_templates', 'Setting\Template::ipd_document_templates');
|
$routes->match(['get', 'post'], 'setting/template/ipd_document_templates', 'Setting\Template::ipd_document_templates');
|
||||||
$routes->get('setting/template/ipd_document_templates/delete/(:num)', 'Setting\Template::ipd_document_template_delete/$1');
|
$routes->get('setting/template/ipd_document_templates/delete/(:num)', 'Setting\Template::ipd_document_template_delete/$1');
|
||||||
$routes->match(['get', 'post'], 'setting/template/diagnosis_print_settings', 'Setting\Template::diagnosis_print_settings');
|
$routes->match(['get', 'post'], 'setting/template/diagnosis_print_settings', 'Setting\Template::diagnosis_print_settings');
|
||||||
|
|
|
||||||
|
|
@ -2976,14 +2976,51 @@ HTML;
|
||||||
|
|
||||||
$id = (int) $id;
|
$id = (int) $id;
|
||||||
$ok = false;
|
$ok = false;
|
||||||
|
$message = 'Unable to delete template.';
|
||||||
if ($id > 0 && $this->db->tableExists('ipd_discharge_templates')) {
|
if ($id > 0 && $this->db->tableExists('ipd_discharge_templates')) {
|
||||||
$ok = (bool) $this->db->table('ipd_discharge_templates')->where('id', $id)->delete();
|
$row = $this->db->table('ipd_discharge_templates')
|
||||||
|
->where('id', $id)
|
||||||
|
->get(1)
|
||||||
|
->getRowArray() ?? [];
|
||||||
|
|
||||||
|
if (! empty($row)) {
|
||||||
|
$ok = (bool) $this->db->table('ipd_discharge_templates')->where('id', $id)->delete();
|
||||||
|
|
||||||
|
if (! $ok) {
|
||||||
|
// Some legacy/live schemas may reject delete via engine constraints; archive instead.
|
||||||
|
$ok = (bool) $this->db->table('ipd_discharge_templates')
|
||||||
|
->where('id', $id)
|
||||||
|
->update(['status' => 0, 'is_default' => 0]);
|
||||||
|
if ($ok) {
|
||||||
|
$message = 'Template archived.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($ok && (int) ($row['is_default'] ?? 0) === 1) {
|
||||||
|
$nextDefault = $this->db->table('ipd_discharge_templates')
|
||||||
|
->select('id')
|
||||||
|
->where('status', 1)
|
||||||
|
->orderBy('id', 'ASC')
|
||||||
|
->get(1)
|
||||||
|
->getRowArray();
|
||||||
|
|
||||||
|
if (! empty($nextDefault['id'])) {
|
||||||
|
$this->db->table('ipd_discharge_templates')
|
||||||
|
->where('id', (int) $nextDefault['id'])
|
||||||
|
->update(['is_default' => 1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($ok && $message === 'Unable to delete template.') {
|
||||||
|
$message = 'Template deleted.';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->request->isAJAX()) {
|
if ($this->request->isAJAX()) {
|
||||||
return $this->response->setJSON([
|
return $this->response->setJSON([
|
||||||
'update' => $ok ? 1 : 0,
|
'update' => $ok ? 1 : 0,
|
||||||
'error_text' => $ok ? 'Template deleted.' : 'Unable to delete template.',
|
'error_text' => $message,
|
||||||
'csrfName' => csrf_token(),
|
'csrfName' => csrf_token(),
|
||||||
'csrfHash' => csrf_hash(),
|
'csrfHash' => csrf_hash(),
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -564,6 +564,8 @@ $status = (int) ($edit['status'] ?? 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
fetch('<?= base_url('setting/template/discharge_templates/delete') ?>/' + id, {
|
fetch('<?= base_url('setting/template/discharge_templates/delete') ?>/' + id, {
|
||||||
|
method: 'POST',
|
||||||
|
body: new FormData(form),
|
||||||
headers: {
|
headers: {
|
||||||
'X-Requested-With': 'XMLHttpRequest'
|
'X-Requested-With': 'XMLHttpRequest'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user