Files
2026-04-15 15:23:57 +07:00

270 lines
10 KiB
PHP

<?php
class Sender extends MY_Controller
{
var $db_smartone;
public function index()
{
echo "Doctor API";
}
public function __construct()
{
parent::__construct();
$this->db_smartone = $this->load->database("onedev", true);
}
function _add_address(&$doc) {
if (count($doc) == "0") {
return;
}
$doc_ids = "-1";
foreach($doc as $idx => $d ) {
$doc_ids .= "," . $d["M_DoctorID"];
$doc[$idx]["address"] = array();
}
$sql = "select M_DoctorAddressID,M_DoctorAddressM_DoctorID,
M_DoctorAddressDesc
from
m_doctoraddress
where
M_DoctorAddressM_DoctorID in ( $doc_ids )
and M_DoctorAddressIsActive = 'Y'";
$query = $this->db_smartone->query($sql);
if ($query) {
$rows = $query->result_array();
foreach($rows as $r) {
$doctorID= $r["M_DoctorAddressM_DoctorID"];
foreach($doc as $idx => $d) {
if($d["M_DoctorID"] == $doctorID) {
$doc[$idx]["address"][] = $r;
}
}
}
} else {
$this->sys_error_db("m_doctoraddress ", $this->db_smartone);
exit;
}
}
public function search_pj() {
//sipe : M_DoctorPjIsDefault diganti ke M_DoctorPjIsDefaultPJ
$sql = "select M_DoctorID,
CONCAT(M_DoctorPrefix, M_DoctorPrefix2,' ',M_DoctorName,' ',M_DoctorSufix, M_DoctorSufix2, M_DoctorSufix3) M_DoctorName,
M_DoctorPjIsDefaultPj M_DoctorIsDefaultPJ
from m_doctor
join m_doctorpj on M_DoctorPJM_DoctorID = M_DoctorID and M_DoctorPjIsactive = 'Y'
and M_DoctorPjIsPJ = 'Y'
where M_DoctorIsActive = 'Y' and
( M_DoctorPJID is not null ) ";
$query = $this->db_smartone->query($sql, array("%$search%"));
$rows = $query->result_array();
$result = array("total" => count($rows) , "records" => $rows);
$this->sys_ok($result);
exit;
}
public function get_doctoraddress() {
$prm = $this->sys_input;
$id = $prm['id'];
$sql = "select M_DoctorAddressID,
M_DoctorAddressM_DoctorID,
M_DoctorAddressNote,
M_DoctorAddressDescription,
CONCAT(M_DoctorAddressDescription, ' :',M_DoctorAddressNote) as description
from
m_doctoraddress
where
M_DoctorAddressM_DoctorID = $id
and M_DoctorAddressIsActive = 'Y'
ORDER BY M_DoctorAddressDeliveryDefault DESC";
$query = $this->db_smartone->query($sql);
$rows = $query->result_array();
$result = array("total" => count($rows) , "records" => $rows);
$this->sys_ok($result);
exit;
}
public function get_queueid() {
$prm = $this->sys_input;
$id = $prm['id'];
$sql = "select queueID as id FROM antrione.queue
WHERE queueServiceID = 7 AND queueNumber = '{$id}'";
$query = $this->db_smartone->query($sql);
$rows = $query->result_array();
$result = array("total" => count($rows) , "records" => $rows);
$this->sys_ok($result);
exit;
}
public function search()
{
$prm = $this->sys_input;
$max_rst = 12;
$tot_count =0;
$q = [
'search' => '%'
];
if ($prm['search'] != '')
{
$q['search'] = "%{$prm['search']}%";
}
// QUERY TOTAL
$sql = "select M_DoctorID, M_DoctorIsDefault, IF(M_DoctorPJID IS NULL, 'Y', 'N') M_DoctorIsPJ,
CONCAT('[ ',M_DoctorCode,' ] ',M_DoctorPrefix, M_DoctorPrefix2,' ',M_DoctorName,' ',M_DoctorSufix, M_DoctorSufix2, M_DoctorSufix3) as M_DoctorName, fn_fo_delivery_code('DOCTOR', 'EMAIL', 0) as delivery_email_code,
IF(M_DoctorEmail IS NULL OR M_DoctorEmail = '', 'N', M_DoctorEmailIsDefault) email_default,
IFNULL( concat('[', group_concat(JSON_OBJECT('description',M_DoctorAddressNote,'M_DoctorAddressNote',M_DoctorAddressNote,'M_DoctorAddressDescription', M_DoctorAddressDescription, 'M_DoctorAddressID', M_DoctorAddressID, 'delivery_default', M_DoctorAddressDeliveryDefault, 'delivery_code', fn_fo_delivery_code('DOCTOR', 'ADDRESS', M_DoctorAddressID)) SEPARATOR ','), ']'), '[]') as address,
M_DoctorNote
from m_doctor
join m_doctoraddress on M_DoctorAddressIsActive = 'Y'
and M_DoctorAddressM_DoctorID = M_DoctorID
left join m_doctorpj on M_DoctorPJM_DoctorID = M_DoctorID and M_DoctorPjIsactive = 'Y'
where M_DoctorIsActive = 'Y'
and CONCAT('[ ',M_DoctorCode,' ] ',M_DoctorPrefix, M_DoctorPrefix2,' ',M_DoctorName,' ',M_DoctorSufix, M_DoctorSufix2, M_DoctorSufix3) like ?
group by M_DoctorID
limit 30";
$query = $this->db_smartone->query($sql, array($q['search']));
if ($query) {
$rows = $query->result_array();
foreach ($rows as $k => $v){
$rows[$k]['address'] = json_decode($v['address']);
foreach($rows[$k]['address'] as $k_a => $v_a){
$rows[$k]['address'][$k_a]->description = $rows[$k]['address'][$k_a]->M_DoctorAddressNote." : ".$rows[$k]['address'][$k_a]->M_DoctorAddressDescription;
}
}
$result = array("total" => $tot_count, "records" => $rows, "total_display" => sizeof($rows));
$this->sys_ok($result);
}
else {
$this->sys_error_db("m_doctor rows",$this->db_smartone);
exit;
}
}
public function search_()
{
$prm = $this->sys_input;
$search = $prm["search"];
$sql = "select count(*) total
from
m_doctor
join (
select distinct M_DoctorAddressM_DoctorID
from m_doctoraddress
where M_DoctorAddressIsActive = 'Y'
) ma on M_DoctorID = M_DoctorAddressM_DoctorID
where M_DoctorIsActive = 'Y' and M_DoctorName like ? ";
$query = $this->db_smartone->query($sql, array("%$search%"));
$tot_count =0;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
} else {
$this->sys_error_db("m_patient count", $this->db_smartone);
exit;
}
$sql = "select M_DoctorID,M_DoctorName
from
m_doctor
join (
select distinct M_DoctorAddressM_DoctorID
from m_doctoraddress
where M_DoctorAddressIsActive = 'Y'
) ma on M_DoctorID = M_DoctorAddressM_DoctorID
where M_DoctorIsActive = 'Y' and M_DoctorName like ?
limit 0,10";
$query = $this->db_smartone->query($sql, array("%$search%"));
$rows = $query->result_array();
$this->_add_address($rows);
$result = array("total" => $tot_count, "records" => $rows);
$this->sys_ok($result);
exit;
}
public function save()
{
$prm = $this->sys_input;
$prm = $prm['data'];
$q = [
'name' => isset($prm['name']) ? $prm['name'] : '',
'prefix1' => isset($prm['prefix1']) ? $prm['prefix1'] : '',
'prefix2' => isset($prm['prefix2']) ? $prm['prefix2'] : '',
'sufix1' => isset($prm['sufix1']) ? $prm['sufix1'] : '',
'sufix2' => isset($prm['sufix2']) ? $prm['sufix2'] : '',
'sufix3' => isset($prm['sufix3']) ? $prm['sufix3'] : '',
'sex' => isset($prm['sex']) ? $prm['sex'] : '0',
'hp' => isset($prm['hp']) ? $prm['hp'] : '',
'note' => isset($prm['note']) ? $prm['note'] : '',
'address' => isset($prm['address']) ? $prm['address'] : '',
'province' => isset($prm['province']) ? $prm['province'] : '',
'city' => isset($prm['city']) ? $prm['city'] : '',
'district' => isset($prm['district']) ? $prm['district'] : '',
'village' => isset($prm['village']) ? $prm['village'] : ''
];
$sql = "INSERT INTO m_doctor(M_DoctorPrefix,
M_DoctorPrefix2,
M_DoctorName,
M_DoctorSufix,
M_DoctorSufix2,
M_DoctorSufix3,
M_DoctorM_SexID,
M_DoctorHP,
M_DoctorNote)
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
$query = $this->db_smartone->query($sql, [$q['prefix1'], $q['prefix2'], $q['name'], $q['sufix1'], $q['sufix2'], $q['sufix3'], $q['sex'], $q['hp'], $q['note']]);
if ($query)
{
$id = $this->db_smartone->insert_id();
$sql = "INSERT INTO m_doctoraddress(M_DoctorAddressM_DoctorID,
M_DoctorAddressNote,
M_DoctorAddressDescription,
M_DoctorAddressM_KelurahanID)
VALUES(?, 'Utama', ?, ?)";
$query = $this->db_smartone->query($sql, [$id, $q['address'], $q['village']]);
if ($query)
{
$result = $this->get_one($id);
$this->sys_ok($result);
exit;
}
}
$this->sys_error_db("DOCTOR SAVE", $this->db_smartone);
}
private function get_one($id)
{
$sql = "SELECT M_DoctorID, M_DoctorIsDefault, 'N' M_DoctorIsPJ,
fn_global_doctor_name(M_DoctorID) as M_DoctorName, M_DoctorName M_DoctorRealName,
IFNULL( concat('[', group_concat(JSON_OBJECT('M_DoctorAddressNote',M_DoctorAddressNote,'M_DoctorAddressDescription', M_DoctorAddressDescription, 'M_DoctorAddressID', M_DoctorAddressID) SEPARATOR ','), ']'), '[]') as address
FROM m_doctor
LEFT JOIN m_doctoraddress ON M_DoctorAddressM_DoctorID = M_DoctorID AND M_DoctorAddressIsActive = 'Y'
WHERE M_DoctorID = ?";
$query = $this->db_smartone->query($sql, $id);
if ($query)
{
$row = $query->result_array();
foreach ($row as $k => $v)
$row[$k]['address'] = json_decode($v['address']);
$result = array("total" => 1, "records" => $row, "total_display" => 1);
return $result;
}
return false;
}
}