function DisplayPublicHolidayTableBody()
{
    $holidays = RetrievePublicHolidays();
    if ($holidays != NULL) {
        foreach ($holidays as $holiday) {
            $date = RetrieveDateByID($holiday[PUB_HOL_DATE_ID]);
            echo "<tr>";
            echo "<td>" . $holiday[PUB_HOL_ID] . "</td>";
            echo "<td>" . $holiday[PUB_HOL_NAME] . "</td>";
            echo "<td>" . $holiday[PUB_HOL_DATE_ID] . "</td>";
            echo "<td>" . $date[DATE_TABLE_DATE] . "</td>";
            echo '<td> <button class="btn btn-success" type="submit" ' . 'name="amend" value="' . $holiday[PUB_HOL_ID] . '">' . 'Amend</button></td>';
            echo '<td> <button class="btn btn-danger" type="submit"' . 'name="delete" value="' . $holiday[PUB_HOL_ID] . '">' . 'Delete</button></td>';
            echo '</tr>';
        }
    }
}
if (isset($_POST["cancel"])) {
    $url = "Location:adminPublicHolidays.php";
    header($url);
}
if (isset($_POST["update"])) {
    $record[PUB_HOL_ID] = $_GET["ID"];
    $record[PUB_HOL_NAME] = $_POST["name"];
    $filter[DATE_TABLE_DATE] = $_POST["date"];
    $dates = RetrieveDates($filter);
    $date = $dates[0];
    $currentRecord = RetrievePublicHolidayByID($_GET["ID"]);
    if ($currentRecord != NULL) {
        if ($currentRecord[PUB_HOL_DATE_ID] != $date[DATE_TABLE_DATE_ID]) {
            //Date has changed, so remove the public holiday ID from the old
            //date record and add to the new date record.
            $oldDate = RetrieveDateByID($currentRecord[PUB_HOL_DATE_ID]);
            $oldDate[DATE_TABLE_PUBLIC_HOL_ID] = NULL;
            UpdateDate($oldDate);
        }
    }
    $record[PUB_HOL_DATE_ID] = $date[DATE_TABLE_DATE_ID];
    $success = UpdatePublicHoliday($record);
    if ($success) {
        $url = "Location:adminPublicHolidays.php";
        header($url);
    }
}
?>

<!DOCTYPE html>
<html>
function DeletePublicHoliday($ID)
{
    $result = 0;
    $record = RetrievePublicHolidayByID($ID);
    if ($record != NULL) {
        $date = RetrieveDateByID($record[PUB_HOL_DATE_ID]);
        $date[DATE_TABLE_PUBLIC_HOL_ID] = NULL;
        UpdateDate($date);
        $sql = "DELETE FROM publicHolidayTable WHERE publicHolidayID=" . $ID . ";";
        $result = performSQL($sql);
    }
    GenerateStatus(true, "Record successfully deleted.");
    return $result;
}
function DeleteDate($ID)
{
    $result = 0;
    $date = RetrieveDateByID($ID);
    if ($date != NULL) {
        $filter[APPR_ABS_BOOK_DATE_DATE_ID] = $date[DATE_TABLE_DATE_ID];
        $approvedAbsenceBookingDates = RetrieveApprovedAbsenceBookingDates($filter);
        if ($approvedAbsenceBookingDates != NULL) {
            foreach ($approvedAbsenceBookingDates as $value) {
                DeleteApprovedAbsenceBooking($value[APPR_ABS_BOOK_DATE_ABS_BOOK_ID]);
            }
        }
        if ($date[DATE_TABLE_PUBLIC_HOL_ID] != NULL) {
            DeletePublicHoliday($date[DATE_TABLE_PUBLIC_HOL_ID]);
        }
        $sql = "DELETE FROM dateTable WHERE dateID=" . $ID . ";";
        $result = performSQL($sql);
    }
    return $result;
}
function UpdateApprovedAbsenceBookingDate($fields)
{
    //--------------------------------------------------------------------------------
    // Validate Input parameters
    //--------------------------------------------------------------------------------
    $inputIsValid = TRUE;
    $validID = false;
    $countOfFields = 0;
    foreach ($fields as $key => $value) {
        if ($key == APPR_ABS_BOOK_DATE_ID) {
            $record = RetrieveApprovedAbsenceBookingDateByID($value);
            if ($record != NULL) {
                $validID = true;
                $countOfFields++;
            }
        } else {
            if ($key == APPR_ABS_BOOK_DATE_DATE_ID) {
                $countOfFields++;
                $record = RetrieveDateByID($value);
                if ($record == NULL) {
                    error_log("Invalid APPR_ABS_BOOK_DATE_DATE_ID passed to " . "UpdateApprovedAbsenceBookingDate. Value=" . $value);
                    $inputIsValid = FALSE;
                }
            } else {
                if ($key == APPR_ABS_BOOK_DATE_ABS_BOOK_ID) {
                    $countOfFields++;
                    $record = RetrieveApprovedAbsenceBookingByID($value);
                    if ($record == NULL) {
                        error_log("Invalid APPR_ABS_BOOKING_ID passed to " . "UpdateApprovedAbsenceBookingDate. Value=" . $value);
                        $inputIsValid = FALSE;
                    }
                } else {
                    error_log("Invalid field passed to UpdateApprovedAbsenceBookingDate." . " {$key}=" . $key);
                    $inputIsValid = FALSE;
                }
            }
        }
    }
    if (!$validID) {
        error_log("No valid ID supplied in call to UpdateApprovedAbsenceBookingDate.");
        $inputIsValid = FALSE;
    }
    if ($countOfFields < 2) {
        error_log("Insufficent fields supplied in call to UpdateApprovedAbsenceBookingDate.");
        $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_DATE, APPR_ABS_BOOK_DATE_ID, $fields);
    }
    return $success;
}