$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) {
        if (isset($_POST[AdvertisementApplicationConstants::SUBMISSION_KEY_INPUT])) {
            if (MemberSubmissionController::checkSubmissionKey($memberID, $_POST[AdvertisementApplicationConstants::SUBMISSION_KEY_INPUT])) {
                $inputMemberID = $_POST[AdvertisementApplicationConstants::MEMBER_ID_INPUT];
                $encryptedID = $_POST[AdvertisementApplicationConstants::ENCRYPTED_ID_INPUT];
                if (AdvertisementApplicationController::processAdvertisementApplicationSecurityCheck($memberID, $inputMemberID, $encryptedID)) {
                    if (AdvertisementApplicationController::createAdvertismentPositionApplication($memberID, $_POST[AdvertisementApplicationConstants::ADVERTISEMENT_POSITION_ID_INPUT], $_POST[AdvertisementApplicationConstants::MESSAGE_INPUT], $dbConnection)) {
                        $processed = true;
                    }
                }
                //Clear submission key so it cannot be used again, regardless of success.
                MemberSubmissionController::deactivateSubmissionKey($memberID, $_POST[AdvertisementApplicationConstants::SUBMISSION_KEY_INPUT], $processed, $dbConnection);
            }
        }
    }
} catch (Exception $ex) {
    $processed = false;
}
$dbConnection = null;
if (!$processed) {
    echo "0";
} else {
    echo "1";
}
                $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;
            }
            MemberSubmissionController::deactivateSubmissionKey($memberID, $submissionKey, $processed, $dbConnection);
        }
    }
} catch (Exception $ex) {
    $processed = false;
}
$dbConnection = null;
if (!$processed) {
    ErrorUtilities::errorRedirect(ErrorConstants::GENERAL_ERROR);
} else {
    header("Location: advertisement.php?advertisementID=" . $advertisementID);
}