Procházet zdrojové kódy

Spilt timesheet model into a time entry model and a timesheet model. Started working on getting the timesheet querys. Have the entryModel submitting data to the table.

Adam Day před 9 roky
rodič
revize
9d3e6b533f

+ 1 - 1
application/controllers/indexController.php

@@ -9,7 +9,7 @@ class indexController extends Staple_Controller
 	public function index()
 	public function index()
 	{
 	{
 		$messages = array("The library will be closed on Monday for whatever reason. Just remember to not come in!");
 		$messages = array("The library will be closed on Monday for whatever reason. Just remember to not come in!");
-		$this->view->messages = $messages;
+		//$this->view->messages = $messages;
 	}
 	}
 }
 }
 ?>
 ?>

+ 73 - 66
application/controllers/timesheetController.php

@@ -6,121 +6,128 @@ class timesheetController extends Staple_Controller
 
 
     }
     }
 
 
-    public function index()
+    public function index($month = null, $year = null)
     {
     {
-        $timesheet = new timesheetModel();
-        $this->view->timesheet = $timesheet->load();
+        //Typecast variables
+        $month = (int) $month;
+        $year = (int) $year;
 
 
-        $insertTimeForm = new insertTimeForm();
+        //Build new insert form
+        $form = new insertTimeForm();
 
 
-        if($insertTimeForm->wasSubmitted())
+        //Check for form submission
+        if($form->wasSubmitted())
         {
         {
-            $insertTimeForm->addData($_POST);
-            if($insertTimeForm->validate())
+            //Add submitted data to the form
+            $form->addData($_POST);
+
+            //Check form validation
+            if($form->validate())
             {
             {
-                $data = $insertTimeForm->exportFormData();
+                //Export form data into an array
+                $data = $form->exportFormData();
 
 
+                //Compare in Times and out Times.
                 if(strtotime($data['inTime']) < strtotime($data['outTime']))
                 if(strtotime($data['inTime']) < strtotime($data['outTime']))
                 {
                 {
-                    //Set Varibales
-                    $timesheet = new timesheetModel();
-                    $userId = Staple_Auth::get();
-                    $user = new userModel($userId->getAuthId());
-                    $timesheet->setUserId($user->getId());
-                    $timesheet->setDate($data['date']);
-                    $timesheet->setInTime($data['inTime']);
-                    $timesheet->setOutTime($data['outTime']);
-                    $timesheet->setLessTime($data['lessTime']);
-                    $timesheet->setCodeId($data['code']);
+                    //Create a new entry object
+                    $entry = new timeEntryModel();
+                    $entry->setDate($data['date']);
+                    $entry->setInTime($data['inTime']);
+                    $entry->setOutTime($data['outTime']);
+                    $entry->setLessTime($data['lessTime']);
+                    $entry->setCodeId($data['code']);
 
 
-                    //Save
-                    if($timesheet->save())
+                    if($entry->save())
                     {
                     {
-                        header("location:".$this->_link(array('timesheet'))."");
+                        $this->view->message = "Entry saved.";
                     }
                     }
                     else
                     else
                     {
                     {
-                        $this->view->message = "Unable to save entry.";
+                        $this->view->message = "ERROR: Unable to save entry.";
                     }
                     }
                 }
                 }
                 else
                 else
                 {
                 {
-                    $insertTimeForm->message = array("<b>'Time In'</b> entry cannot be before <b>'Time Out'</b> entry.");
-                    $this->view->insertTimeForm = $insertTimeForm;
+                    //Send form with error message back.
+                    $form->message = array("<b>'Time In'</b> entry cannot be before <b>'Time Out'</b> entry.");
+                    $this->view->insertTimeForm = $form;
                 }
                 }
             }
             }
             else
             else
             {
             {
-                $this->view->insertTimeForm = $insertTimeForm;
+                $this->view->insertTimeForm = $form;
             }
             }
         }
         }
         else
         else
         {
         {
-            $this->view->insertTimeForm = $insertTimeForm;
+            $this->view->insertTimeForm = $form;
         }
         }
-    }
 
 
-    public function remove($id)
-    {
+        //Load timesheet for user.
+        $timesheet = new timesheetModel($month,$year);
+        echo $timesheet->getStartDate()."<br>";
+        echo $timesheet->getEndDate();
+
+        //View
+        $this->view->year = $timesheet->getYear();
+        $this->view->nextYear = $timesheet->getNextYear();
+        $this->view->previousYear = $timesheet->getPreviousYear();
 
 
+        $this->view->month = $timesheet->getMonth();
+        $this->view->previousMonth = $timesheet->getPreviousMonth();
+        $this->view->nextMonth = $timesheet->getNextMonth();
     }
     }
 
 
-    public function edit($id = null)
+    public function remove($id)
     {
     {
         if($id != null)
         if($id != null)
         {
         {
+            //Confirm entry for user
             $timesheet = new timesheetModel();
             $timesheet = new timesheetModel();
             if($timesheet->exists($id))
             if($timesheet->exists($id))
             {
             {
-                $form = new editTimeForm();
-                $form->setAction($this->_link(array('timesheet','edit',$id)));
-                $form->addData($timesheet->entry($id));
-                $form->id = $id;
-
-                if($form->wasSubmitted())
+                //Delete Item
+                if($timesheet->remove($id))
                 {
                 {
-                    $form->addData($_POST);
-                    if($form->validate())
-                    {
-                        $data = $form->exportFormData();
-                        //Set Varibales
-                        $userId = Staple_Auth::get();
-                        $user = new userModel($userId->getAuthId());
-                        $timesheet->setUserId($user->getId());
-                        $timesheet->setDate($data['date']);
-                        $timesheet->setInTime($data['inTime']);
-                        $timesheet->setOutTime($data['outTime']);
-                        $timesheet->setLessTime($data['lessTime']);
-                        $timesheet->setCodeId($data['code']);
-
-                        if($timesheet->save($id))
-                        {
-                            echo "Updated.";
-                        }
-                        else
-                        {
-                            echo "Not updated.";
-                        }
-                    }
-                    else
-                    {
-                        $this->view->form = $form;
-                    }
+                    $this->view->message = "Entry removed.";
                 }
                 }
                 else
                 else
                 {
                 {
-                    $this->view->form = $form;
+                    $this->view->message = "ERROR: Could not remove entry.";
                 }
                 }
             }
             }
             else
             else
             {
             {
-                echo "Here";
+                header("location: ".$this->_link(array('timesheet'))."");
+            }
+        }
+        else
+        {
+            header("location: ".$this->_link(array('timesheet'))."");
+        }
+    }
+
+    public function edit($id = null)
+    {
+        if($id != null)
+        {
+            $entry = new timeEntryModel();
+            if($entry->load($id))
+            {
+                $form = new editTimeForm();
+                $form->setAction($this->_link(array('timesheet','edit',$id)));
+
+            }
+            else
+            {
+                echo "Entry loaded";
                 //header("location: ".$this->_link(array('timesheet'))."");
                 //header("location: ".$this->_link(array('timesheet'))."");
             }
             }
         }
         }
         else
         else
         {
         {
-            echo "There";
+            echo "ERROR: Unable to load entry";
             //header("location: ".$this->_link(array('timesheet'))."");
             //header("location: ".$this->_link(array('timesheet'))."");
         }
         }
     }
     }

