/** * @return \Zend\Http\Response|ViewModel */ public function detailAction() { $id = (int) $this->params()->fromRoute('id', 0); $helper = new AttendanceBoardHelper(); $form = $helper->getForm($this->staffCombo()); $attendance = $this->attendanceTable()->getAttendance($id); if (!$attendance) { $attendance = new ArrayObject(array('attendanceId' => $id)); } else { $attendance = new ArrayObject($attendance->getArrayCopy()); } $attendance['hour'] = (int) date('H', time()); $attendance['minute'] = round((int) date('i', time()) / 5); if ($attendance['hour'] > 12 && strlen($attendance['inTime']) > 1) { $attendance['type'] = 'O'; } else { $attendance['type'] = 'I'; } $form->bind($attendance); $request = $this->getRequest(); if ($request->isPost()) { $post_data = $request->getPost(); $form->setData($post_data); $form->setInputFilter($helper->getInputFilter()); if ($form->isValid()) { $newData = $this->attendanceTable()->getAttendanceByStaff($attendance['staffId'], $attendance['attendanceDate']); if (!$newData) { $newData = new Attendance(); $newData->exchangeArray($attendance->getArrayCopy()); } $time = sprintf('%02d:%02d:00', $attendance['hour'], $attendance['minute'] * 5); if ($attendance['type'] == 'I') { $newData->setInTime($time); } else { $newData->setOutTime($time); } $this->attendanceTable()->saveAttendance($newData); $this->flashMessenger()->addSuccessMessage('Save successful'); return $this->redirect()->toRoute('hr_attendance'); } } return new ViewModel(array('form' => $form, 'id' => $id)); }
public function jsonAttendanceAction() { $request = $this->getRequest(); if ($request->isPost()) { $this->init_data(); $attendance = $this->attendanceTable()->checkAttendance($this->staff->getStaffId(), date('Y-m-d', time())); if (!$attendance) { $attendance = new Attendance(); $attendance->exchangeArray(array('staffId' => $this->staff->getStaffId(), 'attendanceDate' => date('Y-m-d', time()))); } $message = 'success'; try { $type = $this->params()->fromPost('status', ''); if ($type == 'I' && !$attendance->getInTime()) { $attendance->setInTime(date('H:i:s', time())); $this->attendanceTable()->saveAttendance($attendance); } else { if ($type == 'O' && !$attendance->getOutTime()) { $attendance->setOutTime(date('H:i:s', time())); $this->attendanceTable()->saveAttendance($attendance); } else { $message = 'You already registered. Please contact to HR if you want to change time.'; } } } catch (\Exception $ex) { $message = $ex->getMessage(); } return new JsonModel(array('message' => $message)); } return new JsonModel(array('message' => 'Invalid request.')); }
/** * @param Attendance $attendance * @return Attendance */ public function saveAttendance(Attendance $attendance) { $id = $attendance->getAttendanceId(); $data = $attendance->getArrayCopy(); if ($id > 0) { $this->update($data, array('attendanceId' => $id)); } else { unset($data['attendanceId']); $this->insert($data); } if (!$attendance->getAttendanceId()) { $attendance->setAttendanceId($this->getLastInsertValue()); } return $attendance; }