add crud dictTubes

This commit is contained in:
mahdahar 2025-01-06 16:44:47 +07:00
parent da67dda940
commit 5d5a296f1f
5 changed files with 192 additions and 0 deletions

View File

@ -51,6 +51,11 @@ $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 - DictTubes
$routes->POST('api/dictTubes/save', 'API_DictTubes::save');
$routes->get('api/dictTubes/index', 'API_DictTubes::index');
$routes->get('api/dictTubes/detail/(:any)', 'API_DictTubes::detail/$1');
// API - DictMappings
$routes->get('api/dictMappings/index', 'API_DictMappings::index');
$routes->POST('api/dictMappings/saveSingle', 'API_DictMappings::saveSingle');
@ -90,6 +95,7 @@ $routes->group('admin', ['filter' => 'role:admin'], static function ($routes) {
$routes->get('dictTests/', 'AdminController::dictTests_index');
$routes->get('dictChapters/', 'AdminController::dictChapters_index');
$routes->get('dictMappings/', 'AdminController::dictMappings_index');
$routes->get('dictTubes/', 'AdminController::dictTubes_index');
});
// user

View File

@ -0,0 +1,50 @@
<?php
namespace App\Controllers;
use CodeIgniter\RESTful\ResourceController;
class API_DictTubes extends ResourceController {
protected $format = 'json';
public function index() {
$db = \Config\Database::connect();
$sql = "select * from cmod.dbo.CM_DICT_TUBES";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['dictTubes'] = $results;
return $this->respond($data, 200);
}
public function detail($tubeid) {
$data = array();
$db = \Config\Database::connect();
$sql = "select TUBECODE, TUBENAME from cmod.dbo.CM_DICT_TUBES where TUBEID='$tubeid'";
$query = $db->query($sql);
$results = $query->getResultArray();
if(isset($results[0])) { $data = $results[0]; }
return $this->respond($data, 200);
}
public function save() {
$tubecode = $this->request->getPost('tubecode');
$tubename = $this->request->getPost('tubename');
$tubeid = $this->request->getPost('tubeid');
$db = \Config\Database::connect();
if($tubeid == 0) {
$sql = "insert into cmod.dbo.CM_DICT_TUBES (TUBECODE, TUBENAME) VALUES ( '$tubecode', '$tubename' )";
} else {
$sql = "update cmod.dbo.CM_DICT_TUBES set TUBECODE='$tubecode', TUBENAME='$tubename' where TUBEID='$tubeid'";
}
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

@ -86,6 +86,10 @@ class AdminController extends BaseController {
return view('admin/dictChapters_index');
}
public function dictTubes_index() {
return view('admin/dictTubes_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-header bg-success text-white">
<div class='card-title m-0'><b>Dictionary Tubes</b></div>
</div>
<button class='btn btn-sm btn-success m-3' onclick="create()"><i class="bi bi-plus-circle"></i> Create</button>
<div class="table-responsive">
<table id="myTable" class="table">
<thead>
<tr>
<th>Tube code</th>
<th>Tube name</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 Tube</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">
<input type='hidden' id='tubeid' value='0' />
<tr class="align-middle"> <th>Tubecode</th> <th>:</th> <td><input class='form-control' type='text' id='tubecode' oninput='this.value = this.value.toUpperCase();' /></td> </tr>
<tr class="align-middle"> <th>Tubename</th> <th>:</th> <td><input class='form-control' type='text' id='tubename' /></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/dictTubes/index';
$.ajax({
url: url,
method: 'GET',
success: function(response) {
$("#table-body").html("");
var data = response['dictTubes'];
for (var i = 0; i < data.length; i++) {
tubeid = data[i].TUBEID;
tubecode = data[i].TUBECODE;
tubename = data[i].TUBENAME;
let editBtn = '<button class="btn btn-sm btn-success" ' + ' onclick="edit(\'' + tubeid + '\')">Edit' + '</button> ';
let datarow = '<tr class="align-middle">' +
'<td>' + tubecode + '</td>' + '<td>' + tubename+ '</td> ' + '<td>' + editBtn + '</td>' +
'</tr>';
$("#table-body").append(datarow);
}
},
error: function(response) { console.log(response.responseJSON); }
});
}
function create() {
$("#alertSingle").html();
$("#tubeid").val("0");
$("#tubecode").val("");
$("#tubename").val("");
$("#modal_crud").modal('show');
}
function edit(tubeid) {
let url = '<?=base_url('');?>api/dictTubes/detail/'+tubeid;
$.ajax({
url: url,
method: "GET",
success: function(response) {
let data = response;
$("#alert-div").html("");
$("#error-div").html("");
$("#tubeid").val(tubeid);
$("#tubecode").val(data.TUBECODE);
$("#tubename").val(data.TUBENAME);
$("#modal_crud").modal('show');
},
error: function(response) {
console.log(response.responseJSON)
}
});
}
function save() {
let url = '<?=base_url('');?>api/dictTubes/save';
var tubeid = $("#tubeid").val();
var tubecode = $("#tubecode").val();
var tubename = $("#tubename").val();
let data = { tubeid: tubeid, tubecode:tubecode, tubename:tubename };
$.ajax({
url: url,
method: "POST",
data: data,
success: function(response) {
$("#alert-div").html("");
$("#error-div").html("");
$("#tubeid").val('');
$("#tubecode").val('');
$("#tubename").val('');
$("#modal_crud").modal('hide');
index();
},
error: function(response) {
console.log(response.responseJSON)
}
});
}
</script>
<?= $this->endSection() ?>

View File

@ -11,6 +11,7 @@
<a class="nav-link" href="#" onclick='createOrder()'><div class="sb-nav-link-icon"><i class="bi bi-clipboard-plus"></i></div>Create Order</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/dictTubes/"> <div class="sb-nav-link-icon"><i class="bi bi-eyedropper"></i></div> Dict. Tubes </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>