File: /home/dmstechonline/crm.chaitanyahospitalvirar.com/application/models/Staffattendancemodel.php
<?php
if (!defined('BASEPATH')) {
exit('No direct script access allowed');
}
class Staffattendancemodel extends MY_Model
{
public function __construct()
{
parent::__construct();
$this->current_date = $this->setting_model->getDateYmd();
}
public function get($id = null)
{
$this->db->select("staff.*,staff_attendance.*,staff_roles.role_id")->join("staff", "staff.id = staff_attendance.staff_id")->join("staff_roles", "staff.id = staff_roles.staff_id")->from('staff_attendance');
$this->db->where("staff.is_active", 1);
if ($id != null) {
$this->db->where('staff_attendance.id', $id);
} else {
$this->db->order_by('staff_attendance.id');
}
$query = $this->db->get();
if ($id != null) {
$result = $query->row_array();
} else {
$result = $query->result_array();
if ($this->session->has_userdata('hospitaladmin')) {
$superadmin_rest = $this->session->userdata['hospitaladmin']['superadmin_restriction'];
if ($superadmin_rest == 'enabled') {
$search = in_array(7, array_column($result, 'role_id'));
$search_key = array_search(7, array_column($result, 'role_id'));
if (!empty($search)) {
unset($result[$search_key]);
}
}
}
}
return $result;
}
public function getUserType()
{
$query = $this->db->query("select distinct user_type from staff where is_active = 1");
return $query->result_array();
}
public function searchAttendenceUserType($user_type, $date)
{
$condition = '';
if ($this->session->has_userdata('hospitaladmin')) {
$superadmin_rest = $this->session->userdata['hospitaladmin']['superadmin_restriction'];
if ($superadmin_rest == 'disabled') {
$condition = "and roles.id != 7 " ;
}
}
if ($user_type == "select") {
$query = $this->db->query("select staff_attendance.out_time,staff_attendance.in_time,staff_attendance.id,staff_attendance.biometric_attendence,staff_attendance.biometric_device_data,staff_attendance.staff_attendance_type_id,staff_attendance.remark,staff.name,staff.surname,staff.employee_id,staff.contact_no,staff.email,roles.id as role_id,roles.name as user_type,IFNULL(staff_attendance.date, 'xxx') as date,staff.id as staff_id from staff left join staff_roles on staff_roles.staff_id = staff.id left join roles on staff_roles.role_id = roles.id left join staff_attendance on (staff.id = staff_attendance.staff_id) and staff_attendance.date = " . $this->db->escape($date) . " where staff.is_active = 1 $condition");
} else {
$query = $this->db->query("select staff_attendance.out_time,staff_attendance.in_time,staff_attendance.staff_attendance_type_id,staff_attendance.biometric_attendence,staff_attendance.biometric_device_data,staff_attendance.remark,staff.name,staff.surname,staff.employee_id,staff.contact_no,staff.email,roles.name as user_type,roles.id as role_id,IFNULL(staff_attendance.date, 'xxx') as date, IFNULL(staff_attendance.id, 0) as id, staff.id as staff_id from staff left join staff_roles on (staff.id = staff_roles.staff_id) left join roles on (roles.id = staff_roles.role_id) left join staff_attendance on (staff.id = staff_attendance.staff_id) and staff_attendance.date = " . $this->db->escape($date) . " where roles.name = " . $this->db->escape($user_type) . " and staff.is_active = 1 $condition");
}
$result = $query->result_array();
if ($this->session->has_userdata('hospitaladmin')) {
$superadmin_rest = $this->session->userdata['hospitaladmin']['superadmin_restriction'];
if ($superadmin_rest == 'enabled') {
$search = in_array(7, array_column($result, 'role_id'));
$search_key = array_search(7, array_column($result, 'role_id'));
if (!empty($search)) {
unset($result[$search_key]);
$result = array_values($result);
}
}
}
return $result;
}
public function add($data)
{
$this->db->trans_start(); # Starting Transaction
$this->db->trans_strict(false); # See Note 01. If you wish can remove as well
//=======================Code Start===========================
if (isset($data['id']) && $data['id'] != '') {
$this->db->where('id', $data['id']);
$this->db->update('staff_attendance', $data);
$message = UPDATE_RECORD_CONSTANT . " For Staff Attendance id " . $data['id'];
$action = "Update";
$record_id = $data['id'];
$this->log($message, $record_id, $action);
//======================Code End==============================
$this->db->trans_complete(); # Completing transaction
/* Optional */
if ($this->db->trans_status() === false) {
# Something went wrong.
$this->db->trans_rollback();
return false;
} else {
return $record_id;
}
} else {
$this->db->insert('staff_attendance', $data);
$insert_id = $this->db->insert_id();
$message = INSERT_RECORD_CONSTANT . " On Staff Attendance id " . $insert_id;
$action = "Insert";
$record_id = $insert_id;
$this->log($message, $record_id, $action);
//======================Code End==============================
$this->db->trans_complete(); # Completing transaction
/* Optional */
if ($this->db->trans_status() === false) {
# Something went wrong.
$this->db->trans_rollback();
return false;
} else {
//return $return_value;
}
return $insert_id;
}
}
public function getStaffAttendanceType()
{
$query = $this->db->select('*')->where("is_active", 'yes')->get("staff_attendance_type");
return $query->result_array();
}
public function searchAttendanceReport($user_type, $date)
{
if ($user_type == "select") {
$query = $this->db->query("select staff_attendance.staff_attendance_type_id,staff_attendance_type.type as `att_type`,staff_attendance_type.key_value as `key`,staff_attendance.remark,staff.name,staff.surname,staff.employee_id,staff.contact_no,staff.email,roles.name as user_type,IFNULL(staff_attendance.date, 'xxx') as date, IFNULL(staff_attendance.id, 0) as attendence_id, staff.id as id from staff left join staff_attendance on (staff.id = staff_attendance.staff_id) and staff_attendance.date = " . $this->db->escape($date) . " left join staff_attendance_type on staff_attendance_type.id = staff_attendance.staff_attendance_type_id left join staff_roles on staff_roles.staff_id = staff.id left join roles on staff_roles.role_id = roles.id where staff.is_active = 1");
} else {
$query = $this->db->query("select staff_attendance.staff_attendance_type_id,staff_attendance_type.type as `att_type`,staff_attendance_type.key_value as `key`,staff_attendance.remark,staff.name,staff.surname,staff.employee_id,staff.contact_no,staff.email,roles.name as user_type,IFNULL(staff_attendance.date, 'xxx') as date, IFNULL(staff_attendance.id, 0) as attendence_id, staff.id as id from staff left join staff_roles on (staff.id = staff_roles.staff_id) left join roles on (roles.id = staff_roles.role_id) left join staff_attendance on (staff.id = staff_attendance.staff_id) and staff_attendance.date = " . $this->db->escape($date) . " left join staff_attendance_type on staff_attendance_type.id = staff_attendance.staff_attendance_type_id where roles.name = '" . $user_type . "' and staff.is_active = 1 ");
}
return $query->result_array();
}
public function attendanceYearCount()
{
$query = $this->db->select("distinct year(date) as year")->get("staff_attendance");
return $query->result_array();
}
public function searchStaffattendance($date, $staff_id = 8)
{
$query = $this->db->query("select staff_attendance.staff_attendance_type_id,staff_attendance_type.type as `att_type`,staff_attendance_type.key_value as `key`,staff_attendance.remark,staff.name,staff.surname,staff.contact_no,staff.email,roles.name as user_type,IFNULL(staff_attendance.date, 'xxx') as date, IFNULL(staff_attendance.id, 0) as attendence_id, staff.id as id from staff left join staff_attendance on (staff.id = staff_attendance.staff_id) and staff_attendance.date = " . $this->db->escape($date) . " left join staff_roles on staff_roles.staff_id = staff.id left join roles on staff_roles.role_id = roles.id left join staff_attendance_type on staff_attendance_type.id = staff_attendance.staff_attendance_type_id where staff.id = '" . $staff_id . "' ");
return $query->row_array();
}
public function onlineattendence($data) {
$this->db->where('staff_id', $data['staff_id']);
$this->db->where('date', $data['date']);
$q = $this->db->get('staff_attendance');
if ($q->num_rows() == 0) {
$this->db->insert('staff_attendance', $data);
return ($this->db->affected_rows() != 1) ? false : true;
}
return false;
}
}