add dict chapters, fix dict test

This commit is contained in:
mahdahar 2024-12-07 13:35:34 +07:00
parent 532316aa76
commit 4648370363
6 changed files with 209 additions and 4 deletions

View File

@ -51,12 +51,17 @@ $routes->POST('api/dictTests/save', 'API_DictTests::save');
$routes->get('api/dictTests/index', 'API_DictTests::index');
$routes->get('api/dictTests/detail/(:any)', 'API_DictTests::detail/$1');
// API - DictTests
// API - DictMappings
$routes->get('api/dictMappings/index', 'API_DictMappings::index');
$routes->POST('api/dictMappings/saveSingle', 'API_DictMappings::saveSingle');
$routes->POST('api/dictMappings/saveProfile', 'API_DictMappings::saveProfile');
$routes->get('api/dictMappings/detail/(:any)', 'API_DictMappings::detail/$1');
// API - DictChapters
$routes->get('api/dictChapters/index', 'API_DictChapters::index');
$routes->POST('api/dictChapters/save', 'API_DictChapters::save');
$routes->get('api/dictChapters/detail/(:any)', 'API_DictChapters::detail/$1');
// admin
$routes->group('admin', ['filter' => 'role:admin'], static function ($routes) {
$routes->get('', 'AdminController::index');
@ -64,6 +69,7 @@ $routes->group('admin', ['filter' => 'role:admin'], static function ($routes) {
$routes->get('userroles/', 'AdminController::userroles_index');
$routes->get('users/', 'AdminController::users_index');
$routes->get('dictTests/', 'AdminController::dictTests_index');
$routes->get('dictChapters/', 'AdminController::dictChapters_index');
$routes->get('dictMappings/', 'AdminController::dictMappings_index');
});

View File

@ -0,0 +1,57 @@
<?php
namespace App\Controllers;
use CodeIgniter\RESTful\ResourceController;
class API_DictChapters extends ResourceController {
protected $format = 'json';
public function index() {
$db = \Config\Database::connect();
$sql = "select dc.CHAPCODE, dc.SHORTTEXT, cdc.TEXT1, cdc.TEXT2 from DICT_CHAPTERS dc
left join cmod.dbo.CM_DICT_CHAPTERS cdc on dc.CHAPCODE=cdc.CHAPCODE";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['dictChapters'] = $results;
return $this->respond($data, 200);
}
public function detail($chapcode) {
$data = array();
$db = \Config\Database::connect();
$sql = "select dc.CHAPCODE, dc.SHORTTEXT, cdc.TEXT1, cdc.TEXT2 from DICT_CHAPTERS dc
left join cmod.dbo.CM_DICT_CHAPTERS cdc on dc.CHAPCODE=cdc.CHAPCODE
where dc.CHAPCODE='$chapcode'";
$query = $db->query($sql);
$results = $query->getResultArray();
if(isset($results[0])) { $data = $results[0]; }
return $this->respond($data, 200);
}
public function save() {
$chapcode = $this->request->getPost('chapcode');
$text1 = $this->request->getPost('text1');
$text2 = $this->request->getPost('text2');
$db = \Config\Database::connect();
$sql = "MERGE INTO cmod.dbo.CM_DICT_CHAPTERS AS t
USING ( VALUES ('$chapcode', '$text1', '$text2')
) AS s (CHAPCODE, TEXT1, TEXT2) on t.CHAPCODE=s.CHAPCODE
WHEN NOT MATCHED BY TARGET THEN
INSERT (CHAPCODE, TEXT1, TEXT2)
VALUES (s.CHAPCODE, s.TEXT1, s.TEXT2)
WHEN MATCHED THEN
UPDATE set TEXT1=s.TEXT1, TEXT2=s.TEXT2;";
//echo "<pre>$sql</pre>";
if( $db->query($sql) ) {
return $this->respond(['message' => 'Save Success'],201);
} else {
$response = [
'errors' => $db->errors(),
'message' => 'Invalid Inputs'
];
return $this->fail($response , 409);
}
}
}

View File

@ -61,8 +61,14 @@ class API_DictTests extends ResourceController {
$refftext = $this->request->getPost('refftext');
$db = \Config\Database::connect();
$sql = "INSERT INTO cmod.dbo.CM_DICT_TESTS (TESTCODE, TEXT1, TEXT2, REFFTEXT, LOGDATE ) VALUES ('$testcode', '$text1', '$text2', '$refftext' GETDATE())";
$sql = "UPDATE cmod.dbo.CM_DICT_TESTS set TEXT1='$text1', TEXT2='$text2', REFFTEXT='$refftext', LOGDATE=GETDATE() where TESTCODE='$testcode'";
$sql = "MERGE INTO cmod.dbo.CM_DICT_TESTS AS t
USING ( VALUES ('$testcode', '$text1', '$text2', '$unit', '$refftext')
) AS s (TESTCODE, TEXT1, TEXT2, UNIT, REFFTEXT) on t.TESTCODE=s.TESTCODE
WHEN NOT MATCHED BY TARGET THEN
INSERT (TESTCODE, TEXT1, TEXT2, UNIT, REFFTEXT, LOGDATE)
VALUES (s.TESTCODE, s.TEXT1, s.TEXT2, s.UNIT, s.REFFTEXT, GETDATE())
WHEN MATCHED THEN
UPDATE set TEXT1=s.TEXT1, TEXT2=s.TEXT2, UNIT=s.UNIT, REFFTEXT=s.REFFTEXT;";
if( $db->query($sql) ) {
return $this->respond(['message' => 'Save Success'],201);

View File

@ -59,6 +59,10 @@ class AdminController extends BaseController {
return view('admin/dictTests_index');
}
public function dictChapters_index() {
return view('admin/dictChapters_index');
}
public function dictMappings_index() {
$db = \Config\Database::connect();
$sql = "select TESTCODE from DICT_TESTS where ENDVALIDDATE is null";

View File

@ -0,0 +1,131 @@
<?= $this->extend('admin/layout/main.php') ?>
<?= $this->section('content') ?>
<div class="card border-0 m-1">
<div class="card-body">
<div class='card-title'>Dictionary Chapters</div>
<div class="table-responsive">
<table id="myTable" class="table">
<thead>
<tr>
<th>Chapter code</th>
<th>Shorttext</th>
<th>Text</th>
<th>Action</th>
</tr>
</thead>
<tbody id='table-body'>
</tbody>
</table>
</div>
</div>
</div>
<div class="modal fade" id="modal_crud" aria-hidden="true" tabindex="-1">
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="exampleModalToggleLabel">Edit Chapter</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" ></button>
</div>
<div class="modal-body" style='background-color:#F4F6FF'>
<div class="row">
<div class="col-12">
<table class="table table-sm table-borderless">
<tr class="align-middle"> <th>Chaptercode</th> <th>:</th> <td id='chapcode'></td> </tr>
<tr class="align-middle"> <th>Shorttext</th> <th>:</th> <td id='chaptext'></td> </tr>
<tr class="align-middle"> <th>Text 1</th> <th>:</th> <td><textarea class='form-control' id='text1'/></textarea></td> </tr>
<tr class="align-middle"> <th>Text 2</th> <th>:</th> <td><textarea class='form-control' id='text2'/></textarea></td> </tr>
</table>
<button class='btn btn-sm btn-primary' onclick='save()'>Save</button>
<button class='btn btn-sm btn-secondary' data-bs-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('script') ?>
<script>
index();
function index() {
let url = '<?=base_url('');?>api/dictChapters/index';
$.ajax({
url: url,
method: 'GET',
success: function(response) {
$("#myTable").DataTable().destroy();
$("#table-body").html("");
var data = response['dictChapters'];
for (var i = 0; i < data.length; i++) {
chapcode = data[i].CHAPCODE;
shorttext = data[i].SHORTTEXT;
text1 = '';
text2 = '';
if(data[i].TEXT1 != null) { text1 = data[i].TEXT1; }
if(data[i].TEXT2 != null) { text2 = data[i].TEXT2; }
let editBtn = '<button class="btn btn-sm btn-success" ' + ' onclick="edit(\'' + chapcode + '\')">Edit' + '</button> ';
let datarow = '<tr class="align-middle">' +
'<td>' + chapcode + '</td>' + '<td>' + shorttext + '</td> <td> <pre class="m-0">' + text1 + '<hr/>' + text2 + '</pre> </td>' +
'<td>' + editBtn + '</td>' +
'</tr>';
$("#table-body").append(datarow);
}
$("#myTable").DataTable({
"pageLength" : 25,
});
},
error: function(response) { console.log(response.responseJSON); }
});
}
function edit(chapcode) {
let url = '<?=base_url('');?>api/dictChapters/detail/'+chapcode;
$("#chapcode").html('');
$("#chaptext").html('');
$.ajax({
url: url,
method: "GET",
success: function(response) {
let data = response;
$("#chapcode").html(data.CHAPCODE);
$("#chaptext").html(data.SHORTTEXT);
$("#text1").val(data.TEXT1);
$("#text2").val(data.TEXT2);
$("#modal_crud").modal('show');
},
error: function(response) {
console.log(response.responseJSON)
}
});
}
function save() {
let url = '<?=base_url('');?>api/dictChapters/save';
var chapcode = $("#chapcode").html();
var text1 = $("#text1").val();
var text2 = $("#text2").val();
let data = { chapcode: chapcode, text1:text1, text2:text2 };
$.ajax({
url: url,
method: "POST",
data: data,
success: function(response) {
$("#chapcode").val('');
$("#text1").val('');
$("#text2").val('');
$("#modal_crud").modal('hide');
index();
},
error: function(response) {
console.log(response.responseJSON)
}
});
}
</script>
<?= $this->endSection() ?>

View File

@ -7,7 +7,8 @@
<a class="nav-link" href="<?=base_url();?>changePass/"><div class="sb-nav-link-icon"><i class="bi bi-key"></i></div>Change Password</a>
<div class="sb-sidenav-menu-heading">Administration</div>
<a class="nav-link" href="<?=base_url();?>admin/dictMappings/"> <div class="sb-nav-link-icon"><i class="bi bi-diagram-2"></i></div> Dict. Mapping Order </a>
<a class="nav-link" href="<?=base_url();?>admin/dictTests/"> <div class="sb-nav-link-icon"><i class="bi bi-journal-album"></i></div> Dict. Test </a>
<a class="nav-link" href="<?=base_url();?>admin/dictChapters/"> <div class="sb-nav-link-icon"><i class="bi bi-journal-medical"></i></div> Dict. Chapter</a>
<a class="nav-link" href="<?=base_url();?>admin/dictTests/"> <div class="sb-nav-link-icon"><i class="bi bi-file-medical"></i></div> Dict. Test </a>
<a class="nav-link" href="<?=base_url();?>admin/users/"> <div class="sb-nav-link-icon"><i class="bi bi-person-circle"></i></div> Users </a>
<a class="nav-link" href="<?=base_url();?>admin/userroles/"> <div class="sb-nav-link-icon"><i class="bi bi-person-lock"></i></div> User Roles </a>
</div>