Example #1
0
 function calculateEntry($id)
 {
     $sql = "\n            SELECT * FROM timeEntries WHERE id = '" . $this->db->real_escape_string($id) . "';\n        ";
     $query = $this->db->query($sql);
     $result = $query->fetch_assoc();
     //Set inTime
     $inTime = new DateTime();
     $inTime->setTimestamp($result['inTime']);
     $roundedInTime = $this->nearestQuarterHour($result['inTime']);
     $inTimeRaw = $result['inTime'];
     $inTimeDate = date("Y-m-d", $result['inTime']);
     //Out Time
     $outTime = new DateTime();
     $outTime->setTimestamp($result['outTime']);
     $roundedOutTime = $this->nearestQuarterHour($result['outTime']);
     $outTimeRaw = $result['outTime'];
     $roundedOutTime = $this->nearestQuarterHour($result['outTime']);
     $outTimeDate = date("Y-m-d", $result['outTime']);
     $lessTime = $result['lessTime'];
     $timestamp = $result['timestamp'];
     $note = $result['note'];
     //Calculate Time Worked
     switch ($result['lessTime']) {
         case 60:
             $lessTime = 1;
             break;
         case 30:
             $lessTime = 0.5;
             break;
         case 15:
             $lessTime = 0.25;
             break;
         default:
             $lessTime = 0;
     }
     //Total Worked Time
     $dateTime1 = new DateTime($roundedInTime);
     $dateTime1->setDate(date('Y', strtotime($inTimeDate)), date('m', strtotime($inTimeDate)), date('d', strtotime($inTimeDate)));
     $dateTime2 = new DateTime($roundedOutTime);
     $dateTime2->setDate(date('Y', strtotime($outTimeDate)), date('m', strtotime($outTimeDate)), date('d', strtotime($outTimeDate)));
     $interval = $dateTime1->diff($dateTime2);
     $timeWorked = $this->timeToDecimal($interval->h . ":" . $interval->i) - $lessTime;
     if ($timeWorked !== 0) {
         $timeWorked = $timeWorked;
     } else {
         $timeWorked = 0;
     }
     //Get Code Information
     $code = new codeModel();
     $codeId = $result['codeId'];
     $code->load($result['codeId']);
     $codeName = $code->getName();
     $data['date'] = date('Y-m-d', $inTimeRaw);
     $data['inTime'] = $inTimeRaw;
     $data['outTime'] = $outTimeRaw;
     $data['lessTime'] = $lessTime;
     $data['timeWorked'] = $timeWorked;
     $data['code'] = $codeName;
     $data['timestamp'] = $timestamp;
     $data['note'] = $note;
     //Get the user of the entry.
     $entry = new timeEntryModel($id);
     if ($entry->validated($id, $result['userId'])) {
         $data['validated'] = 0;
     } else {
         $data['validated'] = 1;
     }
     return $data;
 }
Example #2
0
 function remove($id)
 {
     $this->db = Staple_DB::get();
     if ($id !== null) {
         $auth = Staple_Auth::get();
         $user = new userModel($auth->getAuthId());
         $userId = $user->getId();
         $accountLevel = $user->getAuthLevel();
         $entry = new timeEntryModel($id);
         $fullDate = $entry->getFullDate();
         $inTime = $entry->getInTime();
         $outTime = $entry->getOutTime();
         $effectedUserId = $entry->getUserId();
         $effectedUser = new userModel();
         $account = $effectedUser->userInfo($effectedUserId);
         //Check for admin account delete
         if ($accountLevel >= 900) {
             $sql = "DELETE FROM timeEntries WHERE id = '" . $this->db->real_escape_string($id) . "'";
             //AND userId <> '".$this->db->real_escape_string($userId)."'
             if ($this->db->query($sql)) {
                 $audit = new auditModel();
                 $audit->setUserId($account['id']);
                 $audit->setAction('Admin Entry Remove');
                 $audit->setItem($user->getUsername() . " removed entry for " . $fullDate . " In Time: " . $inTime . " Out Time: " . $outTime . "");
                 $audit->save();
                 return true;
             }
         } else {
             //Check if validated
             if ($this->validated($id)) {
                 $sql = "DELETE FROM timeEntries WHERE id = '" . $this->db->real_escape_string($id) . "' AND userId = '" . $this->db->real_escape_string($userId) . "'";
                 if ($this->db->query($sql)) {
                     return true;
                 }
             }
         }
     }
 }
 public function admininsert()
 {
     if ($this->accountLevel >= 900) {
         $form = new insertTimeForm();
         $form->admin(1);
         if ($form->wasSubmitted()) {
             $form->addData($_POST);
             if ($form->validate()) {
                 $data = $form->exportFormData();
                 //Create a new entry object and set properties
                 $entry = new timeEntryModel();
                 $entry->setDate($data['date']);
                 $entry->setInTime($data['inTime']);
                 $entry->setOutTime($data['outTime']);
                 $entry->setLessTime($data['lessTime']);
                 $entry->setCodeId($data['code']);
                 $entry->setUserId($data['account']);
                 $entry->setNote($data['note']);
                 //Save entry data to table.
                 if ($entry->adminSave()) {
                     //Return a new time form with success message
                     $form = new insertTimeForm();
                     $form->admin(1);
                     $form->successMessage = array("<i class=\"fa fa-check\"></i> Entry saved for " . $data['date'] . "");
                     $this->view->form = $form;
                 } else {
                     //Return the same form with a warning message
                     $message = "<i class=\"fa fa-warning\"></i> Administrative action not allowed on your own timesheet.";
                     $form->errorMessage = array($message);
                     $this->view->form = $form;
                 }
             } else {
                 $this->view->form = $form;
             }
         } else {
             $this->view->form = $form;
         }
     } else {
         header("location: " . $this->_link(array('index')) . "");
     }
 }