+ 6 - 3
application/forms/editTimeForm.php

@@ -10,16 +10,19 @@ class editTimeForm extends Staple_Form
 
 
         $date = new Staple_Form_FoundationTextElement('date','Date');
         $date = new Staple_Form_FoundationTextElement('date','Date');
         $date->setRequired()
         $date->setRequired()
+            ->addValidator(new Staple_Form_Validate_Length('1','10'))
             ->addValidator(new Staple_Form_Validate_Date())
             ->addValidator(new Staple_Form_Validate_Date())
-            ->addAttrib("placeholder","Example: MM\DD\YYYY");
+            ->addAttrib('placeholder','mm/dd/yyyy');
 
 
         $inTime = new Staple_Form_FoundationTextElement('inTime','Time In');
         $inTime = new Staple_Form_FoundationTextElement('inTime','Time In');
         $inTime->setRequired()
         $inTime->setRequired()
-            ->addValidator(new Staple_Form_Validate_Length(1,10));
+            ->addValidator(new Staple_Form_Validate_Length('1','8'))
+            ->addAttrib('placeholder','h:mm am/pm');
 
 
         $outTime = new Staple_Form_FoundationTextElement('outTime','Time Out');
         $outTime = new Staple_Form_FoundationTextElement('outTime','Time Out');
         $outTime->setRequired()
         $outTime->setRequired()
-            ->addValidator(new Staple_Form_Validate_Length(1,10));
+            ->addValidator(new Staple_Form_Validate_Length('1','8'))
+            ->addAttrib('placeholder','h:mm am/pm');;
 
 
         $lessTime = new Staple_Form_FoundationSelectElement('lessTime','Less Time');
         $lessTime = new Staple_Form_FoundationSelectElement('lessTime','Less Time');
         $lessTime->setRequired()
         $lessTime->setRequired()

+ 7 - 3
application/forms/insertTimeForm.php

@@ -11,15 +11,19 @@ class insertTimeForm extends Staple_Form
 
 
         $date = new Staple_Form_FoundationTextElement('date','Date');
         $date = new Staple_Form_FoundationTextElement('date','Date');
         $date->setRequired()
         $date->setRequired()
-            ->addValidator(new Staple_Form_Validate_Length('1','10'));
+            ->addValidator(new Staple_Form_Validate_Length('1','10'))
+            ->addValidator(new Staple_Form_Validate_Date())
+            ->addAttrib('placeholder','mm/dd/yyyy');
 
 
         $inTime = new Staple_Form_FoundationTextElement('inTime','Time In');
         $inTime = new Staple_Form_FoundationTextElement('inTime','Time In');
         $inTime->setRequired()
         $inTime->setRequired()
-            ->addValidator(new Staple_Form_Validate_Length('1','8'));
+            ->addValidator(new Staple_Form_Validate_Length('1','8'))
+            ->addAttrib('placeholder','h:mm am/pm');
 
 
         $outTime = new Staple_Form_FoundationTextElement('outTime','Time Out');
         $outTime = new Staple_Form_FoundationTextElement('outTime','Time Out');
         $outTime->setRequired()
         $outTime->setRequired()
-            ->addValidator(new Staple_Form_Validate_Length('1','8'));
+            ->addValidator(new Staple_Form_Validate_Length('1','8'))
+            ->addAttrib('placeholder','h:mm am/pm');;
 
 
         $lessTime = new Staple_Form_FoundationSelectElement('lessTime','Less Time');
         $lessTime = new Staple_Form_FoundationSelectElement('lessTime','Less Time');
         $lessTime->setRequired()
         $lessTime->setRequired()

+ 0 - 6
application/forms/layouts/editFormLayout.phtml

@@ -15,12 +15,6 @@
     ?>
     ?>
 </div>
 </div>
 <div class="row">
 <div class="row">
-    <div class="small-6 columns">
-            <a class="button secondary radius" href="<?php echo $this->link(array('timesheet')) ?>"><i class="fa fa-chevron-left"></i> Back</a>
-    </div>
-    <div class="small-6 columns text-right">
-        <a class="button radius alert" href="#"><i class="fa fa-trash"> Remove</i></a>
-    </div>
     <div class="small-12 medium-4 columns">
     <div class="small-12 medium-4 columns">
         <?php echo $this->fields['date'] ?>
         <?php echo $this->fields['date'] ?>
     </div>
     </div>

+ 78 - 33
application/forms/layouts/insertFormLayout.phtml

