function DisplayMainVacationRequestTableBody($userID)
{
    $employee = RetrieveEmployeeByID($userID);
    $mainVacationRequest = RetrieveMainVacationRequestByID($employee[EMP_MAIN_VACATION_REQ_ID]);
    if ($mainVacationRequest != NULL) {
        echo '<tr>';
        echo '<td>' . $mainVacationRequest[MAIN_VACATION_1ST_START] . '</td>';
        echo '<td>' . $mainVacationRequest[MAIN_VACATION_1ST_END] . '</td>';
        echo '<td>' . $mainVacationRequest[MAIN_VACATION_2ND_START] . '</td>';
        echo '<td>' . $mainVacationRequest[MAIN_VACATION_2ND_END] . '</td>';
        echo '<td> <button class="btn btn-success" type="submit" name="amendMain"' . 'value="' . $mainVacationRequest[MAIN_VACATION_REQ_ID] . '">Amend</button></td>';
        echo '<td> <button class="btn btn-danger" type="submit" name="deleteMain"' . 'value="' . $mainVacationRequest[MAIN_VACATION_REQ_ID] . '">Delete</button></td>';
        echo '</tr>';
    }
}
function PopulateTableBody()
{
    $requests = RetrieveMainVacationRequests();
    if ($requests != NULL) {
        foreach ($requests as $request) {
            $employee = RetrieveEmployeeByID($request[MAIN_VACATION_EMP_ID]);
            echo "<tr>";
            echo "<td>" . $employee[EMP_NAME] . "</td>";
            echo "<td>" . $request[MAIN_VACATION_1ST_START] . "</td>";
            echo "<td>" . $request[MAIN_VACATION_1ST_END] . "</td>";
            echo "<td>" . $request[MAIN_VACATION_2ND_START] . "</td>";
            echo "<td>" . $request[MAIN_VACATION_2ND_END] . "</td>";
            echo '<td> <button class="btn btn-success" type="submit" ' . 'name="amend"  value="' . $request[MAIN_VACATION_REQ_ID] . '">Amend</button></td>';
            echo '<td> <button class="btn btn-danger" type="submit" name="delete"' . ' value="' . $request[MAIN_VACATION_REQ_ID] . '">Delete</button></td>';
            echo "</tr>";
        }
    }
}
function PopulateAdHocTable()
{
    $requests = RetrieveAdHocAbsenceRequests();
    if ($requests != NULL) {
        foreach ($requests as $request) {
            $employeeID = $request[AD_HOC_EMP_ID];
            $employee = RetrieveEmployeeByID($employeeID);
            $absenceTypeID = $request[AD_HOC_ABSENCE_TYPE_ID];
            $absenceType = RetrieveAbsenceTypeByID($absenceTypeID);
            echo '<tr>';
            echo '<td>' . $employee[EMP_NAME] . '</td>';
            echo '<td>' . $request[AD_HOC_START] . '</td>';
            echo '<td>' . $request[AD_HOC_END] . '</td>';
            echo '<td>' . $absenceType[ABS_TYPE_NAME] . '</td>';
            echo '<td> <button class="btn btn-success" type="submit" name="amend"' . 'value="' . $request[AD_HOC_REQ_ID] . '">Amend</button></td>';
            echo '<td> <button class="btn btn-danger" type="submit" name="delete"' . 'value="' . $request[AD_HOC_REQ_ID] . '">Delete</button></td>';
            echo '</tr>';
        }
    }
}
function DisplayApproveAbsenceTableBody()
{
    $bookings = RetrieveApprovedAbsenceBookings();
    if ($bookings != NULL) {
        foreach ($bookings as $booking) {
            $employeeID = $booking[APPR_ABS_EMPLOYEE_ID];
            $employee = RetrieveEmployeeByID($employeeID);
            $absenceTypeID = $booking[APPR_ABS_ABS_TYPE_ID];
            $absenceType = RetrieveAbsenceTypeByID($absenceTypeID);
            echo "<tr>";
            echo "<td>" . $employee[EMP_NAME] . "</td>";
            echo "<td>" . $booking[APPR_ABS_START_DATE] . "</td>";
            echo "<td>" . $booking[APPR_ABS_END_DATE] . "</td>";
            echo "<td>" . $absenceType[ABS_TYPE_NAME] . "</td>";
            echo '<td> <button class="btn btn-success" type="submit" name="amend"' . 'value="' . $booking[APPR_ABS_BOOKING_ID] . '">Amend</button></td>';
            echo '<td> <button class="btn btn-danger" type="submit" name="delete"' . 'value="' . $booking[APPR_ABS_BOOKING_ID] . '">Delete</button></td>';
            echo "</tr>";
        }
    }
}
function DisplaySearchTableBody($startDate, $endDate)
{
    date_default_timezone_set('UTC');
    $startDate = $_POST["startDate"];
    $startDateTime = strtotime($startDate);
    $endDate = $endDateTime = strtotime($endDate);
    $bookings = RetrieveApprovedAbsenceBookings();
    if ($bookings != NULL) {
        foreach ($bookings as $booking) {
            $bookingStartTime = strtotime($booking[APPR_ABS_START_DATE]);
            $bookingEndTime = strtotime($booking[APPR_ABS_START_DATE]);
            if ($bookingStartTime >= $startDateTime and $bookingEndTime <= $endDateTime) {
                $employee = RetrieveEmployeeByID($booking[APPR_ABS_EMPLOYEE_ID]);
                $absenceType = RetrieveAbsenceTypeByID($booking[APPR_ABS_ABS_TYPE_ID]);
                echo '<tr>';
                echo '<td>' . $employee[EMP_NAME] . '</td>';
                echo '<td>' . $booking[APPR_ABS_START_DATE] . '</td>';
                echo '<td>' . $booking[APPR_ABS_END_DATE] . '</td>';
                echo '<td>' . $absenceType[ABS_TYPE_NAME] . '</td>';
                echo '</tr>';
            }
        }
    }
}
function DeleteMainVacationRequest($ID)
{
    $result = 0;
    $record = RetrieveMainVacationRequestByID($ID);
    if ($record != NULL) {
        $employee = RetrieveEmployeeByID($record[MAIN_VACATION_EMP_ID]);
        if ($employee) {
            $employee[EMP_MAIN_VACATION_REQ_ID] = NULL;
            UpdateEmployee($employee);
        }
        $sql = "DELETE FROM mainVacationRequestTable WHERE mainVacationRequestID=" . $ID . ";";
        $result = performSQL($sql);
    }
    return $result;
}
function ProcessAdHocRequests(&$statusMessage)
{
    $requests = RetrieveAdHocAbsenceRequests();
    $return = true;
    foreach ($requests as $request) {
        $id = $request[AD_HOC_REQ_ID];
        $employeeID = $request[AD_HOC_EMP_ID];
        $startDate = $request[AD_HOC_START];
        $endDate = $request[AD_HOC_END];
        $absenceTypeID = $request[AD_HOC_ABSENCE_TYPE_ID];
        $employee = RetrieveEmployeeByID($employeeID);
        $statusMessage .= "<b>[Processing AdHoc request for " . $employee[EMP_NAME] . "]</b><br/>";
        $result = ProcessAbsenceRequest($employeeID, $startDate, $endDate, $absenceTypeID, $statusMessage);
        if ($result == false) {
            $return = false;
        }
        DeleteAdHocAbsenceRequest($id);
    }
    return $return;
}
<?php

include 'sessionmanagement.php';
//sets $userID,$isAdministrator and $isManager
$employee = RetrieveEmployeeByID($userID);
$requestID = $employee[EMP_MAIN_VACATION_REQ_ID];
$today = date("Y-m-d");
$firstChoiceStart = $today;
$firstChoiceEnd = $today;
$secondChoiceStart = $today;
$secondChoiceEnd = $today;
if ($requestID != NULL) {
    $mainVacationRequest = RetrieveMainVacationRequestByID($requestID);
    $firstChoiceStart = $mainVacationRequest[MAIN_VACATION_1ST_START];
    $firstChoiceEnd = $mainVacationRequest[MAIN_VACATION_1ST_END];
    $secondChoiceStart = $mainVacationRequest[MAIN_VACATION_2ND_START];
    $secondChoiceEnd = $mainVacationRequest[MAIN_VACATION_2ND_END];
}
if (isset($_POST["submit"])) {
    ClearStatus();
    $request = CreateMainVactionRequest($userID, $_POST["firstChoiceStart"], $_POST["firstChoiceEnd"], $_POST["secondChoiceStart"], $_POST["secondChoiceEnd"]);
    if ($request != NULL) {
        $url = "Location:index.php";
        header($url);
    }
}
?>

<!DOCTYPE html>
<html>
    <head>
function DeleteEmployee($ID)
{
    $result = 0;
    $statusMessage = "";
    $employee = RetrieveEmployeeByID($ID);
    if ($employee != NULL) {
        if ($employee[EMP_MAIN_VACATION_REQ_ID] != NULL) {
            DeleteMainVacatioNRequest($employee[EMP_MAIN_VACATION_REQ_ID]);
        }
        $filter[AD_HOC_EMP_ID] = $ID;
        $adHocAbsenceRequests = RetrieveAdHocAbsenceRequests($filter);
        foreach ((array) $adHocAbsenceRequests as $value) {
            DeleteAdHocAbsenceRequest($value[AD_HOC_REQ_ID]);
        }
        unset($filter);
        $filter[APPR_ABS_EMPLOYEE_ID] = $ID;
        $approvedAbsenceBookings = RetrieveApprovedAbsenceBookings($filter);
        if ($approvedAbsenceBookings != NULL) {
            foreach ($approvedAbsenceBookings as $value) {
                DeleteApprovedAbsenceBooking($value[APPR_ABS_BOOKING_ID]);
            }
        }
        $sql = "DELETE FROM employeeTable WHERE employeeID=" . $ID . ";";
        $result = performSQL($sql);
        $statusMessage .= "Record deleted.</br>";
        GenerateStatus(true, $statusMessage);
    }
    return $result;
}
 <?php 
$userDetails = "Not Logged In";
if (isset($_SESSION['userID'])) {
    $employee = RetrieveEmployeeByID($_SESSION['userID']);
    if ($employee) {
        $userDetails = "Logged in as " . $employee[EMP_NAME];
    }
}
?>


<nav role="navigation" class="navbar navbar-default">
    <div class="navbar-header">
        <button type="button" data-target=".navbarCollapse" 
                data-toggle="collapse" class="navbar-toggle">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
        
        <img src="/images/logo.png" style="max-width:45px" class="img-rounded" 
             alt="Rounded Image">
        <a href="#" class="navbar-brand">Absence Tracking System</a>
    </div>
    
    <div class="nav navbar-nav">
        <ul class=""navbar-nav>
            <li><a href="index.php">Home</a></li>
        </ul>
    </div>
