Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function staffcalendar(){
- $arrSess = $this->auth->get_session();
- $staff = $arrSess['staffid'];
- $data['staffid'] = $arrSess['staffid'];
- $data['username'] = $arrSess['username'];
- $data['iduser'] = $arrSess['userid'];
- $data1['menu'] = 'attendance';
- $data['title'] = 'Kalendar Staf';
- $submit = $this->input->post('show');
- $mystaffid = $this->input->post('staff');
- $monthid = $this->input->post('month');
- $yearid = $this->input->post('year');
- $this->load->model('staff_model','staff');
- $this->load->model('leave_model','leave');
- $this->load->model('setup_model','setup');
- $this->load->model('attendance_model','attendance');
- $this->load->model('department_model','department');
- if($monthid > 0 && $yearid > 0){
- $month = $monthid;
- $year = $yearid;
- }else{
- $month = date('m');
- $year = date('Y');
- }
- $userlevelsession = 'admin';
- $departmentid = $this->input->post('department_id');
- $data['departmentid'] = $departmentid;
- //dapatkan list mengikut department.
- if($departmentid > 0){
- $qstaff = $this->staff->get_records(array('staff.department_id'=>$departmentid));
- $data['qstaff'] = $qstaff;
- }
- //ACCCESS LEVEL
- if($this->session->userdata('attendancelevel') == 'DIRECTOR' || $this->session->userdata('attendancelevel') == 'DEPUTY DIRECTOR' || $this->session->userdata('attendancelevel') == 'PA'){
- $staffid = $this->session->userdata('mystaffid');
- $rsstaff = $this->staff->get_records_id($staffid);
- $data['department'] = $this->department->show_department(array('department.department_id'=>$rsstaff->department_id));
- $department_id = $rsstaff->department_id;
- }else{
- $data['department'] = $this->department->show_department();
- $post_department = $this->input->post("department_id");
- if($post_department > 0){
- $department_id = $post_department;
- }else{
- $department_id = 0;
- }
- }
- //$data['department'] = $this->department->show_department();
- if($submit == 'Dapatkan'){ //bila submit
- if($mystaffid > 0 && $month > 0 && $year > 0){
- $data['staffid'] = $mystaffid; #staff id
- $rsStaff = $this->staff->get_records_id($mystaffid); #get detail staff id
- //echo $rsStaff->staff_name;
- //--------------------------------- ---- validate total days in month ---------------------------------
- #check last day.
- if( checkdate($month,31,$year) == true){
- $lastday = 31;
- }else if( checkdate($month,30,$year) == true){
- $lastday = 30;
- }else if( checkdate($month,28,$year) == true){
- $lastday = 28;
- }
- if($month == date('n') && $year == date('Y')){
- $lastday = date('j');
- $lastday = $lastday;
- // echo $lastday;
- }
- //--------------------------------------- dapatkan working hour ----------------------------------------
- $cworkhour = $this->setup->getCompanyWorkingHour(array('timeline.timeline_id'=>$rsStaff->timeline_id))->result();
- #ni company working hour.
- foreach($cworkhour as $item){
- //echo $item->company_id . '<br>';
- $arr['weekend'] = $item->weekend;
- $arr['ending'] = $item->end;
- $arr['start'] = $item->start;
- $arr['totalminute'] = fTimeToMinute($item->start,$item->end);
- //echo $arr['totalminute'];
- //echo $arr['totalminute']
- $arrcompworkhour[$item->day] = $arr;
- }
- $arrHoliday = $this->attendance->holiday($month,$year); //get array dari model
- //------------ identify cuti/dan sebagainya------------
- for($x=1;$x<=$lastday;$x++){
- $arr_counter = $x-1;
- //set default variable
- //------------------------------
- $punch_in[$arr_counter] = $punch_day[$arr_counter] = $punch_out[$arr_counter] = "";
- $punch_day[$arr_counter] = date("l", mktime(0, 0, 0, $month, $x, $year));
- $punch_status[$arr_counter] = $punch_transaksi[$arr_counter] = "";
- $totalMinute[$arr_counter] = 0;
- $totalCompanyMinute[$arr_counter] = 0;
- if($x < 10){
- if($month < 10){
- $datestring = $year . '-0' . $month . '-' . '0' . $x;
- }else{
- $datestring = $year . '-' . $month . '-' . '0' . $x;
- }
- }else{
- if($month < 10){
- $datestring = $year . '-0' . $month . '-' . $x;
- }else{
- $datestring = $year . '-' . $month . '-' . $x;
- }
- }
- if($x < 10){
- if($month < 10){
- $calendar[] = '0' . $x . '/0' . $month . '/' . $year;
- }else{
- $calendar[] = '0' . $x . '/' . $month . '/' . $year;
- }
- }else{
- if($month < 10 ){
- $calendar[] = $x . '/0' . $month . '/' . $year;
- }else{
- $calendar[] = $x . '/' . $month . '/' . $year;
- }
- }
- //echo $datestring . '<br>';
- $timestamp = strtotime($datestring);
- $day_tostring = date('l', $timestamp);
- //echo '<br>'. $datestring . $day;
- if(array_key_exists($datestring,$arrHoliday)){
- //echo $datestring . "cuti" . '<br>';
- $statusCuti = $arrHoliday[$datestring];
- //echo $statusCuti;
- }else{
- //echo $datestring . "tidakcuti" . '<br>';
- if($day_tostring == 'Sunday' || $day_tostring == 'Saturday'){
- $statusCuti = "CUTI MINGGUAN";
- }else{
- $statusCuti = "";
- }
- }
- $punch_transaksi[$arr_counter] = $statusCuti;
- $holiday = $this->leave->validateHoliday($datestring);
- if($holiday == false){ // validate holiday ke tak
- //check whether weekend
- $day_in_word = date("l", mktime(0, 0, 0, $month, $x, $year));
- switch ($day_in_word) {
- case "Sunday":
- $day_in_word = "Ahad";
- break;
- case "Monday":
- $day_in_word = "Isnin";
- break;
- case "Tuesday":
- $day_in_word = "Selasa";
- break;
- case "Wednesday":
- $day_in_word = "Rabu";
- break;
- case "Thursday":
- $day_in_word = "Khamis";
- break;
- case "Friday":
- $day_in_word = "Jumaat";
- break;
- case "Saturday":
- $day_in_word = "Sabtu";
- break;
- }
- $staffCounter = 0;
- $curCompany = $arrcompworkhour[$day_in_word];
- if( $curCompany['weekend'] == 0){//hari bekerja
- //check hari tu cuti ke tak
- $staffleave = $this->leave->getLeaveByDateDetail($datestring,array('leave.staff_id'=>$mystaffid,'leave.leave_status'=>'APPROVED'));
- if($staffleave->num_rows() > 0){ //cuti
- $calendar_status[] = '<strong>'. $staffleave->row()->leave_reason . '</strong>';
- }else{
- $totalCompanyMinute[$arr_counter] = $curCompany['totalminute'];
- $rsAttendance = $this->attendance->getAttendance(array('attendance.attendance_date'=>$datestring,'attendance.staff_id'=>$mystaffid));
- if($rsAttendance->num_rows() > 0){ //yang ni ada punch in
- $mytime = $this->attendance->getTotalWorkingStaffDaily(array('start'=>$curCompany['start'],'end'=>$curCompany['ending']),array('start'=>$rsAttendance->row()->punch_in,'end'=>$rsAttendance->row()->punch_out)); //ni kira total minute dalam sehari
- $totalMinute[$arr_counter] = $mytime;
- //---------------------------------------------------- store database untuk attendance yang ada record ----------------------
- $calendar_status[] = '';
- if($rsAttendance->row()->att_status == 'LEWAT'){
- $punch_in[$arr_counter] = '<font color="#FF0000">' . $rsAttendance->row()->punch_in . '</font>';
- }else{
- $punch_in[$arr_counter] = $rsAttendance->row()->punch_in;
- }
- //$punch_in[$arr_counter] = $rsAttendance->row()->punch_in;
- $alasan_lewatpunchin[$arr_counter] = $rsAttendance->row()->alasan_lewatpunchin;
- $punch_in2[$arr_counter] = $rsAttendance->row()->punch_in2;
- $punch_in3[$arr_counter] = $rsAttendance->row()->punch_in3;
- if($rsAttendance->row()->transaksi_awalpunchout == 'AWAL'){
- $punch_out[$arr_counter] = '<font color="#FF0000">' . $rsAttendance->row()->punch_out . '</font>';
- }else{
- $punch_out[$arr_counter] = $rsAttendance->row()->punch_out;
- }
- //$punch_out[$arr_counter] = $rsAttendance->row()->punch_out;
- $alasan_awalpunchout[$arr_counter] = $rsAttendance->row()->alasan_awalpunchout;
- $punch_out2[$arr_counter] = $rsAttendance->row()->punch_out2;
- $punch_out3[$arr_counter] = $rsAttendance->row()->punch_out3;
- //$punch_out[$arr_counter] = $rsAttendance->row()->punch_out;
- #ini untuk simpan remark lewat
- /*
- $punch_status[$arr_counter] = $rsAttendance->row()->remarks_lewat;
- $punch_transaksi[$arr_counter] = $rsAttendance->row()->transaksi;
- #ini untuk grab lewat
- $query2 = $this->attendance->getAttendanceVerify(array('attendanceverify.attendance_date'=>$datestring,'attendanceverify.staff_id'=>$mystaffid));
- if($query2->num_rows() > 0){
- $punch_status[$arr_counter] = $query2->row()->attendance_remarks; #remark catatan manual.
- $punch_transaksi[$arr_counter] = $query2->row()->attendance_applystatus; #apply status.
- }
- */
- //---------------------------------------------------- end store databse untuk attendance yang ada record
- }else{
- //echo $statusCuti;
- $query2 = $this->attendance->getAttendanceVerify(array('attendanceverify.attendance_date'=>$datestring,'attendanceverify.staff_id'=>$mystaffid));
- if($query2->num_rows() > 0){
- $punch_status[$arr_counter] = $query2->row()->attendance_remarks; #remark catatan manual.
- $punch_transaksi[$arr_counter] = $query2->row()->attendance_applystatus; #apply status.
- }
- $calendar_status[] = '<font color="#FF0000">ABSENT</font>';
- //yang ni tak der punch in.
- }
- }
- }else{
- $calendar_status[] = 'WEEKEND';
- }//maksudnya hari bekerja
- }else{
- //echo 'holiday';
- $rsHolidayDetail = $this->leave->getHolidayDetail($datestring);
- $calendar_status[] = $rsHolidayDetail->holiday_name;
- }
- }
- //-----------------------------------------------------
- }else{
- $data['error'] = 'Please Select Staff';
- //echo 'erro';
- //exit();
- }
- }
- $data['staff_lookup'] = $this->staff->get_records();
- $data['title'] = 'Kalendar Staf';
- $data['month'] = $month;
- $data['year'] = $year;
- $data['userlevel'] = $userlevelsession;
- if(isset($calendar)){
- $data['mystaffid'] = $mystaffid;
- $data['calendar'] = $calendar;
- $data['calendar_status'] = $calendar_status;
- $data['punch_in'] = $punch_in;
- if (isset($punch_in2)){
- $data['punch_in2'] = $punch_in2;//array punch in 2
- }
- if (isset($punch_in3))
- {
- $data['punch_in3'] = $punch_in3;
- }
- if (isset($alasan_lewatpunchin))
- {
- $data['alasan_lewatpunchin'] = $alasan_lewatpunchin;
- }
- if (isset($alasan_awalpunchout))
- {
- $data['alasan_awalpunchout'] = $alasan_awalpunchout;
- }
- $data['punch_out'] = $punch_out;
- if (isset($punch_out2))
- {
- $data['punch_out2'] = $punch_out2;
- }
- if (isset($punch_out3))
- {
- $data['punch_out3'] = $punch_out3;
- }
- $data['punch_day'] = $punch_day;
- $data['punch_status'] = $punch_status;
- $data['punch_transaksi'] = $punch_transaksi;
- //print_r($punch_transaksi);
- //print_r($totalMinute);
- $data['total_minute'] = $totalMinute;
- $data['total_company_minute'] = $totalCompanyMinute;
- }
- $this->load->view('header',$data1);
- $this->load->view('sidebar',$data);
- //for($x=1;$x<5;$x++){
- $this->load->view('attendance/staffcalendar',$data);
- //}
- $this->load->view('footer');
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement