public function _start()
 {
     $auth = Staple_Auth::get();
     $user = new userModel();
     $user->userInfo($auth->getAuthId());
     $this->accountLevel = $user->getAuthLevel();
     $this->setLayout('insertFormLayout');
     $this->setName('insertTimeForm')->setAction($this->link(array('timesheet')));
     $date = new Staple_Form_FoundationTextElement('date', 'Date');
     $date->setRequired()->addValidator(new Staple_Form_Validate_Date())->addAttrib('placeholder', 'mm/dd/yyyy');
     $inTime = new Staple_Form_FoundationTextElement('inTime', 'Time In');
     $inTime->setRequired()->addFilter(new Staple_Form_Filter_Trim())->addValidator(new Staple_Form_Validate_Regex('/^(0|[0-9]|1[012]):[0-5][0-9] ?((a|p)m|(A|P)M)$/', 'Invalid time format. Expected format: h:mm am/pm.'))->addAttrib('placeholder', 'h:mm am/pm');
     $outTime = new Staple_Form_FoundationTextElement('outTime', 'Time Out');
     $outTime->setRequired()->addFilter(new Staple_Form_Filter_Trim())->addValidator(new Staple_Form_Validate_Regex('/^(0|[0-9]|1[012]):[0-5][0-9] ?((a|p)m|(A|P)M)$/', 'Invalid time format. Expected format: h:mm am/pm.'))->addAttrib('placeholder', 'h:mm am/pm');
     $lessTime = new Staple_Form_FoundationSelectElement('lessTime', 'Less Time');
     $lessTime->setRequired()->addOptionsArray(array("0" => "None", "60" => "1 Hour", "30" => "30 Minutes"))->addValidator(new Staple_Form_Validate_InArray(array('0', '60', '30')));
     $timeCodes = new codeModel();
     $code = new Staple_Form_FoundationSelectElement('code', 'Code');
     $code->setRequired()->addOption("x", "Select an option")->addOptionsArray($timeCodes->allCodes())->addValidator(new Staple_Form_Validate_InArray(array_keys($timeCodes->allCodes())));
     $code->setValue($timeCodes->getIdFor('Normal')['id']);
     $submit = new Staple_Form_FoundationSubmitElement('submit', 'Submit');
     $submit->addClass('button expand radius');
     $this->addField($date, $inTime, $outTime, $lessTime, $code, $submit);
 }
 function calculatedTotals($code, $startDate, $endDate, $uid = null)
 {
     //Get user ID from Auth
     $user = new userModel();
     if ($uid == null) {
         $userId = $user->getId();
     } else {
         $account = $user->userInfo($uid);
         $userId = $account['id'];
     }
     $sql = "SELECT codeId, inTime, outTime, lessTime FROM timeEntries WHERE inTime > UNIX_TIMESTAMP('{$startDate} 00:00:00') AND outTime < UNIX_TIMESTAMP('{$endDate} 23:59:59') AND userId = {$userId} AND codeId = {$code};";
     if ($this->db->query($sql)->fetch_row() > 0) {
         $query = $this->db->query($sql);
         $total = 0;
         while ($result = $query->fetch_assoc()) {
             $inTime = $result['inTime'];
             $outTime = $result['outTime'];
             switch ($result['lessTime']) {
                 case 60:
                     $lessTime = 1;
                     break;
                 case 30:
                     $lessTime = 0.5;
                     break;
                 case 15:
                     $lessTime = 0.25;
                     break;
                 default:
                     $lessTime = 0;
             }
             $roundedInTime = $this->nearestQuarterHour($inTime);
             $roundedOutTime = $this->nearestQuarterHour($outTime);
             $lapse = $roundedOutTime - $roundedInTime;
             $lapseHours = gmdate('H:i', $lapse);
             $decimalHours = $this->timeToDecimal($lapseHours);
             $total = $total + $decimalHours;
             $total = $total - $lessTime;
             $code = new codeModel();
             $codeId = $code->getIdFor("Unpaid Leave");
             if ($codeId['id'] == $result['codeId']) {
                 $total = -1 * $total;
             }
         }
         return $total;
     } else {
         return 0;
     }
 }