@@ -1,36 +1,81 @@
-<div class="row">
-    <?php
-        if(count($this->message) > 0)
+<div class="info">
+    <div class="row" id="entryToggle">
+        <div class="small-12 columns text-center">
+            <p><br><a class="" href="#"><i id="entryToggleIcon" class="fa fa-chevron-circle-up"></i> <span id="entryToggleText">Hide</span></a></p>
+        </div>
+    </div>
+    <div id="entryForm">
+        <div class="row">
+            <div class="small-12 columns">
+                <div class="row">
+                    <?php
+                    if(count($this->message) > 0)
+                    {
+                        echo "<div class=\"small-12 columns\">";
+                        echo "<div data-alert class=\"alert-box alert\">";
+                        foreach($this->message as $message)
+                        {
+                            echo $message;
+                        }
+                        echo "<a href=\"#\" class=\"close\">&times;</a></div>";
+                        echo "</div>";
+                    }
+                    echo $this->formstart();
+                    ?>
+                </div>
+                <div class="row">
+                    <div class="small-6 medium-4 columns">
+                        <?php echo $this->fields['date'] ?>
+                    </div>
+                    <div class="small-6 medium-4 columns">
+                        <?php echo $this->fields['inTime'] ?>
+                    </div>
+                    <div class="small-6 medium-4 columns">
+                        <?php echo $this->fields['outTime'] ?>
+                    </div>
+                </div>
+                <div class="row">
+                    <div class="small-6 medium-4 columns">
+                        <?php echo $this->fields['lessTime'] ?>
+                    </div>
+                    <div class="small-6 medium-4 columns">
+                        <?php echo $this->fields['code'] ?>
+                    </div>
+                    <div class="small-6 medium-4 columns">
+                        <br>
+                        <?php echo $this->fields['submit'] ?>
+                    </div>
+                    <?php echo $this->formend(); ?>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script>
+    $(document).ready(function() {
+
+        $(function() {
+            $( "#date" ).datepicker({ minDate: "<?php echo date("m/d/Y", strtotime("-1 month + 23 days")) ?>", maxDate: "<?php echo date("m/d/Y", strtotime("+6 month")) ?>" });
+        });
+
+        $('#entryToggle').click(function()
         {
         {
-            echo "<div class=\"small-12 columns\">";
-            echo "<div data-alert class=\"alert-box alert\">";
-            foreach($this->message as $message)
+            if($('#entryForm').is(":visible"))
             {
             {
-                echo $message;
+                $('#entryToggleIcon').addClass('fa-chevron-circle-down');
+                $('#entryToggleIcon').removeClass('fa-chevron-circle-up');
+                $('#entryToggleText').html('Show');
             }
             }
-            echo "<a href=\"#\" class=\"close\">&times;</a></div>";
-            echo "</div>";
-        }
-        echo $this->formstart();
-    ?>
-    <div class="small-6 medium-4 columns">
-        <?php echo $this->fields['date'] ?>
-    </div>
-    <div class="small-6 medium-4 columns">
-        <?php echo $this->fields['inTime'] ?>
-    </div>
-    <div class="small-6 medium-4 columns">
-        <?php echo $this->fields['outTime'] ?>
-    </div>
-    <div class="small-6 medium-4 columns">
-        <?php echo $this->fields['lessTime'] ?>
-    </div>
-    <div class="small-6 medium-4 columns">
-        <?php echo $this->fields['code'] ?>
-    </div>
-    <div class="small-6 medium-4 columns">
-        <br>
-        <?php echo $this->fields['submit'] ?>
-    </div>
-    <?php echo $this->formend(); ?>
-</div>
+            else
+            {
+                $('#entryToggleIcon').addClass('fa-chevron-circle-up');
+                $('#entryToggleIcon').removeClass('fa-chevron-circle-down');
+                $('#entryToggleText').html('Hide')
+            }
+            $('#entryForm').slideToggle(400);
+        });
+
+
+    });
+</script>

+ 193 - 0
application/models/timeEntryModel.php

@@ -0,0 +1,193 @@
+<?php
+
+	class timeEntryModel extends Staple_Model
+	{
+		private $db;
+
+		private $id;
+        private $date;
+		private $inTime;
+		private $outTime;
+		private $lessTime;
+		private $codeId;
+
+        /**
+         * @return mixed
+         */
+        public function getId()
+        {
+            return $this->id;
+        }
+
+        /**
+         * @param mixed $id
+         */
+        public function setId($id)
+        {
+            $this->id = $id;
+        }
+
+        /**
+         * @return mixed
+         */
+        public function getDate()
+        {
+            return $this->date;
+        }
+
+        /**
+         * @param mixed $date
+         */
+        public function setDate($date)
+        {
+            $this->date = $date;
+        }
+
+        /**
+         * @return mixed
+         */
+        public function getInTime()
+        {
+            return $this->inTime;
+        }
+
+        /**
+         * @param mixed $inTime
+         */
+        public function setInTime($inTime)
+        {
+            $this->inTime = $inTime;
+        }
+
+        /**
+         * @return mixed
+         */
+        public function getOutTime()
+        {
+            return $this->outTime;
+        }
+
+        /**
+         * @param mixed $outTime
+         */
+        public function setOutTime($outTime)
+        {
+            $this->outTime = $outTime;
+        }
+
+        /**
+         * @return mixed
+         */
+        public function getLessTime()
+        {
+            return $this->lessTime;
+        }
+
+        /**
+         * @param mixed $lessTime
+         */
+        public function setLessTime($lessTime)
+        {
+            $this->lessTime = $lessTime;
+        }
+
+        /**
+         * @return mixed
+         */
+        public function getCodeId()
+        {
+            return $this->codeId;
+        }
+
+        /**
+         * @param mixed $codeId
+         */
+        public function setCodeId($codeId)
+        {
+            $this->codeId = $codeId;
+        }
+
+		function __construct($id = null)
+		{
+            $this->db = Staple_DB::get();
+			if($id !== null)
+            {
+                $sql = "SELECT * FROM timeEntries WHERE id = '".$this->db->real_escape_string($id)."'";
+
+                if($this->db->query($sql)->fetch_row() > 0)
+                {
+                    $query = $this->db->query($sql);
+                    $result = $query->fetch_assoc();
+
+                    $this->setDate(date("m/d/Y",$result['inTime']));
+                    $this->setInTime(date("h:i A",$result['inTime']));
+                    $this->setOutTime(date("h:i A",$result['outTime']));
+                    $this->setLessTime($result['lessTime']);
+                    $this->setCodeId($result['codeId']);
+                }
+            }
+		}
+
+        function remove($id)
+        {
+            $this->db = Staple_DB::get();
+            if($id !== null)
+            {
+                $auth = Staple_Auth::get();
+                $user = new userModel($auth->getAuthId());
+                $userId = $user->getId();
+
+                $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;
+                }
+            }
+        }
+
+		function save()
+		{
+            $this->db = Staple_DB::get();
+            $auth = Staple_Auth::get();
+            $user = new userModel($auth->getAuthId());
+            $userId = $user->getId();
+
+            $inTime = strtotime($this->getDate()." ".$this->getInTime());
+            $outTime = strtotime($this->getDate()." ".$this->getOutTime());
+
+            if($this->getId() == NULL)
+			{
+				//Insert new item
+				$sql = "INSERT INTO timeEntries (userId, inTime, outTime, lessTime, codeId)
+					VALUES (
+						'".$this->db->real_escape_string($userId)."',
+						'".$this->db->real_escape_string($inTime)."',
+						'".$this->db->real_escape_string($outTime)."',
+						'".$this->db->real_escape_string($this->getLessTime())."',
+						'".$this->db->real_escape_string($this->getCodeId())."'
+						)";
+			}
+			else
+			{
+				//Update item
+				$sql = "UPDATE timeEntries SET
+					userId='".$this->db->real_escape_string($userId)."',
+					inTime='".$this->db->real_escape_string($inTime)."',
+					outTime='".$this->db->real_escape_string($outTime)."',
+					lessTime='".$this->db->real_escape_string($this->getLessTime())."',
+                    codeId='".$this->db->real_escape_string($this->getCodeId())."'
+					WHERE id='".$this->db->real_escape_string($this->getId())."'
+				";
+			}
+			
+			$query = $this->db->query($sql);
+			
+			if($query === true)
+			{
+				return true;
+			}
+		}
+	}
+
+?>

