function ApproveAdHocRequest($requestID)
{
    $statusMessage = "";
    $succeeded = true;
    $request = RetrieveAdHocAbsenceRequestByID($requestID);
    if ($request != NULL) {
        $absenceType = $request[AD_HOC_ABSENCE_TYPE_ID];
        $start = $request[AD_HOC_START];
        $end = $request[AD_HOC_END];
        $succeeded = ProcessAbsenceRequest($request[AD_HOC_EMP_ID], $start, $end, $absenceType, $statusMessage);
        if ($succeeded) {
            DeleteAdHocAbsenceRequest($requestID);
        }
    } else {
        $statusMessage .= "Error: Unable to process your request." . "The AdHoc Request ID of {$requestID} " . "could not be found in the database. Please " . "contact your system administrator.</br>";
        $succeeded = false;
    }
    GenerateStatus($succeeded, $statusMessage);
}
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;
}