function DisplayPendingAdHocRequestsTableBody($userID)
{
    $filter[AD_HOC_EMP_ID] = $userID;
    $adHocRequests = RetrieveAdHocAbsenceRequests($filter);
    if ($adHocRequests != NULL) {
        foreach ($adHocRequests as $request) {
            $absenceTypeID = $request[AD_HOC_ABSENCE_TYPE_ID];
            $absenceType = RetrieveAbsenceTypeByID($absenceTypeID);
            echo '<tr>';
            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="amendAdHoc"  value="' . $request[AD_HOC_REQ_ID] . '">Amend' . '</button></td>';
            echo '<td> <button class="btn btn-danger" type="submit" ' . 'name="deleteAdHoc"  value="' . $request[AD_HOC_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 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;
}
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;
}
function DeleteAbsenceType($ID)
{
    $isValidRequest = TRUE;
    // Ensure there are no AdHocAbsenceRequest records which reference this record.
    $filter[AD_HOC_ABSENCE_TYPE_ID] = $ID;
    $adHocAbsenceRequests = RetrieveAdHocAbsenceRequests($filter);
    if ($adHocAbsenceRequests != NULL) {
        error_log("Attempt to DeleteAbsenceType failed. " . "One or more adHocAbsenceRequest records exist with an " . "absence type ID of " . $ID);
        $isValidRequest = FALSE;
    }
    // Ensure there are no ApprovedAbsenceBooking records which reference this record.
    unset($filter);
    $filter[APPR_ABS_ABS_TYPE_ID] = $ID;
    $approvedBookings = RetrieveApprovedAbsenceBookings($filter);
    if ($approvedBookings != NULL) {
        error_log("Attempt to DeleteAbsenceType failed. " . "One or more approvedAbsenceBooking records exist with an " . "absence type ID of " . $ID);
        $isValidRequest = FALSE;
    }
    $result = 0;
    if ($isValidRequest) {
        $sql = "DELETE FROM absenceTypeTable WHERE absenceTypeID=" . $ID . ";";
        $result = performSQLDelete($sql);
        GenerateStatus(true, "Record has been deleted.");
    }
    return $result;
}
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>";
        }
    }
}