function DeleteApprovedAbsenceBooking($ID)
{
    $result = 0;
    $approvedAbsenceBooking = RetrieveApprovedAbsenceBookingByID($ID);
    if ($approvedAbsenceBooking != NULL) {
        $sql = "DELETE FROM approvedAbsenceBookingTable WHERE approvedAbsenceBookingID=" . $ID . ";";
        $result = performSQL($sql);
        $filter[APPR_ABS_BOOK_DATE_ABS_BOOK_ID] = $ID;
        $approvedAbsenceBookingDates = RetrieveApprovedAbsenceBookingDates($filter);
        foreach ((array) $approvedAbsenceBookingDates as $approvedAbsenceBookingDate) {
            DeleteApprovedAbsenceBookingDate($approvedAbsenceBookingDate[APPR_ABS_BOOK_DATE_ID]);
        }
    }
    GenerateStatus(true, "Record successfully deleted.");
    return $result;
}
function CountStaffOnLeave($roleID, $date)
{
    //Assume no staff on leave to begin with.
    $countOfStaffOnLeave = 0;
    //Retrieve the date record from the database.
    $dateRecord = RetrieveDateRecordByDate($date);
    if ($dateRecord != NULL) {
        //Retrieve all approved absence bookings for this date.
        $dateID = $dateRecord[DATE_TABLE_DATE_ID];
        $filter[APPR_ABS_BOOK_DATE_DATE_ID] = $dateID;
        $bookingsForDate = RetrieveApprovedAbsenceBookingDates($filter);
        if ($bookingsForDate != NULL) {
            //One or more bookings exist. itterate through them.
            foreach ($bookingsForDate as $bookingDate) {
                //Using the absence booking record, obtain the employee
                //record from the database
                $absenceBooking = RetrieveApprovedAbsenceBookingByID($bookingDate[APPR_ABS_BOOK_DATE_ABS_BOOK_ID]);
                if ($absenceBooking != NULL) {
                    $staffMember = RetrieveEmployeeByID($absenceBooking[APPR_ABS_EMPLOYEE_ID]);
                    //-----------------------------------------------------
                    // Check to see if this member of staff performs the
                    // same role as the role of the employee requesting this
                    // leave. If so, add one to the count of staff on leave.
                    //-----------------------------------------------------
                    if ($staffMember[EMP_COMPANY_ROLE] == $roleID) {
                        $countOfStaffOnLeave = $countOfStaffOnLeave + 1;
                    }
                } else {
                    error_log("Unknown absence booking id of " . $bookingDate[APPR_ABS_BOOK_DATE_ABS_BOOK_ID]);
                }
            }
        }
    } else {
        error_log("Unknown date of {$date}");
    }
    return $countOfStaffOnLeave;
}
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;
}