1083 lines
49 KiB
PHP
Executable File

<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Home_model extends CI_model {
function __construct() {
parent::__construct();
$this->load->database();
}
public function getSum($field, $table) {
$this->db->select_sum($field);
$query = $this->db->get($table);
return $query->result();
}
public function activity_log($data){
$this->db->insert('audit_log', $data);
// die;
}
public function get_dashboard_menu()
{
$dashboardMenu=array();
$caregiversData=$this->getCaregiversData();
$patientsData=$this->getPatientsData();
$physiciansData=$this->getPhysiciansData();
$coordinatorsData=$this->getCoordinatorsData();
$dashboardMenu=array(
'caregivers'=>$caregiversData,
'patients'=>$patientsData,
'physicians'=>$physiciansData,
'coordinators'=>$coordinatorsData,
);
return $dashboardMenu;
}
private function getCaregiversData()
{
$this->db->select('*');
$this->db->from('caregiver');
$this->db->where(array('verification_status' => "verified"));
$query=$this->db->get();
$rows=$query->num_rows();
// return $query->result();
return $rows;
}
private function getPatientsData()
{
$this->db->select('*');
$this->db->from('patient_details');
$this->db->where(array('active_status' => 1));
$query = $this->db->get();
$rows=$query->num_rows();
// return $query->result();
return $rows;
}
private function getPhysiciansData()
{
$this->db->select('*');
$this->db->from('physician');
$this->db->where(array('verification_status' => "verified"));
$query = $this->db->get();
$rows=$query->num_rows();
// return $query->result();
return $rows;
}
private function getCoordinatorsData()
{
$this->db->select('*');
$this->db->from('coordinator');
$this->db->where(array('status' => 1));
$query = $this->db->get();
$rows=$query->num_rows();
// return $query->result();
return $rows;
}
public function get_menu($user_id){
$this->db->select('a.name');
$this->db->from('groups a');
$this->db->join('users_groups b', 'b.group_id = a.id', 'left');
$this->db->where('b.user_id', $user_id);
$data = $this->db->get()->row();
$group =$data->name;
//print_r($group);die;
if($group=='Caregiver')
{
$accessMatrix = $this->__caregiverAccessMatrix($group,$user_id);
}
else if($group=='Physician')
{
//echo "phy";
$accessMatrix = $this->__physicianAccessMatrix($group,$user_id);
//echo '<pre>'; print_r($accessMatrix); echo '</pre>';die;
// die;
}
else if($group=='Patient')
{
$accessMatrix = $this->__patientAccessMatrix($group,$user_id);
// die("1");
}
else
{
$accessMatrix = $this->__codinatorAccessMatrix($group,$user_id);
}
return $accessMatrix;
}
private function __codinatorAccessMatrix($group,$user_id)
{
$accessableMenu = array();
$mainCounter = 0;
$this->db->order_by('menu_order', 'asc');
$mainmenu = $this->db->get_where('permissions', array('parent_id' => 0,'status'=>'1'))->result();
foreach ($mainmenu as $menu)
{
$accessableChildren = array();
$childrenCount = 0;
$this->db->order_by('menu_order', 'asc');
$children = $this->db->get_where('permissions', array('parent_id' => $menu->id,'status'=>'1'))->result();
foreach($children as $child)
{
$accessableChildren[$childrenCount]['ID'] = $child->id;
$accessableChildren[$childrenCount]['TEXT'] = $child->name;
$accessableChildren[$childrenCount]['URL'] = $child->url;
$accessableChildren2 = array();
$childrenCount2 = 0;
$this->db->order_by('menu_order', 'asc');
$child2=$this->db->get_where('permissions', array('parent_id' => $child->id,'status'=>'1'))->result();
foreach($child2 as $c2)
{
$accessableChildren2[$childrenCount2]['ID'] = $c2->id;
$accessableChildren2[$childrenCount2]['TEXT'] = $c2->name;
$accessableChildren2[$childrenCount2]['URL'] = $c2->url;
$accessableChildren3 = array();
$childrenCount3 = 0;
$this->db->order_by('menu_order', 'asc');
$child3=$this->db->get_where('permissions', array('parent_id' => $c2->id,'status'=>'1'))->result();
foreach($child3 as $c3)
{
$accessableChildren3[$childrenCount3]['ID'] = $c3->id;
$accessableChildren3[$childrenCount3]['TEXT'] = $c3->name;
$accessableChildren3[$childrenCount3]['URL'] = $c3->url;
$childrenCount3++;
}
$accessableChildren2[$childrenCount2]['CHILDREN'] = $accessableChildren3;
$childrenCount2++;
}
$accessableChildren[$childrenCount]['CHILDREN'] = $accessableChildren2;
$childrenCount++;
}
$accessableMenu['MAIN'][$mainCounter]['ID'] = $menu->id;
$accessableMenu['MAIN'][$mainCounter]['TEXT'] = $menu->name;
$accessableMenu['MAIN'][$mainCounter]['URL'] = $menu->url;
$accessableMenu['MAIN'][$mainCounter]['Menu_Icon'] = $menu->menu_icon;
$accessableMenu['MAIN'][$mainCounter]['CHILDREN'] = $accessableChildren;
$mainCounter++;
}
// _die($accessableMenu['MAIN']);
$accessMenu = array();
foreach($accessableMenu['MAIN'] as $mainId=>$main)
{
$pass = true;
$pass = (count($main['CHILDREN'])>0)?$this->ion_auth->coordinator_permission($main['URL']):true;
$pass = $this->ion_auth->coordinator_permission($main['URL']);
$pass = ($group ==='admin')?true:$pass;
if($pass===true)
{
foreach($main['CHILDREN'] as $childId=>$child)
{
$pass = true;
$pass = $this->ion_auth->coordinator_permission($child['URL']);
$pass = ($group ==='admin')?true:$pass;
if($pass)
{
foreach($child['CHILDREN'] as $grandChildId=>$grandChild)
{
$pass = true;
$pass = $this->ion_auth->coordinator_permission($grandChild['URL']);
$pass = ($group ==='admin')?true:$pass;
if($pass)
{
foreach($grandChild['CHILDREN'] as $greatgrandChildId=>$greatgrandChild)
{
$pass = true;
$pass = $this->ion_auth->coordinator_permission($grandChild['URL']);
$pass = ($group ==='admin')?true:$pass;
if($pass)
{
$accessMenu['MAIN'][$mainId]['CHILDREN'][$childId]['CHILDREN'][$grandChildId]['CHILDREN'][$greatgrandChildId]['NAME'] = $greatgrandChild['TEXT'];
$accessMenu['MAIN'][$mainId]['CHILDREN'][$childId]['CHILDREN'][$grandChildId]['CHILDREN'][$greatgrandChildId]['URL'] = $greatgrandChild['URL'];
}
}
$accessMenu['MAIN'][$mainId]['CHILDREN'][$childId]['CHILDREN'][$grandChildId]['NAME'] = $grandChild['TEXT'];
$accessMenu['MAIN'][$mainId]['CHILDREN'][$childId]['CHILDREN'][$grandChildId]['URL'] = $grandChild['URL'];
}
}
$accessMenu['MAIN'][$mainId]['CHILDREN'][$childId]['NAME'] = $child['TEXT'];
$accessMenu['MAIN'][$mainId]['CHILDREN'][$childId]['URL'] = $child['URL'];
}
}
$accessMenu['MAIN'][$mainId]['NAME'] = $main['TEXT'];
$accessMenu['MAIN'][$mainId]['URL'] = $main['URL'];
$accessMenu['MAIN'][$mainId]['Menu_Icon'] = $main['Menu_Icon'];
}
}
return $accessMenu;
}
private function __caregiverAccessMatrix($group,$user_id)
{
//echo $user_id;
$this->db->where('ion_user_id', $user_id);
$caregiver_dtl = $this->db->get('caregiver')->row();
$caregiver_menu = $this->db->order_by("menu_order", "asc")->get_where('caregiver_menu',array('parent_id' => '0','status'=>'1'))->result();
//echo '<pre>'; print_r($caregiver_menu); echo '</pre>';die;
$accessMenu=array();
$i=0;
foreach($caregiver_menu as $menu){
$caregiver_child_menu = $this->db->order_by("menu_order", "asc")->get_where('caregiver_menu',array('parent_id' => $menu->id,'status'=>'1'))->result();
$Children = array();
$childrenCount = 0;
foreach($caregiver_child_menu as $child){
if($caregiver_dtl->verification_status=='unverified' && $child->menu_for=='unverified'){
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['NAME'] = $child->name;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['URL'] = $child->url;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['Menu_Icon'] = $child->menu_icon;
$childrenCount++;
}else if($caregiver_dtl->verification_status=='verified' && $child->menu_for=='verified'){
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['NAME'] = $child->name;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['URL'] = $child->url;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['Menu_Icon'] = $child->menu_icon;
$childrenCount++;
}else if($child->menu_for=='all'){
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['NAME'] = $child->name;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['URL'] = $child->url;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['Menu_Icon'] = $child->menu_icon;
$childrenCount++;
}
}
if($caregiver_dtl->verification_status=='unverified' && $menu->menu_for=='unverified'&& $caregiver_dtl->submited_for_verification == 'no'){
$accessMenu['MAIN'][$i]['NAME'] = $menu->name;
$accessMenu['MAIN'][$i]['URL'] = $menu->url;
$accessMenu['MAIN'][$i]['Menu_Icon'] = $menu->menu_icon;
$i++;
}else if($caregiver_dtl->verification_status=='verified' && $menu->menu_for=='verified'){
$accessMenu['MAIN'][$i]['NAME'] = $menu->name;
$accessMenu['MAIN'][$i]['URL'] = $menu->url;
$accessMenu['MAIN'][$i]['Menu_Icon'] = $menu->menu_icon;
$i++;
}else if($menu->menu_for=='all'){
$accessMenu['MAIN'][$i]['NAME'] = $menu->name;
$accessMenu['MAIN'][$i]['URL'] = $menu->url;
$accessMenu['MAIN'][$i]['Menu_Icon'] = $menu->menu_icon;
$i++;
}
}
return $accessMenu;
}
private function __physicianAccessMatrix($group,$user_id)
{
//echo $user_id;die;
$this->db->where('ion_user_id', $user_id);
$physician_dtl = $this->db->get('physician')->row();
$physician_menu = $this->db->order_by("menu_order", "asc")->get_where('physician_menu',array('parent_id' => '0'))->result();
//echo '<pre>'; print_r($physician_menu); echo '</pre>';die;
$accessMenu=array();
$i=0;
foreach($physician_menu as $menu){
$physician_child_menu = $this->db->order_by("menu_order", "asc")->get_where('physician_menu',array('parent_id' => $menu->id))->result();
//echo '<pre>'; print_r($physician_dtl); echo '</pre>';die;
$Children = array();
$childrenCount = 0;
foreach($physician_child_menu as $child){
if($physician_dtl->verification_status=='unverified' && $child->menu_for=='unverified'){
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['NAME'] = $child->name;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['URL'] = $child->url;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['Menu_Icon'] = $child->menu_icon;
$childrenCount++;
}else if($physician_dtl->verification_status=='verified' && $child->menu_for=='verified'){
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['NAME'] = $child->name;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['URL'] = $child->url;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['Menu_Icon'] = $child->menu_icon;
$childrenCount++;
}else if($child->menu_for=='all'){
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['NAME'] = $child->name;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['URL'] = $child->url;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['Menu_Icon'] = $child->menu_icon;
$childrenCount++;
}
}
if($physician_dtl->verification_status=='unverified' && $menu->menu_for=='unverified'){
$accessMenu['MAIN'][$i]['NAME'] = $menu->name;
$accessMenu['MAIN'][$i]['URL'] = $menu->url;
$accessMenu['MAIN'][$i]['Menu_Icon'] = $menu->menu_icon;
$i++;
}else if($physician_dtl->verification_status=='verified' && $menu->menu_for=='verified'){
$accessMenu['MAIN'][$i]['NAME'] = $menu->name;
$accessMenu['MAIN'][$i]['URL'] = $menu->url;
$accessMenu['MAIN'][$i]['Menu_Icon'] = $menu->menu_icon;
$i++;
}else if($menu->menu_for=='all'){
$accessMenu['MAIN'][$i]['NAME'] = $menu->name;
$accessMenu['MAIN'][$i]['URL'] = $menu->url;
$accessMenu['MAIN'][$i]['Menu_Icon'] = $menu->menu_icon;
$i++;
}
}
//echo '<pre>'; print_r($accessMenu); echo '</pre>';die;
return $accessMenu;
}
private function __patientAccessMatrix($group,$user_id)
{
//echo $user_id;
$this->db->where('ion_user_id', $user_id);
$patient_dtl = $this->db->get('patient_details')->row();
$patient_menu = $this->db->order_by("menu_order", "asc")->get_where('patient_menu',array('parent_id' => '0','status'=>'1'))->result();
//echo '<pre>'; print_r($caregiver_menu); echo '</pre>';die;
$accessMenu=array();
$i=0;
foreach($patient_menu as $menu)
{
$patient_child_menu = $this->db->order_by("menu_order", "asc")->get_where('patient_menu',array('parent_id' => $menu->id,'status'=>'1'))->result();
$Children = array();
$childrenCount = 0;
foreach($patient_child_menu as $child)
{
if($patient_dtl->active_status=='0' && $child->menu_for=='unverified')
{
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['NAME'] = $child->name;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['URL'] = $child->url;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['Menu_Icon'] = $child->menu_icon;
$childrenCount++;
}
else if($patient_dtl ->active_status=='1' && $child->menu_for=='verified')
{
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['NAME'] = $child->name;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['URL'] = $child->url;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['Menu_Icon'] = $child->menu_icon;
$childrenCount++;
}
else if($child->menu_for=='all')
{
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['NAME'] = $child->name;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['URL'] = $child->url;
$accessMenu['MAIN'][$i]['CHILDREN'][$childrenCount]['Menu_Icon'] = $child->menu_icon;
$childrenCount++;
}
}
if($menu->menu_for=='unverified' && $patient_dtl->active_status=='0')
{
$accessMenu['MAIN'][$i]['NAME'] = $menu->name;
$accessMenu['MAIN'][$i]['URL'] = $menu->url;
$accessMenu['MAIN'][$i]['Menu_Icon'] = $menu->menu_icon;
$i++;
}
else if($menu->menu_for=='verified' && $patient_dtl->active_status=='1')
{
$accessMenu['MAIN'][$i]['NAME'] = $menu->name;
$accessMenu['MAIN'][$i]['URL'] = $menu->url;
$accessMenu['MAIN'][$i]['Menu_Icon'] = $menu->menu_icon;
$i++;
}
else if($menu->menu_for=='all')
{
$accessMenu['MAIN'][$i]['NAME'] = $menu->name;
$accessMenu['MAIN'][$i]['URL'] = $menu->url;
$accessMenu['MAIN'][$i]['Menu_Icon'] = $menu->menu_icon;
$i++;
}
}
return $accessMenu;
// return $patient_dtl;
}
public function getCargiverInfo($id){
$this->db->where('id', $id);
$query = $this->db->get('caregiver')->row();
$query->full_name=$query->fname.' '.$query->lname;
//return json_encode($query);
$this->db->where('id', $query->qualification_type);
$this->db->where('status', '1');
$qualification = $this->db->get('master_cg_skills')->row();
$query->qualification_name=$qualification->name;
return $query;
}
function getSchedule($patientId='',$caregiverId='',$start='',$end=''){
$this->db->where('status','1');
if($patientId!='')
$this->db->where('patient_id',$patientId);
if($caregiverId!='')
$this->db->where('caregiver_id',$caregiverId);
if($start!='' && $end!='')
$this->db->where("start >= '".$start."' AND end <= '".$end."'");
$query = $this->db->get('caregiver_schedule')->result();
$i=0;
foreach($query as $q){
//$id = $q->id;
$sed[$i]['id']=$q->id;
$sed[$i]['patientId']=$q->patient_id;
$sed[$i]['caregiverId']=$q->caregiver_id;
$sed[$i]['start']=$q->start;
$sed[$i]['end']=$q->end;
$sed[$i]['title']=$q->title." (".$q->acceptance_status.")";
$sed[$i]['color']='#e83e8c';
$i++;
}
$availability=$this->db->get_where('caregiver_availability',array('caregiver_id'=>$caregiverId,'status'=>1))->result();
foreach($availability as $avl){
$sed[$i]['id']=$avl->id;
//$sed[$i]['patientId']=$q->patient_id;
$sed[$i]['caregiverId']=$avl->caregiver_id;
$sed[$i]['start']=$avl->start;
$sed[$i]['end']=$avl->end;
//$sed[$i]['title']=$q->title;
$sed[$i]['rendering']='background';
$sed[$i]['color']='#a2f0ba';
$i++;
}
$ret = array();
foreach($sed as $q){
$ret[] = $q;
}
return $ret;
}
function insertDocExpireDate($data){
//pre($data);die;
$date=date('Y-m-d');
$this->db->where('caregiver_id', $data['caregiver_id']);
$this->db->where('doc_name', $data['doc_name']);
$this->db->where('status', '1');
$this->db->update('caregiver_doc_expire_details', array('status'=>0,'updated_on'=>$date));
//echo $this->db->last_query();die;
$this->db->insert('caregiver_doc_expire_details', $data);
return $this->db->insert_id();
}
function getExpireDateByCaregiverIdAndDocType($data){
$this->db->where('caregiver_id', $data['caregiver_id']);
$this->db->where('doc_name', $data['doc_name']);
$this->db->where('status', '1');
$this->db->order_by('id', 'desc');
$query = $this->db->get('caregiver_doc_expire_details')->row();
return $query;
}
function name_by_code($code){
$this->db->like('stateCode', $code);
$query = $this->db->get('master_statelist');
return $query->row();
}
function getting_name_from_short_code($type){
$this->db->select('constant_table.name');
$this->db->where('short_code', $type);
$query = $this->db->get('constant_table')->row();
// _die($query);
$name = $query->name;
return $name;
}
function getCitizenList($data){
$list_type = array('A', 'B');
$condition_type = array((int)$data, 2);
$this->db->select('*');
$this->db->where_in('list_type', $list_type);
$this->db->where_in('condition_type', $condition_type);
$this->db->order_by('name');
$query = $this->db->get('master_citizenship_doc');
// _die($this->db->last_query());
return $query->result();
}
function getCitizenName($data){
$this->db->select('master_citizenship_doc.name');
$this->db->where('short_code', $data);
$query = $this->db->get('master_citizenship_doc')->row();
// _die($query);
$name = $query->name;
return $name;
}
function getting_document_from_docId($doc_id){
$this->db->select('*');
$this->db->from('users_documents');
$this->db->where('id',$doc_id);
$query=$this->db->get();;
return $query->row();
}
// adb dashboard
function getAllCaregiversData($action){
$currentDate = time();
$start_date='';
$end_date='';
if ($action=='week') {
$start_date = date('Y-m-d', strtotime('this week', $currentDate));
$end_date = date('Y-m-d', strtotime('this week +6 days', $currentDate));
} elseif ($action=='month') {
$start_date = date('Y-m-01');
$end_date = date('Y-m-t');
} elseif ($action=='year') {
$currentYear = date('Y');
$start_date = date('Y-01-01', strtotime($currentYear));
$end_date = date('Y-12-31', strtotime($currentYear));
}
$this->db->select('*');
$this->db->from('caregiver');
$this->db->where(array('verification_status' => "verified"));
if ($start_date!='' && $end_date!='') {
$this->db->where('DATE(application_date) >=', $start_date);
$this->db->where('DATE(application_date) <=', $end_date);
}
$query=$this->db->get();
$rows=$query->num_rows();
// return $query->result();
return $rows;
}
function getTotalSchedule($action=''){
$currentDate = time();
$start_date='';
$end_date='';
if ($action=='week') {
$start_date = date('Y-m-d', strtotime('this week', $currentDate));
$end_date = date('Y-m-d', strtotime('this week +6 days', $currentDate));
} elseif ($action=='month') {
$start_date = date('Y-m-01');
$end_date = date('Y-m-t');
} elseif ($action=='year') {
$currentYear = date('Y');
$start_date = date('Y-01-01', strtotime($currentYear));
$end_date = date('Y-12-31', strtotime($currentYear));
}
$this->db->select('*');
$this->db->from('caregiver_patient_clock_in_out');
$this->db->where(array('status' => 1));
if ($start_date!='' && $end_date!='') {
$this->db->where('DATE(created_on) >=', $start_date);
$this->db->where('DATE(created_on) <=', $end_date);
}
$query=$this->db->get();
$rows=$query->num_rows();
// return $query->result();
return $rows;
}
function getPreviousTotalSchedule($action=''){
$currentDate = time();
$start_date='';
$end_date='';
if ($action=='week') {
$start_date = date('Y-m-d', strtotime('last week', $currentDate));
$end_date = date('Y-m-d', strtotime('last week +6 days', $currentDate));
} elseif ($action=='month') {
$start_date = date('Y-m-01', strtotime('first day of previous month'));
$end_date = date('Y-m-t', strtotime('last day of previous month'));
} elseif ($action=='year') {
$start_date = date('Y-01-01', strtotime('-1 year')); // Start of the previous year
$end_date = date('Y-12-31', strtotime('-1 year')); // End of the previous year
}
$this->db->select('*');
$this->db->from('caregiver_patient_clock_in_out');
$this->db->where(array('status' => 1));
if ($start_date!='' && $end_date!='') {
$this->db->where('DATE(created_on) >=', $start_date);
$this->db->where('DATE(created_on) <=', $end_date);
}
$query=$this->db->get();
$rows=$query->num_rows();
// return $query->result();
return $rows;
}
function getTotalScheduleRequest(){
$currentDate = time();
$start_date = date('Y-m-01');
$end_date = date('Y-m-t');
$this->db->from('caregiver_schedule');
$this->db->where('DATE(start) >=', $start_date);
$this->db->where('DATE(start) <', $end_date);
$query = $this->db->get();
// return $query->result();
return $query->num_rows();
}
function getDailyBasisSchedule($data=''){
try{
$from_api=isset($data['from_api'])&&$data['from_api']!=""?trim($data['from_api']):'';
$start=isset($data['start'])?(0+(int)($data['start'])):0;
$limit=isset($data['limit'])?(0+(int)($data['limit'])):10;
$search=isset($data['search'])&&$data['search']!=""?trim($data['search']):'';
$order_column=isset($data['order_column'])?(0+(int)($data['order_column'])):'default';
$order_type=isset($data['order_type'])&&$data['order_type']!=""?trim($data['order_type']):'DESC';
$filter=isset($data['filter'])&&$data['filter']!=""?trim($data['filter']):'week';
$startDate=isset($data['start_date'])&&$data['start_date']!=""?trim($data['start_date']):null;
$endDate=isset($data['end_date'])&&$data['end_date']!=""?trim($data['end_date']):null;
$this->db->distinct();
$this->db->select(
'SQL_CALC_FOUND_ROWS
(CASE
WHEN DATE(CURRENT_TIMESTAMP()) > cs.end THEN "past"
WHEN DATE(CURRENT_TIMESTAMP()) < cs.end THEN "present"
ELSE ""
END) AS tense,
(CASE
WHEN (cio.clock_in_time IS NULL
AND cio.clock_out_time IS NULL
AND cs.acceptance_status="Unconfirmed"
AND CURRENT_TIMESTAMP() < cs.end
) THEN "unconfirmed"
WHEN (cio.clock_in_time IS NULL
AND cio.clock_out_time IS NULL
AND cs.acceptance_status="Accepted"
AND CURRENT_TIMESTAMP() < cs.end
) THEN "upcoming"
WHEN (cio.clock_in_time IS NOT NULL
AND (
((cio.clock_out_time IS NULL OR cio.clock_out_time IS NOT NULL) AND cs.acceptance_status="Accepted")
OR (cio.clock_out_time IS NULL AND cs.acceptance_status="Reported")
)
) THEN "ongoing"
WHEN (cio.clock_in_time IS NOT NULL
AND cio.clock_out_time IS NOT NULL
AND cs.acceptance_status="Reported"
) THEN "completed"
WHEN (cio.clock_in_time IS NULL
AND cio.clock_out_time IS NULL
AND cs.acceptance_status IN("Unconfirmed","Accepted")
AND CURRENT_TIMESTAMP() > cs.end
) THEN "missed"
WHEN (cio.clock_in_time IS NULL
AND cio.clock_out_time IS NULL
AND cs.acceptance_status="Declined"
) THEN "declined"
ELSE "undefined"
END) AS live_status,
cs.id AS schedule_id,
p.id AS patient_id,
CONCAT(p.first_name, " ", p.last_name) AS patient_name,
CONCAT(c.fname, " ", c.lname) AS caregiver_name,
v.vedor_name AS vendor_name,
cs.acceptance_status,
cs.start AS start_time,
cs.end AS end_time,
cio.clock_in_time,
cio.clock_out_time',false
);
$this->db->from('caregiver_schedule cs');
$this->db->join('caregiver c','cs.caregiver_id=c.id');
$this->db->join('patient_details p','cs.patient_id=p.id');
$this->db->join('master_vendor v','p.reference_id=v.id','left');
$this->db->join('caregiver_patient_clock_in_out cio','cs.id=cio.schedule_id','left');
$this->db->where('cs.status',1);
$this->db->where('c.status',1);
$this->db->where('c.verification_status', 'verified');
$this->db->where('p.active_status','1');
$this->db->where('DATE(cs.end) BETWEEN "'.$startDate.'" AND "'.$endDate.'"');
if($order_column=='default'){
$this->db->order_by('cs.start', 'ASC');
}else if($order_column==0){
$this->db->order_by('cs.id',$order_type);
}elseif($order_column==1){
$this->db->order_by('p.first_name',$order_type);
}elseif($order_column==2){
$this->db->order_by('v.vedor_name',$order_type);
}
if(isset($search) && $search!=''){
$this->db->group_start();
$this->db->like('cs.id', $search);
$this->db->or_like("CONCAT(p.first_name,' ',p.last_name)",$search);
$this->db->or_like("v.vedor_name",$search);
$this->db->group_end();
}
if($from_api==''){
$this->db->limit($limit,$start);
}
$query=$this->db->get();
$openCases=$query->result_array();
$openCasesCount=$query->num_rows();
$main_query=$this->db->last_query();
$total_count=($this->db->query("SELECT FOUND_ROWS() AS total_rows"))->row()->total_rows;
$response=(object)[
'status'=>200,
'msg'=>'fetched successfully',
'data'=>(object)[
'total_count'=>$total_count,
'count'=>$openCasesCount,
'schedules'=>$openCases,
'query'=>$main_query
]
];
return $response;
}catch(Exception $e){
$getMsg="Caregiver_model - getDailyBasisSchedule: ".$e->getMessage();
echo $getMsg;
}
}
function hms_get_adb_vendors_overview($data){
try{
$from_api=isset($data['from_api'])&&$data['from_api']!=""?trim($data['from_api']):'';
$start=isset($data['start'])?(0+(int)($data['start'])):0;
$limit=isset($data['limit'])?(0+(int)($data['limit'])):10;
$search=isset($data['search'])&&$data['search']!=""?trim($data['search']):'';
$filter=isset($data['filter'])&&$data['filter']!=""?trim($data['filter']):'week';
$order_column=isset($data['order_column'])?(0+(int)($data['order_column'])):0;
$order_type=isset($data['order_type'])&&$data['order_type']!=""?trim($data['order_type']):'DESC';
$require=isset($data['require'])&&$data['require']!=""?trim($data['require']):'data';
$currentDate = time();
$start_date='';
$end_date='';
if ($filter=='week') {
$start_date = date('Y-m-d', strtotime('this week', $currentDate));
$end_date = date('Y-m-d', strtotime('this week +6 days', $currentDate));
} elseif ($filter=='month') {
$start_date = date('Y-m-01');
$end_date = date('Y-m-t');
} elseif ($filter=='year') {
$currentYear = date('Y');
$start_date = date('Y-01-01', strtotime($currentYear));
$end_date = date('Y-12-31', strtotime($currentYear));
}
$this->db->select('
(CASE
WHEN (f.acceptance_status IN("Declined","Reported") OR f.patient_id IS NULL) THEN "New"
WHEN (f.acceptance_status IN("Unconfirmed","Accepted")) THEN "Open"
ELSE "New"
END) AS live_status,
a.id, a.patient_id, a.first_name, a.last_name, a.referral_type, a.address, b.vedor_name, c.name as service_type'
);
$this->db->from('patient_details a');
$this->db->join('master_vendor b', 'b.id = a.reference_id', 'left');
$this->db->join('master_cg_skills c', 'c.id = a.level_of_service', 'left');
$this->db->join('users e','e.id=a.ion_user_id', 'left');
$this->db->join('caregiver_schedule f', 'a.id=f.patient_id', 'left');
$this->db->where(array('e.active' => 1));
$this->db->where('a.reference_information', 'Reffered by Vendor');
if ($start_date!='' && $end_date!='') {
$this->db->where('DATE(FROM_UNIXTIME(e.created_on)) >=', $start_date);
$this->db->where('DATE(FROM_UNIXTIME(e.created_on)) <=', $end_date);
}
if($order_column==0){
$this->db->order_by('a.id',$order_type);
}else if($order_column==1){
$this->db->order_by('b.vedor_name',$order_type);
}else if($order_column==2){
$this->db->order_by('a.first_name',$order_type);
}else if($order_column==3){
$this->db->order_by('c.name',$order_type);
}else if($order_column==4){
$this->db->order_by('a.address',$order_type);
}else if($order_column==5){
$this->db->order_by('a.referral_type',$order_type);
}
if(isset($search) && $search!=''){
$this->db->group_start();
$this->db->like('a.id', $search);
$this->db->or_like("CONCAT(a.first_name, ' ', a.last_name)", $search);
$this->db->or_like('a.address', $search);
$this->db->or_like('a.referral_type', $search);
$this->db->or_like('b.vedor_name', $search);
$this->db->or_like('c.name', $search);
$this->db->group_end();
}
$this->db->where('a.active_status','1');
// $this->db->group_by('f.patient_id');
if($require=="data"){
if ($from_api == '') {
$this->db->limit($limit,$start);
}
$this->db->order_by('a.id',"DESC");
$query=$this->db->get();
$result=$query->result_array();
}else if($require=="count"){
$this->db->order_by('a.id',"DESC");
$query=$this->db->get();
$result=$query->num_rows();
}
return $result;
}catch(Exception $e){
$getMsg="Vendors_overview - hms_get_adb_vendors_overview: ".$e->getMessage();
echo $getMsg;
}
}
function hms_get_adb_financial_overview($data){
try{
$from_api=isset($data['from_api'])&&$data['from_api']!=""?trim($data['from_api']):'';
$start=isset($data['start'])?(0+(int)($data['start'])):0;
$limit=isset($data['limit'])?(0+(int)($data['limit'])):10;
$search=isset($data['search'])&&$data['search']!=""?trim($data['search']):'';
$filter=isset($data['filter'])&&$data['filter']!=""?trim($data['filter']):'month';
$order_column=isset($data['order_column'])?(0+(int)($data['order_column'])):0;
$order_type=isset($data['order_type'])&&$data['order_type']!=""?trim($data['order_type']):'DESC';
$require=isset($data['require'])&&$data['require']!=""?trim($data['require']):'data';
$currentDate=time();
$start_date='';
$end_date='';
if ($filter=='week') {
$start_date = date('Y-m-d', strtotime('this week', $currentDate));
$end_date = date('Y-m-d', strtotime('this week +6 days', $currentDate));
}else if($filter=='month') {
$start_date = date('Y-m-01');
$end_date = date('Y-m-t');
}else if($filter=='year') {
$currentYear = date('Y');
$start_date = date('Y-01-01', strtotime($currentYear));
$end_date = date('Y-12-31', strtotime($currentYear));
}
$this->db->distinct();
$this->db->select(
'(CASE
WHEN (cs.acceptance_status="Reported"
AND a.reporting_approval="1"
) THEN "completed"
WHEN (cio.clock_in_time IS NULL
AND cio.clock_out_time IS NULL
AND cs.acceptance_status IN("Unconfirmed","Accepted")
AND CURRENT_TIMESTAMP() > cs.end
) THEN "missed"
ELSE "pending"
END) AS live_status,
cs.id,
p.id AS patient_id,
CONCAT(p.first_name, " ", p.last_name) AS patient_name,
cs.acceptance_status,
p.address,
JSON_UNQUOTE(JSON_EXTRACT(p.address, "$.City")) AS main_city,
JSON_UNQUOTE(JSON_EXTRACT(p.address, "$.Zipcode")) AS main_zipcode,
v.vedor_name,
mcs.name as service_type'
);
$this->db->from('caregiver_schedule cs');
$this->db->join('patient_details p', 'cs.patient_id=p.id');
$this->db->join('master_vendor v', 'p.reference_id=v.id');
$this->db->join('master_cg_skills mcs', 'p.level_of_service=mcs.id');
$this->db->join('caregiver_patient_clock_in_out cio', 'cs.id=cio.schedule_id', 'left');
$this->db->join('assessment a', 'cs.id=a.schedule_id', 'left');
$this->db->where('cs.status', '1');
$this->db->where('p.reference_information', 'Reffered by Vendor');
$this->db->where('p.active_status', 1);
if($start_date!='' && $end_date!=''){
$this->db->where('DATE(cs.end) BETWEEN "'.$start_date.'" AND "'.$end_date.'"');
}
$this->db->group_start(); // Start of grouped conditions
$this->db->or_group_start(); // Start of OR conditions within the group
$this->db->where('cs.acceptance_status', 'Reported');
$this->db->where('a.reporting_approval', '1');
$this->db->group_end(); // End of OR conditions within the group
$this->db->or_group_start(); // Start of another OR conditions within the group
$this->db->where('cio.clock_in_time IS NULL');
$this->db->where('cio.clock_out_time IS NULL');
$this->db->where_in('cs.acceptance_status', ['Unconfirmed', 'Accepted']);
$this->db->where('CURRENT_TIMESTAMP() > cs.end');
$this->db->group_end(); // End of another OR conditions within the group
$this->db->group_end(); // End of grouped conditions
if($order_column==0){
$this->db->order_by('cs.id',$order_type);
}else if($order_column==1){
$this->db->order_by('cs.acceptance_status',$order_type);
}else if($order_column==2){
$this->db->order_by('v.vedor_name',$order_type);
}else if($order_column==3){
$this->db->order_by('p.first_name',$order_type);
}else if($order_column==4){
$this->db->order_by('mcs.name',$order_type);
}else if($order_column==5){
$this->db->order_by('p.address',$order_type);
}
if(isset($search) && $search!=''){
$this->db->group_start();
$this->db->like('cs.id', $search);
if(strtolower($search)=='completed') {
// $this->db->or_like('cs.acceptance_status', 'Accepted');
$this->db->or_like('cs.acceptance_status', 'Reported');
}else if (strtolower($search)=='missed') {
$this->db->or_like('cs.acceptance_status', 'Unconfirmed');
$this->db->or_like('cs.acceptance_status', 'Accepted');
}
$this->db->or_like('v.vedor_name', $search);
$this->db->or_like("CONCAT(p.first_name, ' ', p.last_name)", $search);
$this->db->or_like('mcs.name', $search);
$this->db->or_like('p.address', $search);
$this->db->group_end();
}
if($require=="data"){
if ($from_api == '') {
$this->db->limit($limit,$start);
}
$this->db->order_by('cs.id',"DESC");
$query=$this->db->get();
$result=$query->result_array();
}else if($require=="count"){
$this->db->order_by('cs.id',"DESC");
$query=$this->db->get();
$result=$query->num_rows();
}
return $result;
#old-query
// $this->db->select('a.id, p.id as patient_id, CONCAT(p.first_name, " ", p.last_name) as patient_name, a.acceptance_status, p.address, b.vedor_name, c.name as service_type');
// $this->db->from('caregiver_schedule a');
// $this->db->join('patient_details p', 'a.patient_id = p.id', 'left');
// $this->db->join('master_vendor b', 'b.id = p.reference_id', 'left');
// $this->db->join('master_cg_skills c', 'c.id = p.level_of_service', 'left');
// $this->db->where('p.reference_information', 'Reffered by Vendor');
// if ($start_date!='' && $end_date!='') {
// $this->db->where('DATE(a.start) >=', $start_date);
// $this->db->where('DATE(a.start) <=', $end_date);
// }
// if($order_column==0){
// $this->db->order_by('a.id',$order_type);
// }else if($order_column==1){
// $this->db->order_by('a.acceptance_status',$order_type);
// }else if($order_column==2){
// $this->db->order_by('b.vedor_name',$order_type);
// }else if($order_column==3){
// $this->db->order_by('p.first_name',$order_type);
// }else if($order_column==4){
// $this->db->order_by('c.name',$order_type);
// }else if($order_column==5){
// $this->db->order_by('a.address',$order_type);
// }
// if(isset($search) && $search!=''){
// $this->db->group_start();
// $this->db->like('a.id', $search);
// if (strtolower($search) == 'completed') {
// $this->db->or_like('a.acceptance_status', 'Accepted');
// $this->db->or_like('a.acceptance_status', 'Reported');
// }elseif (strtolower($search) == 'missed') {
// $this->db->or_like('a.acceptance_status', 'Unconfirmed');
// $this->db->or_like('a.acceptance_status', 'Declined');
// }
// $this->db->or_like("CONCAT(p.first_name, ' ', p.last_name)", $search);
// $this->db->or_like('p.address', $search);
// $this->db->or_like('b.vedor_name', $search);
// $this->db->or_like('c.name', $search);
// $this->db->group_end();
// }
// if($require=="data"){
// if ($from_api == '') {
// $this->db->limit($limit,$start);
// }
// $this->db->order_by('a.id',"DESC");
// $query=$this->db->get();
// $result=$query->result_array();
// }else if($require=="count"){
// $this->db->order_by('a.id',"DESC");
// $query=$this->db->get();
// $result=$query->num_rows();
// }
// return $result;
#old-query
}catch(Exception $e){
$getMsg="Financial_overview - hms_get_adb_financial_overview: ".$e->getMessage();
echo $getMsg;
}
}
function get_adb_quick_cards_chart_data($filter='', $data_for='', $num_of_row=5){
$num_of_row = $num_of_row-1;
if ($filter == 'year') {
$currentYear = date('Y');
$result = [];
for ($i = $num_of_row; $i >= 0; $i--) {
$firstDay = date('Y-m-d', strtotime("$currentYear -$i year January 1"));
$lastDay = date('Y-m-d', strtotime("$currentYear -$i year December 31"));
$count = 0;
if($data_for=='scheduled_visits'){
$count = $this->getScheduledVisitsBarChatQuery($firstDay,$lastDay);
}
$result[] = $count;
}
return $result;
}elseif($filter == 'month'){
$currentMonth = date('m');
$currentYear = date('Y');
$result = array();
for ($i = $num_of_row; $i >= 0; $i--) {
$month = $currentMonth - $i;
$year = $currentYear;
if ($month < 1) {
$month += 12;
$year--;
}
$firstDay = date('Y-m-01', strtotime("$year-$month-01"));
$lastDay = date('Y-m-t', strtotime("$year-$month-01"));
$count = 0;
if($data_for=='scheduled_visits'){
$count = $this->getScheduledVisitsBarChatQuery($firstDay,$lastDay);
}
$result[] = $count;
}
return $result;
}elseif($filter == 'week'){
$currentDate = new DateTime();
$currentWeekNumber = $currentDate->format("W");
$result = array();
for ($i = $num_of_row; $i >= 0; $i--) {
$startOfWeek = clone $currentDate;
$startOfWeek->modify("-$i weeks");
$startOfWeek->modify('Monday this week');
$endOfWeek = clone $startOfWeek;
$endOfWeek->modify('Sunday this week');
$firstDay = $startOfWeek->format('Y-m-d');
$lastDay = $endOfWeek->format('Y-m-d');
$count = 0;
if($data_for=='scheduled_visits'){
$count = $this->getScheduledVisitsBarChatQuery($firstDay,$lastDay);
}
$result[] = $count;
}
return $result;
}
}
private function getScheduledVisitsBarChatQuery($start='',$end=''){
$this->db->select('*');
$this->db->from('caregiver_patient_clock_in_out');
$this->db->where(array('status' => 1));
if ($start!='' && $end!='') {
$this->db->where('DATE(created_on) >=', $start);
$this->db->where('DATE(created_on) <=', $end);
}
$query = $this->db->get();
return $query->num_rows();
}
// adb dashboard
}