/**
  * Updates an advertisements genres if a change has occurred..
  *
  * @param int $advertisementID
  * @param int $memberID
  * @param String $changeKey
  * @param int [] $genreInputIDs
  * @param Connection $dbConnection
  */
 public function updateAdvertisementGenres($advertisementID, $memberID, $changeKey, $genreInputIDs, $dbConnection)
 {
     try {
         //If the genres have been changed, delete the current genres and create new ones.
         //This is quicker then trying to determine the records to keep.
         if (stripos($changeKey, AdvertisementEditConstants::GENRE_INPUT_CHANGE_KEY) !== false) {
             if (AdvertisementGenreController::deleteAdvertisementGenres($advertisementID, $dbConnection)) {
                 AdvertisementGenreController::createAdvertisementGenres($advertisementID, $memberID, $genreInputIDs, $dbConnection);
             }
         }
     } catch (Exception $ex) {
         //Do nothing
     }
 }
try {
    $dbConnection = DatabaseUtilities::getDatabaseConnection();
    //Get the current user's ID and details.
    $memberID = LoginController::getLoggedInMemberID($dbConnection);
    if ($memberID == null) {
        header("Location: login.php");
        exit;
    } else {
        //Check that the advertisement ID parameter has been passed.
        if (isset($_GET['advertisementID'])) {
            $advertisementID = $_GET['advertisementID'];
            if ($advertisementID != null) {
                //By called the getAdvertisementForEdit function we can ensure that the current user is an admin of the advertisement.
                $advertisementDetails = AdvertisementController::getAdvertisementForEdit($advertisementID, $memberID, $dbConnection);
                if ($advertisementDetails != null) {
                    $advertisementGenres = AdvertisementGenreController::getAdvertisementGenres($advertisementID, $dbConnection);
                    $advertisementPositions = AdvertisementPositiionController::getAdvertisementPositions($advertisementID, $dbConnection);
                    $memberIDEncrypted = EncryptionUtilities::encryptString($memberID);
                    $processed = true;
                }
            }
        }
    }
} catch (Exception $ex) {
    $processed = false;
}
$dbConnection = null;
if (!$processed) {
    ErrorUtilities::errorRedirect(ErrorConstants::ADVERTISEMENT_VIEW_ERROR);
} else {
    require_once $config->getIncludeURL(Config::INCLUDES_PATH, "views%advertisement_applications.php");
 $submissionKey = $_POST[AdvertisementCreateConstants::SUBMISSION_KEY_INPUT];
 echo "Submission Key " . $submissionKey;
 if (MemberSubmissionController::checkSubmissionKey($memberID, $submissionKey, $dbConnection)) {
     $inputMemberID = $_POST[AdvertisementCreateConstants::MEMBER_ID_INPUT];
     $encryptedID = $_POST[AdvertisementCreateConstants::ENCRYPTED_ID_INPUT];
     if (AdvertisementController::processAdvertisementCreateSecurityCheck($memberID, $inputMemberID, $encryptedID)) {
         $advertisementID = AdvertisementController::createAdvertisement($memberID, $_POST[AdvertisementCreateConstants::FOR_INPUT_ID], $_POST[AdvertisementCreateConstants::SUMMARY_INPUT_ID], $_POST[AdvertisementCreateConstants::DESCRIPTION_INPUT_ID], $_POST[AdvertisementCreateConstants::INSPIRATIONS_INPUT_ID], $_POST[AdvertisementCreateConstants::BAND_INPUT_ID], $_POST[LocationConstants::LOCATION_COUNTRY_INPUT_ID], $_POST[LocationConstants::LOCATION_STATE_INPUT_ID], $_POST[LocationConstants::LOCATION_CITY_INPUT_ID], $_POST[LocationConstants::LOCATION_REGION_INPUT_ID], $dbConnection);
         if ($advertisementID > 0) {
             //If advertisement is for a position in a band.
             if ($_POST[AdvertisementCreateConstants::FOR_INPUT_ID] == 2) {
                 $bandID = $_POST[AdvertisementCreateConstants::BAND_INPUT_ID];
                 if (BandMemberController::isBandMemberAdmin($bandID, $memberID, $dbConnection)) {
                     BandAdvertisementController::createBandAdvertisement($bandID, $advertisementID, $dbConnection);
                 }
             }
             if (AdvertisementGenreController::createAdvertisementGenres($advertisementID, $memberID, $_POST[AdvertisementCreateConstants::GENRE_INPUT_ID], $dbConnection)) {
                 $positionCount = $_POST[AdvertisementCreateConstants::POSITION_COUNT_ID];
                 echo "Position Count : " . $positionCount;
                 $positionList = null;
                 for ($i = 1; $i <= $positionCount; $i++) {
                     $position = new AdvertisementPosition();
                     $position->setVariable(AdvertisementPosition::ADVERTISEMENT_ID, $advertisementID);
                     $position->setVariable(AdvertisementPosition::POSITION_NUMBER, $i);
                     $position->setVariable(AdvertisementPosition::INSTRUMENT_ID, $_POST[AdvertisementPositionConstants::POSITION_TYPE_INPUT_ID . $i]);
                     $position->setVariable(AdvertisementPosition::DURATION_ID, $_POST[AdvertisementPositionConstants::POSITION_DURATION_INPUT_ID . $i]);
                     $position->setVariable(AdvertisementPosition::EXPERIENCE_ID, $_POST[AdvertisementPositionConstants::POSITION_EXP_INPUT_ID . $i]);
                     $position->setVariable(AdvertisementPosition::GENDER_ID, $_POST[AdvertisementPositionConstants::POSITION_GENDER_INPUT_ID . $i]);
                     $position->setVariable(AdvertisementPosition::AGE_RANGE_ID, $_POST[AdvertisementPositionConstants::POSITION_AGE_INPUT_ID . $i]);
                     $position->setVariable(AdvertisementPosition::DESCRIPTION, $_POST[AdvertisementPositionConstants::POSITION_OTHER_INPUT_ID . $i]);
                     $positionList[] = $position;
                 }
$dbConnection = null;
$memberID = null;
$processed = false;
try {
    $dbConnection = DatabaseUtilities::getDatabaseConnection();
    //Get the current user's ID and details.
    $memberID = LoginController::getLoggedInMemberID($dbConnection);
    if ($memberID != null) {
        $submissionKey = $_POST[AdvertisementEditConstants::SUBMISSION_KEY_INPUT];
        if (MemberSubmissionController::checkSubmissionKey($memberID, $submissionKey, $dbConnection)) {
            if (AdvertisementController::processAdvertisementUpdateSecurityCheck($memberID, $_POST[AdvertisementEditConstants::MEMBER_ID_INPUT], $_POST[AdvertisementEditConstants::ENCRYPTED_ID_INPUT], $_POST[AdvertisementEditConstants::ADVERTISEMENT_ID_INPUT], $_POST[AdvertisementEditConstants::KEY])) {
                $advertisementID = $_POST[AdvertisementEditConstants::ADVERTISEMENT_ID_INPUT];
                $changeKey = $_POST[AdvertisementEditConstants::CHANGED_INPUT_ID];
                AdvertisementController::updateAdvertisement($memberID, $changeKey, $advertisementID, $_POST[AdvertisementEditConstants::FOR_INPUT_ID], $_POST[AdvertisementEditConstants::BAND_INPUT_ID], $_POST[AdvertisementEditConstants::SUMMARY_INPUT_ID], $_POST[AdvertisementEditConstants::INSPIRATIONS_INPUT_ID], $_POST[AdvertisementEditConstants::DESCRIPTION_INPUT_ID], $_POST[LocationConstants::LOCATION_COUNTRY_INPUT_ID], $_POST[LocationConstants::LOCATION_STATE_INPUT_ID], $_POST[LocationConstants::LOCATION_CITY_INPUT_ID], $_POST[LocationConstants::LOCATION_REGION_INPUT_ID], $dbConnection);
                BandAdvertisementController::updateBandAdvertisement($_POST[AdvertisementEditConstants::BAND_INPUT_ID], $advertisementID, $memberID, $changeKey, $_POST[AdvertisementEditConstants::FOR_INPUT_ID], $dbConnection);
                AdvertisementGenreController::updateAdvertisementGenres($advertisementID, $memberID, $changeKey, $_POST[AdvertisementEditConstants::GENRE_INPUT_ID], $dbConnection);
                //Update advertisement positions.
                if ($_POST[AdvertisementEditConstants::POSITION_COUNT_ID] > 0) {
                    $i = 1;
                    $positionCount = $_POST[AdvertisementEditConstants::POSITION_COUNT_ID];
                    for ($i = 1; $i <= $_POST[AdvertisementEditConstants::POSITION_COUNT_ID]; $i++) {
                        $advertisementPositionID = $_POST[AdvertisementPositionConstants::ADVERTISEMENT_POSITION_ID . $i];
                        if ($advertisementPositionID == null) {
                            AdvertisementPositiionController::createAdvertisementPosition($advertisementID, $memberID, $i, $_POST[AdvertisementPositionConstants::POSITION_TYPE_INPUT_ID . $i], $_POST[AdvertisementPositionConstants::POSITION_DURATION_INPUT_ID . $i], $_POST[AdvertisementPositionConstants::POSITION_OTHER_INPUT_ID . $i], $_POST[AdvertisementPositionConstants::POSITION_EXP_INPUT_ID . $i], $_POST[AdvertisementPositionConstants::POSITION_AGE_INPUT_ID . $i], $_POST[AdvertisementPositionConstants::POSITION_GENDER_INPUT_ID . $i], $dbConnection);
                        } else {
                            AdvertisementPositiionController::updateAdvertisementPosition($advertisementPositionID, $_POST[AdvertisementPositionConstants::CHANGE_KEY_INPUT . $i], $advertisementID, $memberID, $i, $_POST[AdvertisementPositionConstants::POSITION_TYPE_INPUT_ID . $i], $_POST[AdvertisementPositionConstants::POSITION_DURATION_INPUT_ID . $i], $_POST[AdvertisementPositionConstants::POSITION_OTHER_INPUT_ID . $i], $_POST[AdvertisementPositionConstants::POSITION_EXP_INPUT_ID . $i], $_POST[AdvertisementPositionConstants::POSITION_AGE_INPUT_ID . $i], $_POST[AdvertisementPositionConstants::POSITION_GENDER_INPUT_ID . $i], $dbConnection);
                        }
                    }
                }
                $processed = true;
            }