<script runat="server" language="javascript">
Platform.Load("core", "1");
try {
var emailAddress = Variable.GetValue("@email"),
preferenceDE = Variable.GetValue("@PreferenceCenter"),
preferenceDEKey = Variable.GetValue("@PreferenceCenterKey"),
jobID = Variable.GetValue("@jobId"),
batchID = Variable.GetValue("@batchId"),
listID = Variable.GetValue("@listId"),
memberID = Variable.GetValue("@memberId"),
emailName = Variable.GetValue("@emailname"),
unsubscribe = Variable.GetValue("@unsubscribe");
var prefDE = DataExtension.Init(preferenceDEKey);
var filter = { Property: "Email", SimpleOperator: "equals", Value: emailAddress };
var dataRows = prefDE.Rows.Retrieve(filter);
if (unsubscribe === "true") {
unsubscribeRequest(dataRows, memberID, emailAddress, jobID, listID, batchID);
} else if (unsubscribe === "false") {
updateSubscribers(dataRows, memberID, emailAddress);
}
} catch (e) {
Write("Error: " + Stringify(e));
}
// Unsubscribe Event - update subscriber status to unsubscribe
function unsubscribeRequest(dataRows, memberID, emailAddress, jobID, listID, batchID) {
var prox = new Script.Util.WSProxy();
for (var i = 0; i < dataRows.length; i++) {
var subKey = dataRows[i].SubscriberKey;
var props = [
{ Name: "SubscriberKey", Value: subKey },
{ Name: "EmailAddress", Value: emailAddress },
{ Name: "JobID", Value: jobID },
{ Name: "ListID", Value: listID },
{ Name: "BatchID", Value: batchID },
{ Name: "Status", Value: "unsubscribed" },
{ Name: "Reason", Value: "Preference Center Unsubscribe" }
];
prox.setClientId({ "ID": memberID });
var data = prox.execute(props, "LogUnsubEvent");
Write("Unsubscribed: " + subKey);
}
}
// Update Subscriber Status - update subscriber status to active
function updateSubscribers(dataRows, memberID, emailAddress) {
var prox = new Script.Util.WSProxy();
for (var i = 0; i < dataRows.length; i++) {
var subKey = dataRows[i].SubscriberKey;
var props = [
{ Name: "SubscriberKey", Value: subKey },
{ Name: "EmailAddress", Value: emailAddress },
{ Name: "Status", Value: "active" }
];
prox.setClientId({ "ID": memberID });
var options = { SaveOptions: [{ 'PropertyName': '*', SaveAction: 'UpdateAdd' }] };
var resp = prox.createItem("Subscriber", props, options);
Write("Updated Subscriber: " + subKey);
}
}
</script>