Server IP : 103.191.208.50 / Your IP : 216.73.216.53 Web Server : LiteSpeed System : Linux orion.herosite.pro 4.18.0-553.53.1.lve.el8.x86_64 #1 SMP Wed May 28 17:01:02 UTC 2025 x86_64 User : celkcksm ( 1031) PHP Version : 7.4.33 Disable Function : show_source, system, shell_exec, passthru, popen, exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/celkcksm/ecampus.ncriptech.com/application/controllers/admin/hrm/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
<?php defined('BASEPATH') OR exit('No direct script access allowed'); /** * */ class Attendance extends BaseAdminController { protected $inst_id=''; protected $inst_parent_id=''; protected $inst_code=''; protected $inst_type=''; protected $hrms_access=''; protected $attendance_settings=''; function __construct() { parent::__construct(); $institute_data=check_institute($this->data['userdata']); $this->inst_id=$institute_data['institute_id']; $this->inst_parent_id=$institute_data['inst_parent_id']; $this->inst_code=$institute_data['inst_code']; $this->inst_type=$institute_data['inst_type']; $this->hrms_access=$institute_data['hrms_access']; $this->load->model(array('hrm/attendance_model'=>'hrmadm','hrm/leaves_model'=>'hrmlvm','hrm/hrmsettings_model'=>'hrmsm')); $hrm_settings=$this->hrmsm->get_hrm_settings(array('hrm_settings_inst_id'=>$this->inst_id,'hrm_settings_inst_type'=>$this->inst_type,'hrm_settings_type'=>'attendance_settngs')); if(!empty($hrm_settings)){ $this->attendance_settings=unserialize($hrm_settings->hrm_settings_value); } // $this->load->library('calendar'); } public function indexUserAttendance(){ if(session_userdata('isAdminLoggedin')){ $this->data['page_title']='Attendance'; if($this->hrms_access=='yes'){ $user_id=$this->data['userdata']->user_id; $prefs = array( 'show_next_prev'=>true, 'next_prev_url' => 'http://example.com/index.php/calendar/show/' ); $this->load->library('calendar', $prefs); $this->data['calender']= $this->calendar->generate(); //$rangeMonthDate=rangeMonthDate(date('m'),date('Y'),'d-m-Y'); //print_obj($rangeMonthDate);die; $today=date('Y-m-d'); $todays_data=$this->hrmadm->get_attendance(array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'DATE(att_date)'=>$today)); $this->data['current_month']=date('m'); $this->data['current_year']=date('Y'); $this->data['todays_data']=$todays_data; $view='hrm/employees/vw_attendance'; }else{ $view='hrm/vw_permission_denied'; } $this->theme->title($this->data['page_title'])->load($view, $this->data); }else{ redirect($this->data['base_url']); } } public function onRecordAttendance(){ if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){ if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){ if($this->hrms_access=='yes'){ $user_id=$this->data['userdata']->user_id; $record_type=post_data('record_type'); $today=date('Y-m-d'); $current_year=date('Y'); $today_time=date('Y-m-d H:i A'); $current_month=date('m'); $total_absent=0; $attendance_data=$this->hrmadm->get_attendance(array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'DATE(att_date)'=>$today)); if($record_type=='check_in'){ if(empty($attendance_data)){ $in_time=$this->attendance_settings['check_in_time']; $in_grace_time=$today.' '.$this->attendance_settings['check_in_grace_time']; $last_absent_late_data=$this->hrmadm->get_last_attendance(array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'MONTH(att_date)'=>$current_month,'att_status'=>'absent(for lates)'),NULL,'att_id'); //print_obj($last_absent_late_data);die; //Late Count if(!empty($last_absent_late_data)){ $total_lates=$this->hrmadm->get_total_attendance(array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'MONTH(att_date)'=>$current_month,'DATE(att_date)>'=>$last_absent_late_data->att_date,'att_status'=>'present(late)')); }else{ $total_lates=$this->hrmadm->get_total_attendance(array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'MONTH(att_date)'=>$current_month,'att_status'=>'present(late)')); } $last_absent_data=$this->hrmadm->get_last_attendance(array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'MONTH(att_date)'=>$current_month,'att_leave_deducted'=>'yes'),NULL,'att_id'); // print_obj($last_absent_data);die; //Absent Count //Auto Leave calculation if(!empty($last_absent_data)){ $total_absent_lates=$this->hrmadm->get_total_attendance(array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'MONTH(att_date)'=>$current_month,'DATE(att_date)>'=>$last_absent_data->att_date,'att_status'=>'absent(for lates)')); $_total_absent=$this->hrmadm->get_total_attendance(array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'MONTH(att_date)'=>$current_month,'DATE(att_date)>'=>$last_absent_data->att_date,'att_status'=>'absent')); $total_absent=$total_absent_lates+$_total_absent; }else{ $total_absent_lates=$this->hrmadm->get_total_attendance(array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'MONTH(att_date)'=>$current_month,'att_status'=>'absent(for lates)')); $_total_absent=$this->hrmadm->get_total_attendance(array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'MONTH(att_date)'=>$current_month,'att_status'=>'absent')); $total_absent=$total_absent_lates+$_total_absent; } //echo $total_absent;die; $ctoday_time=strtotime($today_time); $cin_grace_time=strtotime($in_grace_time); $absent_on_late=$this->attendance_settings['absent_on_late']; $absent_on_leave=$this->attendance_settings['absent_on_leave']; $auto_leave_deduction_from=$this->attendance_settings['auto_leave_deduction_from']; if($total_absent>=$absent_on_leave){ $current_leave_stock=$this->hrmlvm->get_employee_leave(array('leave_inst_id'=>$this->inst_id,'leave_inst_type'=>$this->inst_type,'leave_emp_id'=>$user_id,'leave_type_id'=>$auto_leave_deduction_from,'leave_year'=>$current_year)); if(!empty($current_leave_stock)){ $leave_remain=$current_leave_stock->leave_remain-1; $leave_deduction=$current_leave_stock->leave_deduction+1; $leave_stock_data=array( 'leave_inst_id'=>$this->inst_id, 'leave_inst_type'=>$this->inst_type, 'leave_emp_id'=>$user_id, 'leave_type_id'=>$auto_leave_deduction_from, 'leave_year'=>$current_year, 'leave_remain'=>$leave_remain, 'leave_deduction'=>$leave_deduction, 'leave_deduction_reason'=>'More than '.$absent_on_late.' absent counted for the month of '.date('F, Y'), 'leave_deduction_date'=>date('Y-m-d') ); $leave_deducted=$this->hrmlvm->update_employee_leave($leave_stock_data,array('leave_inst_id'=>$this->inst_id,'leave_inst_type'=>$this->inst_type,'leave_emp_id'=>$user_id,'leave_type_id'=>$auto_leave_deduction_from,'leave_year'=>$current_year)); } } if($total_lates>=$absent_on_late){ $att_status='absent(for lates)'; }else{ if($ctoday_time>$cin_grace_time){ $att_status='present(late)'; }else{ $att_status='present'; } } $att_data=array( 'att_emp_id'=>$user_id, 'att_inst_id'=>$this->inst_id, 'att_inst_type'=>$this->inst_type, 'att_date'=>$today, 'att_check_in'=>date('Y-m-d H:i:s'), 'att_status'=>$att_status ); $added=$this->hrmadm->store_attendance($att_data); if($added){ if(isset($leave_deducted)){ $this->hrmadm->update_attendance(array('att_leave_deducted'=>'yes'),array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'DATE(att_date)'=>$today)); } $return['success']='You have successfully checked in '.date('d-m-Y').'. Don\'t forget to check out at the end of the day!'; }else{ $return['error']='System error occurred.'; } }else{ $return['error']='Attendance already taken'; } }else if($record_type=='check_out'){ if(!empty($attendance_data)){ $att_data=array( 'att_emp_id'=>$user_id, 'att_inst_id'=>$this->inst_id, 'att_inst_type'=>$this->inst_type, 'att_date'=>$today, 'att_check_out'=>date('Y-m-d H:i:s'), 'att_status'=>'present' ); $added=$this->hrmadm->update_attendance($att_data,array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'DATE(att_date)'=>$today)); if($added){ $return['success']='Attendance has marked for '.date('d-m-Y'); }else{ $return['error']='System error occurred.'; } }else{ $return['error']='Data error occurred.'; } } }else{ $return['error']='Permission denied'; } json_headers($return); }else{ redirect($this->data['base_url']); } }else{ redirect($this->data['base_url']); } } public function onLoadMonthAttendance(){ if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){ if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){ //echo $this->inst_id; //Attendance Settings // $att=array( // 'check_in_time'=>'9:30 AM', // 'check_in_grace_time'=>'9:45 AM', // 'check_out_time'=>'5:30 PM', // 'absent_on_late'=>'3', // 'absent_on_leave'=>'3', // 'auto_leave_deduction_from'=>'2', // 'weekdays'=>array('0','6') // ); // echo serialize($att);die; $week_days=$this->attendance_settings['weekdays']; //print_obj($in_time);die; $month=post_data('selected_month'); $year=post_data('selected_year'); //$current_date=post_data('selected_date'); $data_list=array(); $wdays=array(); $user_id=$this->data['userdata']->user_id; //echo $user_id;die; $rangeMonthDate=rangeMonthDate($month,$year,'Y-m-d'); $duration='-NA-'; $status='-NA-'; $check_in='-NA-'; $check_out='-NA-'; $remarks='-NA-'; //$week_days=$this->hrmlvm->get_leave_weekly(array('weekday_inst_id'=>$this->inst_id,'weekday_inst_type'=>$this->inst_type,'weekday_status'=>'active'),FALSE); // if(!empty($week_days)){ // foreach ($week_days as $key => $value) { // $wdays[]=$value; // } // } //print_obj($week_days);die; if(!empty($rangeMonthDate)){ foreach ($rangeMonthDate as $key => $value) { $day_num=date('w',strtotime($value)); $data_param=array('att_emp_id'=>$user_id,'att_inst_id'=>$this->inst_id,'att_inst_type'=>$this->inst_type,'DATE(att_date)'=>$value); $month_data[$value]=$this->hrmadm->get_attendance($data_param); if(!empty($month_data)){ $status=(!empty($month_data[$value]->att_status))?ucwords($month_data[$value]->att_status):'-NA-'; $check_in=(!empty($month_data[$value]->att_status))?date('H:i a',strtotime($month_data[$value]->att_check_in)):'-NA-'; $check_out=(!empty($month_data[$value]->att_check_out))?date('H:i a',strtotime($month_data[$value]->att_check_out)):'-NA-'; $_duration=(!empty($month_data[$value]->att_check_out))?date_diff_formatted($month_data[$value]->att_check_in,$month_data[$value]->att_check_out):''; $duration=(!empty($_duration))?$_duration:'-NA-'; $remarks=$month_data->att_remarks; } $att_date=date('d-m-Y',strtotime($value)); $att_id=(!empty($month_data[$value]))?$month_data[$value]->att_id:'0'; $data_list[]=array( 'att_date'=>$att_date, 'att_status'=>$status, 'att_check_in'=>$check_in, 'att_check_out'=>$check_out, 'att_duration'=>$duration, 'att_remarks'=>(!empty($remarks))?$remarks:'-NA-', 'att_week_day'=>(in_array($day_num, $week_days))?date('l',strtotime($value)).'(Weekday)':'', 'att_edit'=>'<button type="button" class="btn btn-xs btn-dark btn_edit_attendance" data-att_id="'.$att_id.'" data-att_date="'.$att_date.'" data-att_check_in="'.$check_in.'" data-att_check_out="'.$check_out.'"><i class="fa fa-pencil"></i></button>' ); } } //print_obj($data_list);die; $this->data['attendance_list']=$data_list; $return['html']=$this->theme->view('_pages/hrm/employees/vw_attendance_list', $this->data,true); $return['selected_month_year']=get_month_from_number($month).' '.$year; json_headers($return); }else{ redirect($this->data['base_url']); } }else{ redirect($this->data['base_url']); } } }