Advertisement
wanahcoi

Untitled

Mar 26th, 2015
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.50 KB | None | 0 0
  1. function staffcalendar(){
  2. $arrSess = $this->auth->get_session();
  3. $staff = $arrSess['staffid'];
  4. $data['staffid'] = $arrSess['staffid'];
  5. $data['username'] = $arrSess['username'];
  6. $data['iduser'] = $arrSess['userid'];
  7. $data1['menu'] = 'attendance';
  8. $data['title'] = 'Kalendar Staf';
  9.  
  10. $submit = $this->input->post('show');
  11. $mystaffid = $this->input->post('staff');
  12. $monthid = $this->input->post('month');
  13. $yearid = $this->input->post('year');
  14.  
  15. $this->load->model('staff_model','staff');
  16. $this->load->model('leave_model','leave');
  17. $this->load->model('setup_model','setup');
  18. $this->load->model('attendance_model','attendance');
  19. $this->load->model('department_model','department');
  20.  
  21. if($monthid > 0 && $yearid > 0){
  22. $month = $monthid;
  23. $year = $yearid;
  24. }else{
  25. $month = date('m');
  26. $year = date('Y');
  27. }
  28. $userlevelsession = 'admin';
  29. $departmentid = $this->input->post('department_id');
  30. $data['departmentid'] = $departmentid;
  31. //dapatkan list mengikut department.
  32. if($departmentid > 0){
  33. $qstaff = $this->staff->get_records(array('staff.department_id'=>$departmentid));
  34. $data['qstaff'] = $qstaff;
  35. }
  36. //ACCCESS LEVEL
  37. if($this->session->userdata('attendancelevel') == 'DIRECTOR' || $this->session->userdata('attendancelevel') == 'DEPUTY DIRECTOR' || $this->session->userdata('attendancelevel') == 'PA'){
  38. $staffid = $this->session->userdata('mystaffid');
  39. $rsstaff = $this->staff->get_records_id($staffid);
  40. $data['department'] = $this->department->show_department(array('department.department_id'=>$rsstaff->department_id));
  41. $department_id = $rsstaff->department_id;
  42. }else{
  43. $data['department'] = $this->department->show_department();
  44. $post_department = $this->input->post("department_id");
  45. if($post_department > 0){
  46. $department_id = $post_department;
  47. }else{
  48. $department_id = 0;
  49. }
  50. }
  51.  
  52. //$data['department'] = $this->department->show_department();
  53. if($submit == 'Dapatkan'){ //bila submit
  54.  
  55. if($mystaffid > 0 && $month > 0 && $year > 0){
  56. $data['staffid'] = $mystaffid; #staff id
  57. $rsStaff = $this->staff->get_records_id($mystaffid); #get detail staff id
  58. //echo $rsStaff->staff_name;
  59. //--------------------------------- ---- validate total days in month ---------------------------------
  60. #check last day.
  61. if( checkdate($month,31,$year) == true){
  62. $lastday = 31;
  63. }else if( checkdate($month,30,$year) == true){
  64. $lastday = 30;
  65. }else if( checkdate($month,28,$year) == true){
  66. $lastday = 28;
  67. }
  68. if($month == date('n') && $year == date('Y')){
  69. $lastday = date('j');
  70. $lastday = $lastday;
  71. // echo $lastday;
  72. }
  73.  
  74. //--------------------------------------- dapatkan working hour ----------------------------------------
  75. $cworkhour = $this->setup->getCompanyWorkingHour(array('timeline.timeline_id'=>$rsStaff->timeline_id))->result();
  76. #ni company working hour.
  77. foreach($cworkhour as $item){
  78. //echo $item->company_id . '<br>';
  79. $arr['weekend'] = $item->weekend;
  80. $arr['ending'] = $item->end;
  81. $arr['start'] = $item->start;
  82. $arr['totalminute'] = fTimeToMinute($item->start,$item->end);
  83. //echo $arr['totalminute'];
  84. //echo $arr['totalminute']
  85. $arrcompworkhour[$item->day] = $arr;
  86. }
  87.  
  88. $arrHoliday = $this->attendance->holiday($month,$year); //get array dari model
  89.  
  90.  
  91. //------------ identify cuti/dan sebagainya------------
  92. for($x=1;$x<=$lastday;$x++){
  93. $arr_counter = $x-1;
  94. //set default variable
  95. //------------------------------
  96. $punch_in[$arr_counter] = $punch_day[$arr_counter] = $punch_out[$arr_counter] = "";
  97. $punch_day[$arr_counter] = date("l", mktime(0, 0, 0, $month, $x, $year));
  98. $punch_status[$arr_counter] = $punch_transaksi[$arr_counter] = "";
  99. $totalMinute[$arr_counter] = 0;
  100. $totalCompanyMinute[$arr_counter] = 0;
  101.  
  102.  
  103. if($x < 10){
  104. if($month < 10){
  105. $datestring = $year . '-0' . $month . '-' . '0' . $x;
  106. }else{
  107. $datestring = $year . '-' . $month . '-' . '0' . $x;
  108. }
  109.  
  110. }else{
  111. if($month < 10){
  112. $datestring = $year . '-0' . $month . '-' . $x;
  113. }else{
  114. $datestring = $year . '-' . $month . '-' . $x;
  115. }
  116.  
  117.  
  118. }
  119. if($x < 10){
  120. if($month < 10){
  121. $calendar[] = '0' . $x . '/0' . $month . '/' . $year;
  122. }else{
  123. $calendar[] = '0' . $x . '/' . $month . '/' . $year;
  124. }
  125.  
  126. }else{
  127. if($month < 10 ){
  128. $calendar[] = $x . '/0' . $month . '/' . $year;
  129. }else{
  130. $calendar[] = $x . '/' . $month . '/' . $year;
  131. }
  132.  
  133. }
  134.  
  135. //echo $datestring . '<br>';
  136. $timestamp = strtotime($datestring);
  137. $day_tostring = date('l', $timestamp);
  138. //echo '<br>'. $datestring . $day;
  139.  
  140. if(array_key_exists($datestring,$arrHoliday)){
  141. //echo $datestring . "cuti" . '<br>';
  142. $statusCuti = $arrHoliday[$datestring];
  143. //echo $statusCuti;
  144. }else{
  145. //echo $datestring . "tidakcuti" . '<br>';
  146. if($day_tostring == 'Sunday' || $day_tostring == 'Saturday'){
  147. $statusCuti = "CUTI MINGGUAN";
  148. }else{
  149. $statusCuti = "";
  150. }
  151. }
  152. $punch_transaksi[$arr_counter] = $statusCuti;
  153. $holiday = $this->leave->validateHoliday($datestring);
  154. if($holiday == false){ // validate holiday ke tak
  155. //check whether weekend
  156. $day_in_word = date("l", mktime(0, 0, 0, $month, $x, $year));
  157. switch ($day_in_word) {
  158. case "Sunday":
  159. $day_in_word = "Ahad";
  160. break;
  161. case "Monday":
  162. $day_in_word = "Isnin";
  163. break;
  164. case "Tuesday":
  165. $day_in_word = "Selasa";
  166. break;
  167. case "Wednesday":
  168. $day_in_word = "Rabu";
  169. break;
  170. case "Thursday":
  171. $day_in_word = "Khamis";
  172. break;
  173. case "Friday":
  174. $day_in_word = "Jumaat";
  175. break;
  176. case "Saturday":
  177. $day_in_word = "Sabtu";
  178. break;
  179. }
  180. $staffCounter = 0;
  181. $curCompany = $arrcompworkhour[$day_in_word];
  182. if( $curCompany['weekend'] == 0){//hari bekerja
  183. //check hari tu cuti ke tak
  184. $staffleave = $this->leave->getLeaveByDateDetail($datestring,array('leave.staff_id'=>$mystaffid,'leave.leave_status'=>'APPROVED'));
  185. if($staffleave->num_rows() > 0){ //cuti
  186. $calendar_status[] = '<strong>'. $staffleave->row()->leave_reason . '</strong>';
  187. }else{
  188. $totalCompanyMinute[$arr_counter] = $curCompany['totalminute'];
  189. $rsAttendance = $this->attendance->getAttendance(array('attendance.attendance_date'=>$datestring,'attendance.staff_id'=>$mystaffid));
  190. if($rsAttendance->num_rows() > 0){ //yang ni ada punch in
  191. $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
  192. $totalMinute[$arr_counter] = $mytime;
  193. //---------------------------------------------------- store database untuk attendance yang ada record ----------------------
  194. $calendar_status[] = '';
  195. if($rsAttendance->row()->att_status == 'LEWAT'){
  196. $punch_in[$arr_counter] = '<font color="#FF0000">' . $rsAttendance->row()->punch_in . '</font>';
  197. }else{
  198. $punch_in[$arr_counter] = $rsAttendance->row()->punch_in;
  199. }
  200. //$punch_in[$arr_counter] = $rsAttendance->row()->punch_in;
  201. $alasan_lewatpunchin[$arr_counter] = $rsAttendance->row()->alasan_lewatpunchin;
  202. $punch_in2[$arr_counter] = $rsAttendance->row()->punch_in2;
  203. $punch_in3[$arr_counter] = $rsAttendance->row()->punch_in3;
  204.  
  205. if($rsAttendance->row()->transaksi_awalpunchout == 'AWAL'){
  206. $punch_out[$arr_counter] = '<font color="#FF0000">' . $rsAttendance->row()->punch_out . '</font>';
  207. }else{
  208. $punch_out[$arr_counter] = $rsAttendance->row()->punch_out;
  209. }
  210. //$punch_out[$arr_counter] = $rsAttendance->row()->punch_out;
  211. $alasan_awalpunchout[$arr_counter] = $rsAttendance->row()->alasan_awalpunchout;
  212. $punch_out2[$arr_counter] = $rsAttendance->row()->punch_out2;
  213. $punch_out3[$arr_counter] = $rsAttendance->row()->punch_out3;
  214.  
  215. //$punch_out[$arr_counter] = $rsAttendance->row()->punch_out;
  216. #ini untuk simpan remark lewat
  217.  
  218. /*
  219. $punch_status[$arr_counter] = $rsAttendance->row()->remarks_lewat;
  220. $punch_transaksi[$arr_counter] = $rsAttendance->row()->transaksi;
  221. #ini untuk grab lewat
  222. $query2 = $this->attendance->getAttendanceVerify(array('attendanceverify.attendance_date'=>$datestring,'attendanceverify.staff_id'=>$mystaffid));
  223. if($query2->num_rows() > 0){
  224. $punch_status[$arr_counter] = $query2->row()->attendance_remarks; #remark catatan manual.
  225. $punch_transaksi[$arr_counter] = $query2->row()->attendance_applystatus; #apply status.
  226. }
  227. */
  228. //---------------------------------------------------- end store databse untuk attendance yang ada record
  229. }else{
  230.  
  231.  
  232. //echo $statusCuti;
  233. $query2 = $this->attendance->getAttendanceVerify(array('attendanceverify.attendance_date'=>$datestring,'attendanceverify.staff_id'=>$mystaffid));
  234. if($query2->num_rows() > 0){
  235. $punch_status[$arr_counter] = $query2->row()->attendance_remarks; #remark catatan manual.
  236. $punch_transaksi[$arr_counter] = $query2->row()->attendance_applystatus; #apply status.
  237. }
  238. $calendar_status[] = '<font color="#FF0000">ABSENT</font>';
  239. //yang ni tak der punch in.
  240. }
  241. }
  242. }else{
  243. $calendar_status[] = 'WEEKEND';
  244. }//maksudnya hari bekerja
  245. }else{
  246. //echo 'holiday';
  247. $rsHolidayDetail = $this->leave->getHolidayDetail($datestring);
  248. $calendar_status[] = $rsHolidayDetail->holiday_name;
  249. }
  250.  
  251. }
  252. //-----------------------------------------------------
  253.  
  254. }else{
  255. $data['error'] = 'Please Select Staff';
  256. //echo 'erro';
  257. //exit();
  258. }
  259. }
  260. $data['staff_lookup'] = $this->staff->get_records();
  261. $data['title'] = 'Kalendar Staf';
  262. $data['month'] = $month;
  263. $data['year'] = $year;
  264. $data['userlevel'] = $userlevelsession;
  265. if(isset($calendar)){
  266. $data['mystaffid'] = $mystaffid;
  267. $data['calendar'] = $calendar;
  268. $data['calendar_status'] = $calendar_status;
  269. $data['punch_in'] = $punch_in;
  270. if (isset($punch_in2)){
  271. $data['punch_in2'] = $punch_in2;//array punch in 2
  272. }
  273. if (isset($punch_in3))
  274. {
  275. $data['punch_in3'] = $punch_in3;
  276. }
  277. if (isset($alasan_lewatpunchin))
  278. {
  279. $data['alasan_lewatpunchin'] = $alasan_lewatpunchin;
  280. }
  281. if (isset($alasan_awalpunchout))
  282. {
  283. $data['alasan_awalpunchout'] = $alasan_awalpunchout;
  284. }
  285. $data['punch_out'] = $punch_out;
  286. if (isset($punch_out2))
  287. {
  288. $data['punch_out2'] = $punch_out2;
  289. }
  290. if (isset($punch_out3))
  291. {
  292. $data['punch_out3'] = $punch_out3;
  293. }
  294.  
  295. $data['punch_day'] = $punch_day;
  296. $data['punch_status'] = $punch_status;
  297. $data['punch_transaksi'] = $punch_transaksi;
  298.  
  299. //print_r($punch_transaksi);
  300. //print_r($totalMinute);
  301. $data['total_minute'] = $totalMinute;
  302. $data['total_company_minute'] = $totalCompanyMinute;
  303. }
  304. $this->load->view('header',$data1);
  305. $this->load->view('sidebar',$data);
  306. //for($x=1;$x<5;$x++){
  307. $this->load->view('attendance/staffcalendar',$data);
  308.  
  309. //}
  310. $this->load->view('footer');
  311.  
  312. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement