Files
BE_CPONE/application/controllers/mockup/masterdata/Whatsappstatusv2.php
2026-04-27 10:31:17 +07:00

973 lines
37 KiB
PHP

<?php
class Whatsappstatusv2 extends MY_Controller
{
var $db_onedev;
public function index()
{
echo "Verify Doctor API";
}
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
}
public function search()
{
$prm = $this->sys_input;
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$nama = $prm["name"];
$date = $prm['date'];
$status = $prm["status"];
$grup = $prm["grup"];
/* $e = explode('+', $prm['name']);
if (isset($e[0]))
$nama = "%{$e[0]}%";
if (isset($e[1]))
$nohp = "%{$e[1]}%";
// echo $norm;
$sql_where = "";
$sql_param = array();
if ($nama != "") {
if ($sql_where != "") {
$sql_where .=" and ";
}
$sql_where .= " M_PatientName like ?";
$sql_param[] = "$nama";
//$prm['current_page'] = 1;
}
if ($sql_where != "") $sql_where .= " and ";
*/
// Order masih dalam status registrasi
if($grup == -1){
$sql_where .= " IFNULL(Tx_WhatsappIsSent,'N') = '{$status}' AND Tx_WhatsappGroup_ResultID = '{$grup}' AND T_OrderHeaderIsActive = 'Y' AND (date(T_OrderHeaderDate) = '{$date}' OR date(T_OrderDeliveryCreated) = '{$date}') AND date(T_OrderHeaderDate) > '2020-09-27'
AND (JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.patient_fullname')) LIKE CONCAT('%','{$nama}','%') OR T_OrderHeaderLabNumber LIKE CONCAT('%','{$nama}','%'))";
}else if($grup == 1){
$sql_where .= " IFNULL(Tx_WhatsappIsSent,'N') = '{$status}' AND IFNULL(Tx_WhatsappGroup_ResultID,1) >= '{$grup}' AND T_OrderHeaderIsActive = 'Y' AND (date(T_OrderHeaderDate) = '{$date}' OR date(T_OrderDeliveryCreated) = '{$date}') AND date(T_OrderHeaderDate) > '2020-09-27'
AND (JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.patient_fullname')) LIKE CONCAT('%','{$nama}','%') OR T_OrderHeaderLabNumber LIKE CONCAT('%','{$nama}','%'))";
}else{$sql_where .= " IFNULL(Tx_WhatsappIsSent,'N') = '{$status}' AND T_OrderHeaderIsActive = 'Y' AND (date(T_OrderHeaderDate) = '{$date}' OR date(T_OrderDeliveryCreated) = '{$date}') AND date(T_OrderHeaderDate) > '2020-09-27'
AND (JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.patient_fullname')) LIKE CONCAT('%','{$nama}','%') OR T_OrderHeaderLabNumber LIKE CONCAT('%','{$nama}','%'))";
}
if ($sql_where != "") {
$sql_where = " where $sql_where";
//$prm['current_page'] = 1;
}
$number_limit = 10;
$number_offset = ($prm['current_page'] - 1) * $number_limit ;
$sql = " SELECT count(*) as total
FROM
(SELECT T_OrderHeaderID FROM t_orderheader
JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
join t_orderdelivery on T_OrderHeaderID = T_OrderDeliveryT_OrderHeaderID and T_OrderDeliveryIsActive = 'Y' and T_OrderDeliveryM_DeliveryTypeID = 4
join m_delivery ON M_DeliveryID = T_OrderDeliveryM_DeliveryID
JOIN m_doctor ON T_OrderHeaderSenderM_DoctorID = M_DoctorID
join last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID AND Last_StatusPaymentIsActive = 'Y'
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
join group_resultdetail on Group_ResultDetailT_TestID = T_OrderDetailT_TestID
and T_OrderDetailIsActive = 'Y' and Group_ResultDetailIsActive = 'Y'
and T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
join group_result on Group_ResultDetailGroup_ResultID = Group_ResultID
LEFT JOIN tx_whatsapp ON Tx_WhatsappT_OrderHeaderID = T_OrderHeaderID AND Tx_WhatsappGroup_ResultID = Group_ResultID AND Tx_WhatsappM_DeliveryID = M_DeliveryID AND Tx_WhatsappIsActive = 'Y'
LEFT JOIN t_email_nonlab ON T_EmailNonLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_EmailNonLabType LIKE CONCAT('%',REPLACE(Group_ResultName, 'Elektromedik', 'electromedis'),'%')
JOIN t_orderpromise ON T_OrderPromiseT_OrderHeaderID = T_OrderHeaderID
JOIN result_processtooffice ON Result_ProcessToOfficeT_OrderPromiseID = T_OrderPromiseID AND
T_OrderDeliveryID = Result_ProcessToOfficeT_OrderDeliveryID AND Result_ProcessToOfficeStatus = 'S'
$sql_where
GROUP BY Group_ResultID,M_DeliveryID,T_OrderHeaderID
UNION
SELECT T_OrderHeaderID FROM t_orderheader
JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
join t_orderdelivery on T_OrderHeaderID = T_OrderDeliveryT_OrderHeaderID and T_OrderDeliveryIsActive = 'Y' and T_OrderDeliveryM_DeliveryTypeID = 4
join m_delivery ON M_DeliveryID = T_OrderDeliveryM_DeliveryID
JOIN m_doctor ON T_OrderHeaderSenderM_DoctorID = M_DoctorID
join last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID AND Last_StatusPaymentIsActive = 'Y'
LEFT JOIN tx_whatsapp ON Tx_WhatsappT_OrderHeaderID = T_OrderHeaderID AND Tx_WhatsappIsActive = 'Y'
$sql_where AND Tx_WhatsappGroup_ResultID = -1 AND Tx_WhatsappM_DeliveryID = -1
GROUP BY M_DeliveryID,T_OrderHeaderID) a
";
$query = $this->db_onedev->query($sql, $sql_param);
$tot_count = 0;
$tot_page = 0;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
$tot_page = ceil($tot_count/$number_limit);
} else {
$this->sys_error_db("t_orderheader count", $this->db_onedev);
exit;
}
$sql = "SELECT T_OrderHeaderID,
IFNULL(Tx_WhatsappGroup_ResultID,1) as Tx_WhatsappGroup_ResultID,
CONCAT(M_DoctorPrefix, ' ',M_DoctorName) as M_DoctorName,
JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.patient_fullname')) as M_PatientName,
T_OrderHeaderLabNumber,
IF(T_EmailNonLabUrl IS NULL AND Group_ResultFlagNonLab = 'Y',' [Belum Pilih Format Hasil]','') temail,
Group_ResultID,
GROUP_CONCAT(DISTINCT Group_ResultName SEPARATOR ' ,') as Group_ResultName,
IF(M_MouIsBill = 'Y','Sudah Lunas',if(ifnull(Last_StatusPaymentIsLunas,'N') = 'Y','Sudah Lunas','Belum Lunas')) as Last_StatusPaymentIsLunas,
IF(IFNULL(Tx_WhatsappIsSent,'N') = 'N','Pending','Terkirim') as wastatus,
IF(IF(Group_ResultFlagNonLab = 'Y','Y',T_OrderHeaderAddOnValidationDone) = 'N','Belum Selesai','Selesai') as validasi,
M_DeliveryName,
M_DeliverySource,
T_OrderDeliveryDestination,
CASE
WHEN M_DeliverySource = 'PATIENT' THEN IF(JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.M_PatientHP')) IS NULL OR JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.M_PatientHP')) = '' OR JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.M_PatientHP')) = 'null','---',JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.M_PatientHP')))
WHEN M_DeliverySource = 'DOCTOR' THEN IF(M_DoctorHP IS NULL OR M_DoctorHP = '' OR M_DoctorHP = 'null','---',M_DoctorHP)
END as hp,
Tx_WhatsappNote,
IF(SUM(IF(IFNULL(Tx_WhatsappDetailIsSend,'N') = 'N',0,1)) = 0,'N',IF(COUNT(Tx_WhatsappDetailID) = SUM(IF(Tx_WhatsappDetailIsSend = 'N',0,1)),'Y','P')) as K,
IF(SUM(IF(IFNULL(Tx_WhatsappDetailIsReceive,'N') = 'N',0,1)) = 0,'N',IF(COUNT(Tx_WhatsappDetailID) = SUM(IF(Tx_WhatsappDetailIsReceive = 'N',0,1)),'Y','P')) as T,
IF(SUM(IF(IFNULL(Tx_WhatsappDetailIsRead,'N') = 'N',0,1)) = 0,'N',IF(COUNT(Tx_WhatsappDetailID) = SUM(IF(Tx_WhatsappDetailIsRead = 'N',0,1)),'Y','P')) as B,
GROUP_CONCAT(DISTINCT Tx_WhatsappDetailMessage SEPARATOR ' ,') as statusprovider,
M_DeliveryID,
4 as M_DeliveryTypeID
FROM t_orderheader
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
join t_orderdelivery on T_OrderHeaderID = T_OrderDeliveryT_OrderHeaderID and T_OrderDeliveryIsActive = 'Y' and T_OrderDeliveryM_DeliveryTypeID = 4
join m_delivery ON M_DeliveryID = T_OrderDeliveryM_DeliveryID
JOIN m_doctor ON T_OrderHeaderSenderM_DoctorID = M_DoctorID
join last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID AND Last_StatusPaymentIsActive = 'Y'
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
join group_resultdetail on Group_ResultDetailT_TestID = T_OrderDetailT_TestID
and T_OrderDetailIsActive = 'Y' and Group_ResultDetailIsActive = 'Y'
and T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
join group_result on Group_ResultDetailGroup_ResultID = Group_ResultID
LEFT JOIN tx_whatsapp ON Tx_WhatsappT_OrderHeaderID = T_OrderHeaderID AND Tx_WhatsappGroup_ResultID = Group_ResultID AND Tx_WhatsappM_DeliveryID = M_DeliveryID AND Tx_WhatsappIsActive = 'Y'
LEFT JOIN t_email_nonlab ON T_EmailNonLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_EmailNonLabType LIKE CONCAT('%',REPLACE(Group_ResultName, 'Elektromedik', 'electromedis'),'%')
LEFT JOIN tx_whatsappdetail ON Tx_WhatsappDetailTx_WhatsappID = Tx_WhatsappID
JOIN t_orderpromise ON T_OrderPromiseT_OrderHeaderID = T_OrderHeaderID
JOIN result_processtooffice ON Result_ProcessToOfficeT_OrderPromiseID = T_OrderPromiseID AND
T_OrderDeliveryID = Result_ProcessToOfficeT_OrderDeliveryID AND Result_ProcessToOfficeStatus = 'S'
$sql_where
GROUP BY Group_ResultID,M_DeliveryID,T_OrderHeaderID
UNION
SELECT
T_OrderHeaderID,
IFNULL(Tx_WhatsappGroup_ResultID,1) as Tx_WhatsappGroup_ResultID,
CONCAT(M_DoctorPrefix, ' ',M_DoctorName) as M_DoctorName,
JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.patient_fullname')) as M_PatientName,
T_OrderHeaderLabNumber,
'' as temail,
0 as Group_ResultID,
'' as Group_ResultName,
IF(M_MouIsBill = 'Y','Sudah Lunas',if(ifnull(Last_StatusPaymentIsLunas,'N') = 'Y','Sudah Lunas','Belum Lunas')) as Last_StatusPaymentIsLunas,
IF(IFNULL(Tx_WhatsappIsSent,'N') = 'N','Pending','Terkirim') as wastatus,
'Greeting' as validasi,
M_DeliveryName,
M_DeliverySource,
T_OrderDeliveryDestination,
CASE
WHEN M_DeliverySource = 'PATIENT' THEN IF(JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.M_PatientHP')) IS NULL OR JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.M_PatientHP')) = '' OR JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.M_PatientHP')) = 'null','---',JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.M_PatientHP')))
WHEN M_DeliverySource = 'DOCTOR' THEN IF(M_DoctorHP IS NULL OR M_DoctorHP = '' OR M_DoctorHP = 'null','---',M_DoctorHP)
END as hp,
GROUP_CONCAT(DISTINCT Tx_WhatsappDetailMessage separator '\n') as Tx_WhatsappNote,
IF(SUM(IF(IFNULL(Tx_WhatsappDetailIsSend,'N') = 'N',0,1)) = 0,'N',IF(COUNT(Tx_WhatsappDetailID) = SUM(IF(Tx_WhatsappDetailIsSend = 'N',0,1)),'Y','P')) as K,
IF(SUM(IF(IFNULL(Tx_WhatsappDetailIsReceive,'N') = 'N',0,1)) = 0,'N',IF(COUNT(Tx_WhatsappDetailID) = SUM(IF(Tx_WhatsappDetailIsReceive = 'N',0,1)),'Y','P')) as T,
IF(SUM(IF(IFNULL(Tx_WhatsappDetailIsRead,'N') = 'N',0,1)) = 0,'N',IF(COUNT(Tx_WhatsappDetailID) = SUM(IF(Tx_WhatsappDetailIsRead = 'N',0,1)),'Y','P')) as B,
GROUP_CONCAT(DISTINCT Tx_WhatsappDetailMessage SEPARATOR ' ,') as statusprovider,
M_DeliveryID,
4 as M_DeliveryTypeID
FROM t_orderheader
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
join t_orderdelivery on T_OrderHeaderID = T_OrderDeliveryT_OrderHeaderID and T_OrderDeliveryIsActive = 'Y' and T_OrderDeliveryM_DeliveryTypeID = 4
join m_delivery ON M_DeliveryID = T_OrderDeliveryM_DeliveryID
JOIN m_doctor ON T_OrderHeaderSenderM_DoctorID = M_DoctorID
join last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID AND Last_StatusPaymentIsActive = 'Y'
LEFT JOIN tx_whatsapp ON Tx_WhatsappT_OrderHeaderID = T_OrderHeaderID AND Tx_WhatsappIsActive = 'Y'
LEFT JOIN tx_whatsappdetail ON Tx_WhatsappDetailTx_WhatsappID = Tx_WhatsappID
$sql_where AND Tx_WhatsappGroup_ResultID = -1 AND Tx_WhatsappM_DeliveryID = -1
GROUP BY M_DeliveryID,T_OrderHeaderID
ORDER BY T_OrderHeaderID DESC
limit $number_limit offset $number_offset";
$query = $this->db_onedev->query($sql, $sql_param);
//echo $this->db_onedev->last_query();
$rows = $query->result_array();
if($rows){
foreach($rows as $k => $v){
//$rows[$k]['verification_px'] = $this->add_verification_test($v['M_PatientID']);
}
}
//$this->_add_address($rows);
$result = array("total" => $tot_page,"total_filter" => $tot_page2,"records" => $rows, "sql"=> $this->db_onedev->last_query());
$this->sys_ok($result);
exit;
}
function resend(){
try {
//# cek token valid
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
//# ambil parameter input
$prm = $this->sys_input;
$id = $prm['id'];
$orderid = $prm['orderid'];
$gresultid = $prm['gresultid'];
$deliveryid = $prm['deliveryid'];
$deliverytypeid = $prm['deliverytypeid'];
$userid = $this->sys_user["M_UserID"];
$sql = "update tx_whatsapp SET
Tx_WhatsappIsActive = 'N'
WHERE
Tx_WhatsappT_OrderHeaderID = $orderid
AND
Tx_WhatsappGroup_ResultID = $gresultid
AND
Tx_WhatsappM_DeliveryID = $deliveryid";
$query = $this->db_onedev->query($sql);
// echo $query;
if (!$query) {
$this->sys_error_db("tx_whatsapp delete");
exit;
}
$sql = "insert into result_processtooffice (
Result_ProcessToOfficeT_OrderHeaderID,
Result_ProcessToOfficeT_OrderDeliveryID,
Result_ProcessToOfficeT_OrderDeliveryM_DeliveryTypeID,
Result_ProcessToOfficeT_OrderDeliveryM_DeliveryID,
Result_ProcessToOfficeT_OrderPromiseID,
Result_ProcessToOfficeGroup_ResultID,
Result_ProcessToOfficeSendBy,
Result_ProcessToOfficeSendTime,
Result_ProcessToOfficeStatus,
Result_ProcessToOfficeUserID,
Result_ProcessToOfficeCreated,
Result_ProcessToOfficeLastUpdated)
select
Result_ProcessToOfficeT_OrderHeaderID,
Result_ProcessToOfficeT_OrderDeliveryID,
Result_ProcessToOfficeT_OrderDeliveryM_DeliveryTypeID,
Result_ProcessToOfficeT_OrderDeliveryM_DeliveryID,
Result_ProcessToOfficeT_OrderPromiseID,
Result_ProcessToOfficeGroup_ResultID,
$userid as Result_ProcessToOfficeSendBy,
now() as Result_ProcessToOfficeSendTime,
'S' as Result_ProcessToOfficeStatus,
$userid as Result_ProcessToOfficeUserID,
now() as Result_ProcessToOfficeCreated,
now() Result_ProcessToOfficeLastUpdated
from result_processtooffice
WHERE
Result_ProcessToOfficeIsActive = 'Y' AND
Result_ProcessToOfficeT_OrderHeaderID = $orderid AND
Result_ProcessToOfficeT_OrderDeliveryM_DeliveryID = $deliveryid AND
Result_ProcessToOfficeT_OrderDeliveryM_DeliveryTypeID = $deliverytypeid AND
Result_ProcessToOfficeGroup_ResultID = $gresultid";
$query = $this->db_onedev->query($sql);
// echo $query;
if (!$query) {
$this->sys_error_db("result_processtooffice insert");
exit;
}
$result = array ("total" => 1, "records" => array("xid" => 0));
$this->sys_ok($result);
} catch(Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function searchconfirm()
{
$prm = $this->sys_input;
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$code = $prm["code"];
$nama = $prm["name"];
$date = $prm['date'];
$e = explode('+', $prm['name']);
if (isset($e[0]))
$nama = "%{$e[0]}%";
if (isset($e[1]))
$alamat = "%{$e[1]}%";
if (isset($e[2]))
$nohp = "%{$e[2]}%";
// echo $norm;
$sql_where = "";
$sql_param = array();
if ($code != "") {
if ($sql_where != "") {
$sql_where .=" and ";
}
$sql_where .= " M_DoctorOldCode like ?";
$sql_param[] = "$code";
//$prm['current_page'] = 1;
}
if ($nama != "") {
if ($sql_where != "") {
$sql_where .=" and ";
}
$sql_where .= " M_DoctorName like ?";
$sql_param[] = "$nama";
//$prm['current_page'] = 1;
}
if ($alamat != "") {
if ($sql_where != "") {
$sql_where .=" and ";
}
$sql_where .= " CONCAT(M_DoctorAddressNote, ': ',M_DoctorAddressDescription) like ?";
$sql_param[] = "$alamat";
//$prm['current_page'] = 1;
}
if ($nohp != "") {
if ($sql_where != "") {
$sql_where .=" and ";
}
$sql_where .= " M_DoctorHP like ?";
$sql_param[] = "$nohp";
//$prm['current_page'] = 1;
}
if ($sql_where != "") $sql_where .= " and ";
// Order masih dalam status registrasi
$sql_where .= " M_DoctorIsMarketingConfirm = 'Y' AND M_DoctorIsActive = 'Y'";
if ($sql_where != "") {
$sql_where = " where $sql_where";
//$prm['current_page'] = 1;
}
$number_limit = 10;
$number_offset = ($prm['current_page'] - 1) * $number_limit ;
$sql = " SELECT count(*) as total, CONCAT(M_DoctorAddressNote, ': ',M_DoctorAddressDescription) as doctor_address
FROM m_doctor
JOIN m_sex ON M_DoctorM_SexID = M_SexID
LEFT JOIN m_religion ON M_DoctorM_ReligionID = M_ReligionID
LEFT JOIN m_staff ON M_DoctorM_StaffID = M_StaffID
left join m_doctoraddress ON M_DoctorOldCode = M_DoctorAddressM_DoctorOldCode AND M_DoctorAddressIsActive = 'Y'
$sql_where
";
$query = $this->db_onedev->query($sql, $sql_param);
$tot_count = 0;
$tot_page = 0;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
$tot_page = ceil($tot_count/$number_limit);
} else {
$this->sys_error_db("m_doctor count", $this->db_onedev);
exit;
}
$doctor_field = "
M_DoctorID,
M_DoctorOldCode,
M_DoctorCode ,
M_DoctorPrefix ,
M_DoctorPrefix2 ,
M_DoctorName ,
M_DoctorSufix ,
M_DoctorSufix2 ,
M_DoctorSufix3 ,
M_DoctorM_SexID ,
M_DoctorM_ReligionID,
M_DoctorM_StaffID,
IFNULL(M_DoctorEmail,'') as M_DoctorEmail,
M_DoctorHP ,
M_DoctorNote,
M_DoctorPhone ,
M_DoctorIsMarketingConfirm,
ifnull(M_DoctorPjIsPJ,'N') M_DoctorIsPJ,
ifnull(M_DoctorPjIsDefaultPJ,'N') M_DoctorIsDefaultPJ ,
M_DoctorM_SpecialID ,
ifnull(M_DoctorPjIsClinic,'N') M_DoctorIsClinic ,
ifnull(M_DoctorPjIsDefault,'N') M_DoctorIsDefault ,
M_DoctorEmailIsDefault,
M_DoctorIsDefaultMcu,
M_DoctorCreated ,
M_DoctorLastUpdated,
M_DoctorIsActive,
M_DoctorReportCode ,
M_DoctorPrivateRequest,
M_DoctorM_UserID ,
M_DoctorCreated,
";
$sql = "SELECT $doctor_field
CONCAT(IFNULL(M_DoctorPrefix,''),IFNULL(M_DoctorPrefix2,''),' ',M_DoctorName,' ',IFNULL(M_DoctorSufix,''),IFNULL(M_DoctorSufix2,''),IFNULL(M_DoctorSufix3,'')) as doctor_fullname,
M_SexName,
M_ReligionName,
M_StaffName,
GROUP_CONCAT(CONCAT(M_DoctorAddressNote, ': ',M_DoctorAddressDescription) SEPARATOR '\r\n') as M_DoctorAddressNote,
GROUP_CONCAT(CONCAT(M_DoctorAddressNote, ': ',M_DoctorAddressDescription) SEPARATOR '\r\n') as doctor_address,
'Telah dikonfirmasi marketing' as status
FROM m_doctor
JOIN m_sex ON M_DoctorM_SexID = M_SexID
left join m_doctorpj on M_DoctorID = M_DoctorPjM_DoctorID
left JOIN m_religion ON M_DoctorM_ReligionID = M_ReligionID
left JOIN m_staff ON M_DoctorM_StaffID = M_StaffID
left join m_doctoraddress ON M_DoctorOldCode = M_DoctorAddressM_DoctorOldCode AND M_DoctorAddressIsActive = 'Y'
$sql_where
GROUP BY M_DoctorID
ORDER BY M_DoctorName ASC
limit $number_limit offset $number_offset";
$query = $this->db_onedev->query($sql, $sql_param);
// echo $this->db_onedev->last_query();
$rows = $query->result_array();
if($rows){
foreach($rows as $k => $v){
//$rows[$k]['verification_px'] = $this->add_verification_test($v['M_PatientID']);
}
}
//$this->_add_address($rows);
$result = array("total" => $tot_page, "records" => $rows, "sql"=> $this->db_onedev->last_query());
$this->sys_ok($result);
exit;
}
function getsexreg(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$rows = [];
$query =" SELECT *
FROM m_sex
WHERE
M_SexIsActive = 'Y'
";
//echo $query;
$rows['sexes'] = $this->db_onedev->query($query)->result_array();
$query =" SELECT *
FROM m_religion
WHERE
M_ReligionIsActive = 'Y'
";
//echo $query;
$rows['religions'] = $this->db_onedev->query($query)->result_array();
$query ="
SELECT 0 as M_StaffID, 'Semua' as M_StaffName
UNION
SELECT M_StaffID, M_StaffName
FROM m_staff
WHERE
M_StaffIsActive = 'Y' and M_StaffM_PositionID = '2'
";
//echo $query;
$rows['staffs'] = $this->db_onedev->query($query)->result_array();
$query ="
SELECT '' as M_BranchCode, 'Semua' as M_BranchName
UNION
SELECT M_BranchCode, M_BranchName
FROM m_branch
WHERE
M_BranchIsActive = 'Y'
";
//echo $query;
$rows['branchs'] = $this->db_onedev->query($query)->result_array();
$query =" SELECT *
FROM nat_jpa
WHERE
Nat_JpaIsActive = 'Y'
";
//echo $query;
$rows['jpas'] = $this->db_onedev->query($query)->result_array();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function getnewcode(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$sql = $this->db_onedev->query("SELECT `fn_numbering`('DOCTOR') as code")->row();
$newcode = $sql->code;
$rows = [];
$query ="SELECT `fn_numbering`('DOCTOR') as code
";
//echo $query;
$rows['code'] = $this->db_onedev->query($query)->result_array();
$result = array(
"total" => 1,
"records" => $rows,
"newcode" => $newcode
);
$this->sys_ok($result);
exit;
}
function searchcity(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$max_rst = 12;
$tot_count =0;
$q = [
'search' => '%'
];
if ($prm['search'] != '')
{
$q['search'] = "%{$prm['search']}%";
}
// QUERY TOTAL
$sql = "SELECT count(*) as total
FROM m_city
WHERE
M_CityName like ?
AND M_CityIsActive = 'Y'";
$query = $this->db_onedev->query($sql,$q['search']);
//echo $query;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
}
else {
$this->sys_error_db("m_city count",$this->db_onedev);
exit;
}
$sql = "
SELECT *
FROM m_city
WHERE
M_CityName like ?
AND M_CityIsActive = 'Y'
ORDER BY M_CityName DESC
";
$query = $this->db_onedev->query($sql, array($q['search']));
if ($query) {
$rows = $query->result_array();
//echo $this->db_onedev->last_query();
$result = array("total" => $tot_count, "records" => $rows, "total_display" => sizeof($rows));
$this->sys_ok($result);
}
else {
$this->sys_error_db("m_city rows",$this->db_onedev);
exit;
}
}
function getdistrict(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query =" SELECT *
FROM m_district
WHERE
M_DistrictIsActive = 'Y' AND M_DistrictM_CityID = ?
";
//echo $query;
$rows = $this->db_onedev->query($query,array($prm['id']))->result_array();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function getkelurahan(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query =" SELECT *
FROM m_kelurahan
WHERE
M_KelurahanIsActive = 'Y' AND M_KelurahanM_DistrictID = ?
";
//echo $query;
$rows = $this->db_onedev->query($query,array($prm['id']))->result_array();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function getjpa(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query =" SELECT *
FROM nat_jpa
WHERE
Nat_JpaIsActive = 'Y'
";
//echo $query;
$rows = $this->db_onedev->query($query)->result_array();
// $rows['jpas'] = $this->db_onedev->query($query)->result_array();
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function save(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
// ambil data lama
$sql = "select * from tx_whatsapp where Tx_WhatsappID = ?";
$qry = $this->db_onedev->query($sql,array($prm["id"]));
$rows = $qry->result_array();
$old_doctor = array();
if (count($rows) > 0 ) $old_doctor = $rows[0];
$query ="UPDATE tx_whatsapp SET
Tx_WhatsappUpdated = now(),
Tx_WhatsappUserID = '{$userid}',
Tx_WhatsappIsSent = 'Y'
WHERE
Tx_WhatsappID = '{$prm['id']}'
";
//echo $query;
$rows = $this->db_onedev->query($query);
$this->sys_ok($result);
exit;
}
function newdoctor(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$userid = $this->sys_user["M_UserID"];
$prm = $this->sys_input;
$ispj = $prm['M_DoctorIsPJ'];
$isdefaultpj = $prm['M_DoctorIsDefaultPJ'];
$isdefault = $prm['M_DoctorIsDefault'];
$isclinic = $prm['M_DoctorIsClinic'];
$query ="INSERT INTO m_doctor (
M_DoctorPrefix,
M_DoctorPrefix2,
M_DoctorName,
M_DoctorSufix,
M_DoctorSufix2,
M_DoctorSufix3,
M_DoctorM_SexID,
M_DoctorM_ReligionID,
M_DoctorM_StaffID,
M_DoctorEmail,
M_DoctorHP,
M_DoctorNote,
M_DoctorPhone,
M_DoctorIsMarketingConfirm,
M_DoctorIsPJ,
M_DoctorIsDefaultPJ,
M_DoctorIsClinic,
M_DoctorIsDefault,
M_DoctorEmailIsDefault,
M_DoctorM_UserID
)
VALUES(
'{$prm['M_DoctorPrefix']}',
'{$prm['M_DoctorPrefix2']}',
'{$prm['M_DoctorName']}',
'{$prm['M_DoctorSufix']}',
'{$prm['M_DoctorSufix2']}',
'{$prm['M_DoctorSufix3']}',
'{$prm['M_DoctorM_SexID']}',
'{$prm['M_DoctorM_ReligionID']}',
'{$prm['M_DoctorM_StaffID']}',
'{$prm['M_DoctorEmail']}',
'{$prm['M_DoctorHP']}',
'{$prm['M_DoctorNote']}',
'{$prm['M_DoctorPhone']}',
'{$prm['M_DoctorIsMarketingConfirm']}',
'{$prm['M_DoctorIsPJ']}',
'{$prm['M_DoctorIsDefaultPJ']}',
'{$prm['M_DoctorIsClinic']}',
'{$prm['M_DoctorIsDefault']}',
'{$prm['M_DoctorEmailIsDefault']}',
$userid
)
";
//echo $query;
$rows = $this->db_onedev->query($query);
$last_id = $this->db_onedev->insert_id();
if($rows){
if($isdefault == 'Y'){
$querydefault ="UPDATE m_doctorpj SET
M_DoctorPjIsDefault = 'N' WHERE M_DoctorPjIsDefault = 'Y'
";
$rows = $this->db_onedev->query($querydefault);
}
if($isdefaultpj == 'Y'){
$querydefault ="UPDATE m_doctorpj SET
M_DoctorPjIsDefaultPJ = 'N' WHERE M_DoctorPjIsDefaultPJ = 'Y'
";
$rows = $this->db_onedev->query($querydefault);
}
if($ispj == 'Y' || $isdefaultpj == 'Y' || $isdefault == 'Y' || $isclinic === 'Y'){
$querypj ="INSERT INTO m_doctorpj (
M_DoctorPjM_DoctorID,
M_DoctorPjIsPJ,
M_DoctorPjIsDefaultPJ,
M_DoctorPjIsClinic,
M_DoctorPjIsDefault,
M_DoctorPjCreated
)
VALUES(
'{$last_id}',
'{$prm['M_DoctorIsPJ']}',
'{$prm['M_DoctorIsDefaultPJ']}',
'{$prm['M_DoctorIsClinic']}',
'{$prm['M_DoctorIsDefault']}',
NOW()
)
";
$rows = $this->db_onedev->query($querypj);
}
}
$result = array(
"total" => 1 ,
"records" => array('status'=>'OK'),
"id" => $last_id
);
//sipe tambah log doctor
$prm["M_DoctorID"] = $last_id;
$prm["M_DoctorM_UserID"] = $userid;
$d_doctor = json_encode($prm);
$this->db_onedev->query("call one_log.log_me('DOCTOR','DOCTOR_ADD','{$d_doctor}',$userid)");
$this->sys_ok($result);
exit;
}
function deletedoctor(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
// sipe nambah ambil userid
$userid = $this->sys_user["M_UserID"];
$query ="UPDATE m_doctor SET
M_DoctorIsActive = 'N'
WHERE
M_DoctorID = '{$prm['M_DoctorID']}'
";
//echo $query;
$rows = $this->db_onedev->query($query);
$result = array(
"total" => 1 ,
"records" => array('status'=>'OK')
);
//adi tambah log doctor
$prm["M_DoctorM_UserID"] = $userid;
$d_doctor = json_encode($prm);
$this->db_onedev->query("call one_log.log_me('DOCTOR','DOCTOR_DELETE','{$d_doctor}',$userid)");
$this->sys_ok($result);
exit;
}
function getaddress(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$query =" SELECT m_doctoraddress.*,
M_KelurahanName,
M_DistrictID,
M_DistrictName,
M_CityID,
M_CityName,Nat_JpaName,
'' as action
FROM m_doctoraddress
JOIN m_kelurahan ON M_DoctorAddressM_KelurahanID = M_KelurahanID
JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID
JOIN m_city ON M_DistrictM_CityID = M_CityID
left join nat_jpa on M_DoctorAddressNat_JpaID = Nat_JpaID
WHERE
M_DoctorAddressIsActive = 'Y' AND M_DoctorAddressM_DoctorID = ?
";
//echo $query;
$rows = $this->db_onedev->query($query,array($prm['id']))->result_array();
if($rows){
foreach($rows as $k => $v){
$rows[$k]['action'] = '<v-icon color="error" @click="deleteAddress(props.item)">delete</v-icon>';
$rows[$k]['action'] .= '<v-icon color="primary" @click="deleteAddress(props.item)">edit</v-icon>';
}
}
$result = array(
"total" => count($rows) ,
"records" => $rows,
);
$this->sys_ok($result);
exit;
}
function savenewaddress(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$userid = $this->sys_user["M_UserID"];
$prm = $this->sys_input;
$count_addrs = $this->db_onedev->query("SELECT COUNT(*) as countx FROM m_doctoraddress WHERE M_DoctorAddressM_DoctorID = '{$prm['M_DoctorAddressM_DoctorID']}' AND M_DoctorAddressIsActive = 'Y'")->row()->countx;
//echo $this->db_onedev->last_query();
if($count_addrs == 0){
$prm['M_DoctorAddressNote'] = 'Utama';
}
else{
$count_addrs_utama = $this->db_onedev->query("SELECT COUNT(*) as countx FROM m_doctoraddress WHERE M_DoctorAddressM_DoctorID = '{$prm['M_DoctorAddressM_DoctorID']}' AND M_DoctorAddressNote = 'Utama' AND M_DoctorAddressIsActive = 'Y'")->row()->countx;
if($count_addrs_utama > 0 && strtolower($prm['M_DoctorAddressNote']) == 'utama'){
$rx = date('YmdHis');
$prm['M_DoctorAddressNote'] = 'Utama_'.$rx;
}
}
$query ="INSERT INTO m_doctoraddress (
M_DoctorAddressM_DoctorID,
M_DoctorAddressNote,
M_DoctorAddressDescription,
M_DoctorAddressM_KelurahanID,
M_DoctorAddressNat_JpaID,
M_DoctorAddressCreated
)
VALUES(
'{$prm['M_DoctorAddressM_DoctorID']}',
'{$prm['M_DoctorAddressNote']}',
'{$prm['M_DoctorAddressDescription']}',
'{$prm['M_DoctorAddressM_KelurahanID']}',
'{$prm['M_DoctorAddressNat_JpaID']}',
NOW()
)
";
//echo $query;
$rows = $this->db_onedev->query($query);
$result = array(
"total" => 1 ,
"records" => array('status'=>'OK')
);
//adi tambah log doctor
$prm["M_DoctorM_UserID"] = $userid;
$d_doctor = json_encode($prm);
$this->db_onedev->query("call one_log.log_me('DOCTOR','DOCTOR_ADDR','{$d_doctor}',$userid)");
$this->sys_ok($result);
exit;
}
function saveeditaddress(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$userid = $this->sys_user["M_UserID"];
$prm = $this->sys_input;
$query ="UPDATE m_doctoraddress SET
M_DoctorAddressM_DoctorID = '{$prm['M_DoctorAddressM_DoctorID']}',
M_DoctorAddressNote = '{$prm['M_DoctorAddressNote']}',
M_DoctorAddressDescription = '{$prm['M_DoctorAddressDescription']}',
M_DoctorAddressM_KelurahanID = '{$prm['M_DoctorAddressM_KelurahanID']}',
M_DoctorAddressNat_JpaID = '{$prm['M_DoctorAddressNat_JpaID']}'
WHERE
M_DoctorAddressID = '{$prm['M_DoctorAddressID']}'
";
// echo $query;
$rows = $this->db_onedev->query($query);
$result = array(
"total" => 1 ,
"records" => array('status'=>'OK')
);
//adi tambah log doctor
$prm["M_DoctorM_UserID"] = $userid;
$d_doctor = json_encode($prm);
$this->db_onedev->query("call one_log.log_me('DOCTOR','DOCTOR_ADDR_EDIT','{$d_doctor}',$userid)");
$this->sys_ok($result);
exit;
}
function deleteaddress(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$userid = $this->sys_user["M_UserID"];
$prm = $this->sys_input;
$query ="UPDATE m_doctoraddress SET
M_DoctorAddressIsActive = 'N'
WHERE
M_DoctorAddressID = '{$prm['M_DoctorAddressID']}'
";
//echo $query;
$rows = $this->db_onedev->query($query);
$result = array(
"total" => 1 ,
"records" => array('status'=>'OK')
);
//adi tambah log doctor
$prm["M_DoctorM_UserID"] = $userid;
$d_doctor = json_encode($prm);
$this->db_onedev->query("call one_log.log_me('DOCTOR','DOCTOR_ADDR_DELETE','{$d_doctor}',$userid)");
$this->sys_ok($result);
exit;
}
}