+ 175 - 321
application/models/timesheetModel.php

@@ -4,360 +4,214 @@
 	{
 	{
 		private $db;
 		private $db;
 
 
-		private $id;
 		private $userId;
 		private $userId;
-        private $date;
-		private $inTime;
-		private $outTime;
-		private $lessTime;
-		private $codeId;
-
-        /**
-         * @return mixed
-         */
-        public function getId()
-        {
-            return $this->id;
-        }
-
-        /**
-         * @param mixed $id
-         */
-        public function setId($id)
-        {
-            $this->id = $id;
-        }
-
-        /**
-         * @return mixed
-         */
-        public function getUserId()
-        {
-            return $this->userId;
-        }
-
-        /**
-         * @param mixed $userId
-         */
-        public function setUserId($userId)
-        {
-            $this->userId = $userId;
-        }
-
-        /**
-         * @return mixed
-         */
-        public function getDate()
-        {
-            return $this->date;
-        }
-
-        /**
-         * @param mixed $date
-         */
-        public function setDate($date)
-        {
-            $this->date = $date;
-        }
-
-        /**
-         * @return mixed
-         */
-        public function getInTime()
-        {
-            return $this->inTime;
-        }
-
-        /**
-         * @param mixed $inTime
-         */
-        public function setInTime($inTime)
-        {
-            $this->inTime = $inTime;
-        }
-
-        /**
-         * @return mixed
-         */
-        public function getOutTime()
-        {
-            return $this->outTime;
-        }
-
-        /**
-         * @param mixed $outTime
-         */
-        public function setOutTime($outTime)
-        {
-            $this->outTime = $outTime;
-        }
-
-        /**
-         * @return mixed
-         */
-        public function getLessTime()
-        {
-            return $this->lessTime;
-        }
-
-        /**
-         * @param mixed $lessTime
-         */
-        public function setLessTime($lessTime)
-        {
-            $this->lessTime = $lessTime;
-        }
-
-        /**
-         * @return mixed
-         */
-        public function getCodeId()
-        {
-            return $this->codeId;
-        }
-
-        /**
-         * @param mixed $codeId
-         */
-        public function setCodeId($codeId)
-        {
-            $this->codeId = $codeId;
-        }
-
-		function __construct()
+		private $startDate;
+		private $month;
+		private $nextMonth;
+		private $previousMonth;
+		private $nextYear;
+		private $previousYear;
+		private $year;
+		private $endDate;
+		private $entries;
+
+		/**
+		 * @return mixed
+		 */
+		public function getUserId()
 		{
 		{
-			$this->db = Staple_DB::get();
-		}	
-	
-		function load()
-		{
-			$authId = Staple_Auth::get()->getAuthId();
-			//Get User ID.
-
-            if(isset($authId))
-            {
-                $sql = "SELECT id FROM accounts WHERE username = '".$this->db->real_escape_string($authId)."'";
-
-                if($this->db->query($sql)->fetch_row() > 0)
-                {
-                    $query = $this->db->query($sql);
-                    $result = $query->fetch_assoc();
-
-                    $this->setUserId($result['id']);
-                }
-
-				if(isset($this->userId))
-				{
-					$sql = "SELECT * FROM timeEntries WHERE userId = '" . $this->db->real_escape_string($this->userId) . "' ORDER BY inTime ASC";
-
-					if ($this->db->query($sql)->fetch_row() > 0)
-					{
-						$query = $this->db->query($sql);
-						$data = array();
-						while ($row = $query->fetch_assoc())
-						{
-							$data[] = $row;
-						}
-
-						foreach($data as $entry)
-						{
-							$code = new codeModel();
-							$code->load($entry['codeId']);
-							$codeName = $code->getName();
-
-							$data2['id'] = $entry['id'];
-
-							//Set Date Object
-							$date = new DateTime();
-							$date->setTimestamp($entry['inTime']);
-
-							//Date
-							$data2['date']['ymd'] = $date->format("Y-m-d");
-
-							//Formatted Date
-							$data2['date']['formatted'] = $date->format("F jS, Y");
-
-							//Day
-							$data2['date']['dayOfWeek'] = $date->format("l");
-
-							//Day Abbreviated
-							$data2['date']['dayShort'] = $date->format("D.");
-
-							//MonthYear
-							$data2['date']['my'] = $date->format("m/y");
-
-                            //MonthDay
-                            $data2['date']['md'] = $date->format("m/d");
-
-                            //DateMonthYear
-                            $data2['date']['mdy'] = $date->format("m/d/y");
-
-							//In Time
-							$data2['rawInTime'] = $date->format("g:i A");
-							$data2['roundedInTime'] = $this->nearestQuarterHour($date->format("g:i A"));
-
-							//Out Time
-							$date->setTimestamp($entry['outTime']);
-							$data2['rawOutTime'] = $date->format("g:i A");
-							$data2['roundedOutTime'] = $this->nearestQuarterHour($date->format("g:i A"));
-
-							//Less Time
-							$data2['lessTime'] = $entry['lessTime'];
+			return $this->userId;
+		}
 
 
-                            switch($entry['lessTime'])
-                            {
-                                case 60:
-                                    $lessTime = 1;
-                                    break;
-                                case 30:
-                                    $lessTime = 0.5;
-                                    break;
-                                case 15:
-                                    $lessTime = 0.25;
-                                    break;
-                                default:
-                                    $lessTime = 0;
-                            }
+		/**
+		 * @param mixed $userId
+		 */
+		public function setUserId($userId)
+		{
+			$this->userId = $userId;
+		}
 
 
-							//Total Worked Time
-							$dateTime1 = new DateTime($data2['roundedInTime']);
-							$dateTime2 = new DateTime($data2['roundedOutTime']);
-							$interval = $dateTime1->diff($dateTime2);
+		/**
+		 * @return mixed
+		 */
+		public function getStartDate()
+		{
+			return $this->startDate;
+		}
 
 
-							$data2['timeWorked'] = $interval->h.":".$interval->i;
+		/**
+		 * @param mixed $startDate
+		 */
+		public function setStartDate($startDate)
+		{
+			$this->startDate = $startDate;
+		}
 
 
-                            $timeWorked = $this->timeToDecimal($interval->h.":".$interval->i)-$lessTime;
+		/**
+		 * @return mixed
+		 */
+		public function getMonth()
+		{
+			return $this->month;
+		}
 
 
-                            if($timeWorked > 0)
-                            {
-                                $data2['timeWorkedDec'] = $timeWorked;
-                            }
-                            else
-                            {
-                                $data2['timeWorkedDec'] = 0;
-                            }
+		/**
+		 * @param mixed $month
+		 */
+		public function setMonth($month)
+		{
+			$this->month = $month;
+		}
 
 
-							$data2['code'] = $codeName;
+		/**
+		 * @return mixed
+		 */
+		public function getNextMonth()
+		{
+			return $this->nextMonth;
+		}
 
 
-							$data3[] = $data2;
-						}
+		/**
+		 * @param mixed $nextMonth
+		 */
+		public function setNextMonth($nextMonth)
+		{
+			$this->nextMonth = $nextMonth;
+		}
 
 
-						return $data3;
-					}
-					else
-					{
-						return array();
-					}
-				}
-            }
+		/**
+		 * @return mixed
+		 */
+		public function getPreviousMonth()
+		{
+			return $this->previousMonth;
 		}
 		}
 
 
-		private function nearestQuarterHour($time)
+		/**
+		 * @param mixed $previousMonth
+		 */
+		public function setPreviousMonth($previousMonth)
 		{
 		{
-			$time = strtotime($time);
-			$round = 15*60;
-			$rounded = round($time/$round)*$round;
+			$this->previousMonth = $previousMonth;
+		}
 
 
-			return date("g:i A", $rounded);
+		/**
+		 * @return mixed
+		 */
+		public function getNextYear()
+		{
+			return $this->nextYear;
 		}
 		}
 
 
-		private function timeToDecimal($time)
+		/**
+		 * @param mixed $nextYear
+		 */
+		public function setNextYear($nextYear)
 		{
 		{
-			$timeArr = explode(':', $time);
-			$hours = $timeArr[0]*1;
-			$minutes = $timeArr[1]/60;
-			$dec = $hours + $minutes;
+			$this->nextYear = $nextYear;
+		}
 
 
-            if($dec > 0)
-            {
-                return round($dec,2);
-            }
-            else
-            {
-                return 0;
-            }
+		/**
+		 * @return mixed
+		 */
+		public function getPreviousYear()
+		{
+			return $this->previousYear;
 		}
 		}
 
 
-        function exists($id)
-        {
-            $sql = "SELECT id FROM timeEntries WHERE id = '".$this->db->real_escape_string($id)."'";
+		/**
+		 * @param mixed $previousYear
+		 */
+		public function setPreviousYear($previousYear)
+		{
+			$this->previousYear = $previousYear;
+		}
 
 
-            if($this->db->query($sql)->fetch_row() > 0)
-            {
-                return true;
-            }
-        }
+		/**
+		 * @return mixed
+		 */
+		public function getYear()
+		{
+			return $this->year;
+		}
 
 
-        function entry($id)
-        {
-            $sql = "SELECT * FROM timeEntries WHERE id = '".$this->db->real_escape_string($id)."'";
+		/**
+		 * @param mixed $year
+		 */
+		public function setYear($year)
+		{
+			$this->year = $year;
+		}
 
 
-            if($this->db->query($sql)->fetch_row() > 0)
-            {
-                $query = $this->db->query($sql);
-                $result = $query->fetch_assoc();
+		/**
+		 * @return mixed
+		 */
+		public function getEndDate()
+		{
+			return $this->endDate;
+		}
 
 
-                $data['date'] = date("m/d/Y",$result['inTime']);
-                $data['inTime'] = date("h:i A",$result['inTime']);
-                $data['outTime'] = date("h:i A",$result['outTime']);
-                $data['lessTime'] = $result['lessTime'];
-                $data['code'] = $result['codeId'];
+		/**
+		 * @param mixed $endDate
+		 */
+		public function setEndDate($endDate)
+		{
+			$this->endDate = $endDate;
+		}
 
 
-                return $data;
+		/**
+		 * @return mixed
+		 */
+		public function getEntries()
+		{
+			return $this->entries;
+		}
 
 
-            }
-            else
-            {
-                return array();
-            }
-        }
+		/**
+		 * @param mixed $entries
+		 */
+		public function setEntries($entries)
+		{
+			$this->entries = $entries;
+		}
 
 
-		function save($id = null)
+		function __construct($month = null,$year = null)
 		{
 		{
-            $inTime = strtotime($this->getDate()." ".$this->getInTime());
-            $outTime = strtotime($this->getDate()." ".$this->getOutTime());
+			$this->db = Staple_DB::get();
 
 
-            if($id == null)
-			{
-                echo "Inserting";
-				//Insert new item
-				$sql = "INSERT INTO timeEntries (userId, inTime, outTime, lessTime, codeId)
-					VALUES (
-						'".$this->db->real_escape_string($this->getUserId())."',
-						'".$this->db->real_escape_string($inTime)."',
-						'".$this->db->real_escape_string($outTime)."',
-						'".$this->db->real_escape_string($this->getLessTime())."',
-						'".$this->db->real_escape_string($this->getCodeId())."'
-						)";
-			}
-			else
-			{
+			//Get user ID from Auth
+			$user = new userModel();
+			$this->userId = $user->getId();
 
 
-                echo "Updating";
-				//Update item
-				$sql = "UPDATE timeEntries SET
-					userId='".$this->db->real_escape_string($this->getUserId())."',
-					inTime='".$this->db->real_escape_string($inTime)."',
-					outTime='".$this->db->real_escape_string($outTime)."',
-					lessTime='".$this->db->real_escape_string($this->getLessTime())."',
-                    codeId='".$this->db->real_escape_string($this->getCodeId())."'
-					WHERE id='".$this->db->real_escape_string($id)."'
-				";
+			if ($month == NULL) {
+				$month = new DateTime();
+				$month = $month->format('n');
 			}
 			}
-			
-			$query = $this->db->query($sql);
-			
-			if($query === true)
-			{
-				return true;
-			}
-			else
-			{
-				return false;
+
+			if ($year == NULL) {
+				$year = new DateTime();
+				$year = $year->format('Y');
 			}
 			}
-			
-		}
 
 
+			$dateObj = new DateTime();
+			$dateObj->setDate($year, $month, 1);
+			$end = $dateObj->modify('+24 day');
+			$endTime = strtotime($end->format('Y-m-d'));
+			$endDate = $end->format('Y-m-d');
+			$this->setEndDate($endDate);
+			$this->setMonth($end->format('F'));
+			$this->setNextMonth($end->modify('+1 month')->format('m'));
+			$this->setPreviousMonth($end->modify('-1 month')->format('m'));
+
+			$this->setYear($end->format('Y'));
+			$this->setNextYear($end->modify('+1 year')->format('Y'));
+			$this->setPreviousYear($end->modify('-1 year')->format('Y'));
+
+			$start = $dateObj->modify('-1 month +1 day');
+			$startTime = strtotime($start->format('Y-m-d'));
+			$startDate = $start->format('Y-m-d');
+			$this->setStartDate($startDate);
+		}
 	}
 	}
 
 
 ?>
 ?>

