예제 #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;
 }