function UpdateApprovedAbsenceBooking($fields)
{
    $statusMessage = "";
    //--------------------------------------------------------------------------------
    // Validate Input parameters
    //--------------------------------------------------------------------------------
    $inputIsValid = TRUE;
    $validID = false;
    $countOfFields = 0;
    foreach ($fields as $key => $value) {
        if ($key == APPR_ABS_BOOKING_ID) {
            $record = RetrieveApprovedAbsenceBookingByID($value);
            if ($record != NULL) {
                $validID = true;
                $countOfFields++;
            }
        } else {
            if ($key == APPR_ABS_EMPLOYEE_ID) {
                $countOfFields++;
                $record = RetrieveEmployeeByID($value);
                if ($record == NULL) {
                    $statusMessage .= "Unable to locate employee in database</br>";
                    error_log("Invalid EMP_ID passed to " . "UpdateApprovedAbsenceBooking. Value=" . $value);
                    $inputIsValid = FALSE;
                }
            } else {
                if ($key == APPR_ABS_START_DATE) {
                    $countOfFields++;
                    if (!isValidDate($value)) {
                        $statusMessage .= "Start date is not a valid date.</br>";
                        error_log("Invalid APPR_ABS_START_DATE passed to " . "UpdateApprovedAbsenceBooking. Value=" . $value);
                        $inputIsValid = FALSE;
                    }
                } else {
                    if ($key == APPR_ABS_END_DATE) {
                        $countOfFields++;
                        if (!isValidDate($value)) {
                            $statusMessage .= "End date is not a valid date.</br>";
                            error_log("Invalid APPR_ABS_END_DATE passed to " . "UpdateApprovedAbsenceBooking. Value=" . $value);
                            $inputIsValid = FALSE;
                        }
                    } else {
                        if ($key == APPR_ABS_ABS_TYPE_ID) {
                            $countOfFields++;
                            $record = RetrieveAbsenceTypeByID($value);
                            if ($record == NULL) {
                                $statusMessage .= "Unable to locate absence type in database</br>";
                                error_log("Invalid APPR_ABS_ABS_TYPE_ID passed to " . "UpdateApprovedAbsenceBooking. Value=" . $value);
                                $inputIsValid = FALSE;
                            }
                        } else {
                            $statusMessage .= "Unexpected field found in input</br>";
                            error_log("Invalid field passed to UpdateApprovedAbsenceBooking." . " {$key}=" . $key);
                            $inputIsValid = FALSE;
                        }
                    }
                }
            }
        }
    }
    $absenceStartDate = $fields[APPR_ABS_START_DATE];
    $absenceEndDate = $fields[APPR_ABS_END_DATE];
    if (strtotime($absenceEndDate) < strtotime($absenceStartDate)) {
        $statusMessage .= "end Date is before start Date.</br>";
        error_log("End Date is before Start Date.");
        $inputIsValid = FALSE;
    }
    if (!$validID) {
        $statusMessage .= "No valid ID supplied</br>";
        error_log("No valid ID supplied in call to UpdateApprovedAbsenceBooking.");
        $inputIsValid = FALSE;
    }
    if ($countOfFields < 2) {
        $statusMessage .= "Insufficent fields supplied</br>";
        error_log("Insufficent fields supplied in call to UpdateApprovedAbsenceBooking.");
        $inputIsValid = FALSE;
    }
    //--------------------------------------------------------------------------------
    // Only attempt to update a record in the database if the input parameters are ok.
    //--------------------------------------------------------------------------------
    $success = false;
    if ($inputIsValid) {
        $success = performSQLUpdate(APPROVED_ABSENCE_BOOKING_TABLE, APPR_ABS_BOOKING_ID, $fields);
        if ($success) {
            $statusMessage .= "Record updated successfully.</br>";
        } else {
            $statusMessage .= "Unexpected error encountered when updating database.</br>";
            $inputIsValid = false;
        }
    }
    GenerateStatus($inputIsValid, $statusMessage);
    return $success;
}
function UpdateAdHocAbsenceRequest($fields)
{
    $statusMessage = "";
    //-------------------------------------------------------------------------
    // Validate Input parameters
    //-------------------------------------------------------------------------
    $inputIsValid = TRUE;
    $validID = false;
    $countOfFields = 0;
    foreach ($fields as $key => $value) {
        if ($key == AD_HOC_REQ_ID) {
            $record = RetrieveAdHocAbsenceRequestByID($value);
            if ($record != NULL) {
                $validID = true;
                $countOfFields++;
            }
        } else {
            if ($key == AD_HOC_EMP_ID) {
                $countOfFields++;
                $record = RetrieveEmployeeByID($value);
                if ($record == NULL) {
                    $statusMessage .= "Employee specified can not be found in the " . "database.</br>";
                    error_log("Invalid AD_HOC_EMP_ID passed to " . "UpdateAdHocAbsenceRequest." . " Value=" . $value);
                    $inputIsValid = FALSE;
                }
            } else {
                if ($key == AD_HOC_START) {
                    $countOfFields++;
                    if (!isValidDate($value)) {
                        $statusMessage .= "Start date entered is not a valid date.</br>";
                        error_log("Invalid AD_HOC_START passed to UpdateAdHocAbsenceRequest." . " Value=" . $value);
                        $inputIsValid = FALSE;
                    }
                } else {
                    if ($key == AD_HOC_END) {
                        $countOfFields++;
                        if (!isValidDate($value)) {
                            $statusMessage .= "End date entered is not a valid date.</br>";
                            error_log("Invalid AD_HOC_END passed to UpdateAdHocAbsenceRequest." . " Value=" . $value);
                            $inputIsValid = FALSE;
                        }
                    } else {
                        if ($key == AD_HOC_ABSENCE_TYPE_ID) {
                            $countOfFields++;
                            $record = RetrieveAbsenceTypeByID($value);
                            if ($record == NULL) {
                                $statusMessage .= "Absence Type selected can not be found in the " . "database.</br>";
                                error_log("Invalid  AD_HOC_ABSENCE_TYPE_ID passed to " . "UpdateAdHocAbsenceRequest. Value=" . $value);
                                $inputIsValid = FALSE;
                            }
                        } else {
                            $statusMessage .= "Unknown field encountered.</br>";
                            error_log("Invalid field passed to UpdateAdHocAbsenceRequest." . " {$key}=" . $key);
                            $inputIsValid = FALSE;
                        }
                    }
                }
            }
        }
    }
    $startDate = $fields[AD_HOC_START];
    $endDate = $fields[AD_HOC_END];
    if (strtotime($endDate) < strtotime($startDate)) {
        $statusMessage .= "end Date is before start Date.</br>";
        error_log("End Date is before Start Date.");
        $inputIsValid = FALSE;
    }
    if (!$validID) {
        $statusMessage .= "No valid record ID found.</br>";
        error_log("No valid ID supplied in call to UpdateAbsenceType.");
        $inputIsValid = FALSE;
    }
    if ($countOfFields < 2) {
        $statusMessage .= "Insufficent fields supplied in call to UpdateAbsenceType.</br>";
        error_log("Insufficent fields supplied in call to UpdateAbsenceType.");
        $inputIsValid = FALSE;
    }
    //-------------------------------------------------------------------------
    // Only attempt to update a record in the database if the input parameters
    // are ok.
    //-------------------------------------------------------------------------
    $success = false;
    if ($inputIsValid) {
        $success = performSQLUpdate(ADHOC_ABSENCE_REQUEST_TABLE, AD_HOC_REQ_ID, $fields);
        if ($success) {
            $statusMessage .= "Record successfully updated.</br>";
        } else {
            $statusMessage .= "Unexpected error encountered when updating database." . "Contact your system administrator.</br>";
            $inputIsValid = false;
        }
    }
    GenerateStatus($inputIsValid, $statusMessage);
    return $success;
}
function DisplayAdHocRequestTableBody()
{
    $requests = RetrieveAdHocAbsenceRequests();
    if ($requests != NULL) {
        foreach ($requests as $request) {
            $employee = RetrieveEmployeeByID($request[AD_HOC_EMP_ID]);
            echo "<tr>";
            echo "<td>" . $employee[EMP_NAME] . "</td>";
            echo "<td>" . $request[AD_HOC_START] . "</td>";
            echo "<td>" . $request[AD_HOC_END] . "</td>";
            echo '<td> <button class="btn btn-success" type="submit" ' . 'name="approveadhoc"  value="' . $request[AD_HOC_REQ_ID] . '">Approve</button></td>';
            echo '<td> <button class="btn btn-danger" type="submit" ' . 'name="rejectadhoc"  value="' . $request[AD_HOC_REQ_ID] . '">Reject</button></td>';
            echo "</tr>";
        }
    }
}
<?php