+ 383 - 0
application/models/timesheetModel.php.backup

@@ -0,0 +1,383 @@
+<?php
+
+	class timesheetModel extends Staple_Model
+	{
+		private $db;
+
+		private $id;
+		private $userId;
+        private $date;
+		private $inTime;
+		private $outTime;
+		private $lessTime;
+		private $codeId;
+
+        /**
+         * @return mixed
+         */
+        public function getId()
+        {
+            return $this->id;
+        }
+
+        /**
+         * @param mixed $id
+         */
+        public function setId($id)
+        {
+            $this->id = $id;
+        }
+
+        /**
+         * @return mixed
+         */
+        public function getUserId()
+        {
+            return $this->userId;
+        }
+
+        /**
+         * @param mixed $userId
+         */
+        public function setUserId($userId)
+        {
+            $this->userId = $userId;
+        }
+
+        /**
+         * @return mixed
+         */
+        public function getDate()
+        {
+            return $this->date;
+        }
+
+        /**
+         * @param mixed $date
+         */
+        public function setDate($date)
+        {
+            $this->date = $date;
+        }
+
+        /**
+         * @return mixed
+         */
+        public function getInTime()
+        {
+            return $this->inTime;
+        }
+
+        /**
+         * @param mixed $inTime
+         */
+        public function setInTime($inTime)
+        {
+            $this->inTime = $inTime;
+        }
+
+        /**
+         * @return mixed
+         */
+        public function getOutTime()
+        {
+            return $this->outTime;
+        }
+
+        /**
+         * @param mixed $outTime
+         */
+        public function setOutTime($outTime)
+        {
+            $this->outTime = $outTime;
+        }
+
+        /**
+         * @return mixed
+         */
+        public function getLessTime()
+        {
+            return $this->lessTime;
+        }
+
+        /**
+         * @param mixed $lessTime
+         */
+        public function setLessTime($lessTime)
+        {
+            $this->lessTime = $lessTime;
+        }
+
+        /**
+         * @return mixed
+         */
+        public function getCodeId()
+        {
+            return $this->codeId;
+        }
+
+        /**
+         * @param mixed $codeId
+         */
+        public function setCodeId($codeId)
+        {
+            $this->codeId = $codeId;
+        }
+
+		function __construct()
+		{
+			$this->db = Staple_DB::get();
+		}	
+	
+		function load()
+		{
+			$authId = Staple_Auth::get()->getAuthId();
+			//Get User ID.
+
+            if(isset($authId))
+            {
+                $sql = "SELECT id FROM accounts WHERE username = '".$this->db->real_escape_string($authId)."'";
+
+                if($this->db->query($sql)->fetch_row() > 0)
+                {
+                    $query = $this->db->query($sql);
+                    $result = $query->fetch_assoc();
+
+                    $this->setUserId($result['id']);
+                }
+
+				if(isset($this->userId))
+				{
+					$sql = "SELECT * FROM timeEntries WHERE userId = '" . $this->db->real_escape_string($this->userId) . "' ORDER BY inTime ASC";
+
+					if ($this->db->query($sql)->fetch_row() > 0)
+					{
+						$query = $this->db->query($sql);
+						$data = array();
+						while ($row = $query->fetch_assoc())
+						{
+							$data[] = $row;
+						}
+
+						foreach($data as $entry)
+						{
+							$code = new codeModel();
+							$code->load($entry['codeId']);
+							$codeName = $code->getName();
+
+							$data2['id'] = $entry['id'];
+
+							//Set Date Object
+							$date = new DateTime();
+							$date->setTimestamp($entry['inTime']);
+
+							//Date
+							$data2['date']['ymd'] = $date->format("Y-m-d");
+
+							//Formatted Date
+							$data2['date']['formatted'] = $date->format("F jS, Y");
+
+							//Day
+							$data2['date']['dayOfWeek'] = $date->format("l");
+
+							//Day Abbreviated
+							$data2['date']['dayShort'] = $date->format("D.");
+
+							//MonthYear
+							$data2['date']['my'] = $date->format("m/y");
+
+                            //MonthDay
+                            $data2['date']['md'] = $date->format("m/d");
+
+                            //DateMonthYear
+                            $data2['date']['mdy'] = $date->format("m/d/y");
+
+							//In Time
+							$data2['rawInTime'] = $date->format("g:i A");
+							$data2['roundedInTime'] = $this->nearestQuarterHour($date->format("g:i A"));
+
+							//Out Time
+							$date->setTimestamp($entry['outTime']);
+							$data2['rawOutTime'] = $date->format("g:i A");
+							$data2['roundedOutTime'] = $this->nearestQuarterHour($date->format("g:i A"));
+
+							//Less Time
+							$data2['lessTime'] = $entry['lessTime'];
+
+                            switch($entry['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($data2['roundedInTime']);
+							$dateTime2 = new DateTime($data2['roundedOutTime']);
+							$interval = $dateTime1->diff($dateTime2);
+
+							$data2['timeWorked'] = $interval->h.":".$interval->i;
+
+                            $timeWorked = $this->timeToDecimal($interval->h.":".$interval->i)-$lessTime;
+
+                            if($timeWorked > 0)
+                            {
+                                $data2['timeWorkedDec'] = $timeWorked;
+                            }
+                            else
+                            {
+                                $data2['timeWorkedDec'] = 0;
+                            }
+
+							$data2['code'] = $codeName;
+
+							$data3[] = $data2;
+						}
+
+						return $data3;
+					}
+					else
+					{
+						return array();
+					}
+				}
+            }
+		}
+
+		private function nearestQuarterHour($time)
+		{
+			$time = strtotime($time);
+			$round = 15*60;
+			$rounded = round($time/$round)*$round;
+
+			return date("g:i A", $rounded);
+		}
+
+		private function timeToDecimal($time)
+		{
+			$timeArr = explode(':', $time);
+			$hours = $timeArr[0]*1;
+			$minutes = $timeArr[1]/60;
+			$dec = $hours + $minutes;
+
+            if($dec > 0)
+            {
+                return round($dec,2);
+            }
+            else
+            {
+                return 0;
+            }
+		}
+
+        function exists($id)
+        {
+            if($id !== null)
+            {
+                $sql = "SELECT id FROM timeEntries WHERE id = '".$this->db->real_escape_string($id)."'";
+
+                if($this->db->query($sql)->fetch_row() > 0)
+                {
+                    return true;
+                }
+            }
+        }
+
+        function remove($id)
+        {
+            if($id !== null)
+            {
+                $auth = Staple_Auth::get();
+                $user = new userModel($auth->getAuthId());
+                $userId = $user->getId();
+
+                $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;
+                }
+            }
+        }
+
+        function entry($id)
+        {
+            $sql = "SELECT * FROM timeEntries WHERE id = '".$this->db->real_escape_string($id)."'";
+
+            if($this->db->query($sql)->fetch_row() > 0)
+            {
+                $query = $this->db->query($sql);
+                $result = $query->fetch_assoc();
+
+                $data['date'] = date("m/d/Y",$result['inTime']);
+                $data['inTime'] = date("h:i A",$result['inTime']);
+                $data['outTime'] = date("h:i A",$result['outTime']);
+                $data['lessTime'] = $result['lessTime'];
+                $data['code'] = $result['codeId'];
+
+                return $data;
+
+            }
+            else
+            {
+                return array();
+            }
+        }
+
+		function save($id = null)
+		{
+            $inTime = strtotime($this->getDate()." ".$this->getInTime());
+            $outTime = strtotime($this->getDate()." ".$this->getOutTime());
+
+            if($id == null)
+			{
+                echo "Inserting";
+				//Insert new item
+				$sql = "INSERT INTO timeEntries (userId, inTime, outTime, lessTime, codeId)
+					VALUES (
+						'".$this->db->real_escape_string($this->getUserId())."',
+						'".$this->db->real_escape_string($inTime)."',
+						'".$this->db->real_escape_string($outTime)."',
+						'".$this->db->real_escape_string($this->getLessTime())."',
+						'".$this->db->real_escape_string($this->getCodeId())."'
+						)";
+			}
+			else
+			{
+
+                echo "Updating";
+				//Update item
+				$sql = "UPDATE timeEntries SET
+					userId='".$this->db->real_escape_string($this->getUserId())."',
+					inTime='".$this->db->real_escape_string($inTime)."',
+					outTime='".$this->db->real_escape_string($outTime)."',
+					lessTime='".$this->db->real_escape_string($this->getLessTime())."',
+                    codeId='".$this->db->real_escape_string($this->getCodeId())."'
+					WHERE id='".$this->db->real_escape_string($id)."'
+				";
+			}
+			
+			$query = $this->db->query($sql);
+			
+			if($query === true)
+			{
+				return true;
+			}
+			else
+			{
+				return false;
+			}
+			
+		}
+
+	}
+
+?>

+ 5 - 2
application/models/userModel.php

@@ -90,11 +90,14 @@
 			$this->accountType = $accountType;
 			$this->accountType = $accountType;
 		}
 		}
 
 
-		function __construct($id)
+		function __construct()
 		{
 		{
 			$this->db = Staple_DB::get();
 			$this->db = Staple_DB::get();
 
 
-			$sql = "SELECT id, username, firstName, lastName, accountType FROM accounts WHERE username = '".$this->db->real_escape_string($id)."'";
+			$auth = Staple_Auth::get();
+			$username = $auth->getAuthId();
+
+			$sql = "SELECT id, username, firstName, lastName, accountType FROM accounts WHERE username = '".$this->db->real_escape_string($username)."'";
 			if($this->db->query($sql)->fetch_row() > 0)
 			if($this->db->query($sql)->fetch_row() > 0)
 			{
 			{
 				$query = $this->db->query($sql);
 				$query = $this->db->query($sql);

+ 3 - 3
application/views/index/index.phtml

@@ -20,20 +20,20 @@
     <div class="row">
     <div class="row">
         <div class="small-12 medium-4 columns text-center">
         <div class="small-12 medium-4 columns text-center">
             <div class="radius">
             <div class="radius">
-                <div class="circular">38</div>
                 <h5>Hours this week</h5>
                 <h5>Hours this week</h5>
+                <div class="circular">38</div>
             </div>
             </div>
         </div>
         </div>
         <div class="small-12 medium-4 columns text-center">
         <div class="small-12 medium-4 columns text-center">
             <div class="radius">
             <div class="radius">
-                <div class="circular">121</div>
                 <h5>Total Vacation Time</h5>
                 <h5>Total Vacation Time</h5>
+                <div class="circular">121</div>
             </div>
             </div>
         </div>
         </div>
         <div class="small-12 medium-4 columns text-center">
         <div class="small-12 medium-4 columns text-center">
             <div class="radius">
             <div class="radius">
-                <div class="circular">205</div>
                 <h5>Total Sick Time</h5>
                 <h5>Total Sick Time</h5>
+                <div class="circular">70</div>
             </div>
             </div>
         </div>
         </div>
     </div>
     </div>

+ 21 - 1
application/views/timesheet/edit.phtml

@@ -1,7 +1,27 @@
 <div class="section">
 <div class="section">
     <div class="row">
     <div class="row">
+        <div class="small-6 columns">
+            <a class="button secondary radius" href="<?php echo $this->link(array('timesheet')) ?>"><i class="fa fa-chevron-left"></i> Back</a>
+        </div>
+        <div class="small-6 columns text-right">
+            <a  class="button radius alert" href="#" data-reveal-id="confirm"><i class="fa fa-trash"> Remove</i></a>
+        </div>
         <div class="small-12 columns">
         <div class="small-12 columns">
             <?php echo $this->form ?>
             <?php echo $this->form ?>
         </div>
         </div>
     </div>
     </div>
-</div>
+</div>
+<div id="confirm" class="reveal-modal small text-center" data-reveal aria-labelledby="confirm" aria-hidden="true" role="dialog">
+    <h2 id="modalTitle">Please confirm action</h2>
+    <p class="lead">Would you like to remove this entry?</p>
+    <ul class="button-group radius">
+        <li><a class="alert button" href="<?php echo $this->link(array('timesheet','remove',$this->id)) ?>"><i class="fa fa-trash"></i> Remove</a></li>
+        <li><a class="secondary button" id="closeConfirm" href="#"><i class="fa fa-close"></i> Cancel</a></li>
+    </ul>
+    <a class="close-reveal-modal" aria-label="Close">&#215;</a>
+</div>
+<script>
+    $('#closeConfirm').click(function() {
+        $('#confirm').foundation('reveal','close');
+    });
+</script>

+ 10 - 19
application/views/timesheet/index.phtml

@@ -1,29 +1,20 @@
-<div class="section info">
-    <div class="row">
-        <?php
-            if(count($this->message) > 0)
-            {
-                echo "<div class=\"small-12 columns\"><div data-alert class=\"alert-box warning\">";
-                echo $this->message;
-                echo "<a href=\"#\" class=\"close\">&times;</a></div></div>";
-            }
-        ?>
-        <div class="small-12 columns">
-            <?php echo $this->insertTimeForm ?>
-        </div>
-    </div>
-</div>
+<?php echo $this->insertTimeForm ?>
 <div class="section">
 <div class="section">
     <div class="row">
     <div class="row">
         <div class="small-12 medium-4 text-left columns">
         <div class="small-12 medium-4 text-left columns">
-            <h2>October 2015</h2>
+            <h3><?php echo $this->month." ".$this->year?></h3>
         </div>
         </div>
         <div class="small-12 medium-8 text-right columns">
         <div class="small-12 medium-8 text-right columns">
             <ul class="button-group radius even-4 stack-for-small">
             <ul class="button-group radius even-4 stack-for-small">
-                <li><a class="button secondary"><i class="fa fa-caret-left"></i> Prev.</a></li>
-                <li><a class="button secondary">Next <i class="fa fa-caret-right"></i></a></li>
+                <li><a class="button secondary" href="<?php echo $this->link(array('timesheet',$this->previousMonth, $this->year)) ?>"><i class="fa fa-caret-left"></i> Prev.</a></li>
+                <li><a class="button secondary" href="<?php echo $this->link(array('timesheet',$this->nextMonth, $this->year)) ?>">Next <i class="fa fa-caret-right"></i></a></li>
                 <li><a class="button"><i class="fa fa-print"></i> Print</a></li>
                 <li><a class="button"><i class="fa fa-print"></i> Print</a></li>
-                <li><a class="button success"><i class="fa fa-check"></i> Validate</a></li>
+                <?php
+                    if($this->validateRange)
+                    {
+                        echo "<li><a class=\"button success\"><i class=\"fa fa-check\"></i> Validate</a></li>";
+                    }
+                ?>
             </ul>
             </ul>
         </div>
         </div>
     </div>
     </div>

+ 10 - 0
application/views/timesheet/remove.phtml

@@ -0,0 +1,10 @@
+<div class="section">
+    <div class="row">
+        <div class="small-12 columns">
+            <a class="button secondary radius" href="<?php echo $this->link(array('timesheet')) ?>"><i class="fa fa-chevron-left"></i> Back</a>
+        </div>
+        <div class="small-12 columns">
+            <?php echo $this->message ?>
+        </div>
+    </div>
+</div>