include 'sessionmanagement.php';
if ($_GET["ID"] != NULL) {
    $Employee = RetrieveEmployeeByID($_GET["ID"]);
}
if (isset($_POST["cancel"])) {
    ClearStatus();
    $url = "Location:adminEmployeeTable.php";
    header($url);
}
if (isset($_POST["update"])) {
    ClearStatus();
    unset($Employee);
    $Employee[EMP_ID] = $_GET["ID"];
    $Employee[EMP_NAME] = $_POST["empName"];
    $Employee[EMP_EMAIL] = $_POST["eMail"];
    $Employee[EMP_DATEJOINED] = $_POST["dateJoin"];
    $Employee[EMP_LEAVE_ENTITLEMENT] = $_POST["annualLeave"];
    $Employee[EMP_COMPANY_ROLE] = $_POST["companyRole"];
    $Employee[EMP_ADMIN_PERM] = '0';
    if (isset($_POST['isAdmin'])) {
        if ($_POST["isAdmin"] == 'on') {
            $Employee[EMP_ADMIN_PERM] = '1';
        }
    }
    $Employee[EMP_MANAGER_PERM] = '0';
    if (isset($_POST['isManager'])) {
        if ($_POST["isManager"] == 'on') {
            $Employee[EMP_MANAGER_PERM] = '1';
        }
    </head>
 
    <body>
        <?php 
include 'navbar.php';
?>
      <div class="row">
       <div class="col-md-4 col-md-offset-4 text-center">
        <form method="post" class="signUp">
            <h1> Edit Main Request </h1>
            <div class="input-group"  for="empName">
            <span class="input-group-addon">
                <span class="glyphicon glyphicon-user"></span>
            </span>    
            <?php 
$employee = RetrieveEmployeeByID($record[MAIN_VACATION_EMP_ID]);
if ($employee != NULL) {
    echo '<input type="text" class="form-control" name="empID" ' . 'id="empID" readonly value="' . $employee[EMP_NAME] . '"/>';
}
?>
 
           </div>
           
            <div class="input-group" for="firstChoiceStart">
                <span class="input-group-addon">1st Choice Start
                    <span class="glyphicon glyphicon-calendar"></span>
                </span>
                <input type="date" class="form-control"  
                       name="firstChoiceStart" id="firstChoiceStart" 
                       value="<?php 
echo $record[MAIN_VACATION_1ST_START];
function SendResubmitMainVacationRequest($employeeID)
{
    $employee = RetrieveEmployeeByID($employeeID);
    $to = $employee[EMP_EMAIL];
    $from = "*****@*****.**";
    $subject = "URGENT: NEW MAIN VACATION REQUEST NEEDED";
    $message = "Unfortunatly, both of your main vacation choices are unavailable." . "Please submit a new Main Vacation Request with two new choices.";
    $result = mail($to, $subject, $message);
    return $result;
}