public ActionResult Index(string id, string listName) { if (string.IsNullOrEmpty(id) == true || string.IsNullOrEmpty(listName)) { ViewBag.errorMessage = "Empty subscriber ID or list name."; return View("Error"); } string filter = TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, listName), TableOperators.And, TableQuery.GenerateFilterCondition("SubscriberGUID", QueryComparisons.Equal, id)); var query = new TableQuery<Subscriber>().Where(filter); var subscriber = mailingListTable.ExecuteQuery(query).ToList().Single(); if (subscriber == null) { ViewBag.Message = "You are already unsubscribed"; return View("Message"); } var unsubscribeVM = new UnsubscribeVM(); unsubscribeVM.EmailAddress = MaskEmail(subscriber.EmailAddress); unsubscribeVM.ListDescription = FindRow(subscriber.ListName, "mailinglist").Description; unsubscribeVM.SubscriberGUID = id; unsubscribeVM.Confirmed = null; return View(unsubscribeVM); }
public async Task<ActionResult> Index(string id, string listName) { if (string.IsNullOrEmpty(id) == true || string.IsNullOrEmpty(listName)) { ViewBag.errorMessage = "Empty subscriber ID or list name."; return View("Error"); } TableRequestOptions reqOptions = new TableRequestOptions() { MaximumExecutionTime = TimeSpan.FromSeconds(1.5), RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(3), 3) }; string filter = TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, listName), TableOperators.And, TableQuery.GenerateFilterCondition("SubscriberGUID", QueryComparisons.Equal, id)); var query = new TableQuery<Subscriber>().Where(filter); TableContinuationToken token = null; OperationContext ctx = new OperationContext() { ClientRequestID = "" }; TableQuerySegment<Subscriber> currentSegment = null; currentSegment = await mailingListTable.ExecuteQuerySegmentedAsync(query, token, reqOptions, ctx); var subscriber = currentSegment.Results.ToList().Single(); if (subscriber == null) { ViewBag.Message = "You are already unsubscribed"; return View("Message"); } var unsubscribeVM = new UnsubscribeVM(); unsubscribeVM.EmailAddress = MaskEmail(subscriber.EmailAddress); var mailingList = await FindRowAsync(subscriber.ListName, "mailinglist"); unsubscribeVM.ListDescription = mailingList.Description; unsubscribeVM.SubscriberGUID = id; unsubscribeVM.Confirmed = null; return View(unsubscribeVM); }
public ActionResult Index(string subscriberGUID, string listName, string action) { string filter = TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, listName), TableOperators.And, TableQuery.GenerateFilterCondition("SubscriberGUID", QueryComparisons.Equal, subscriberGUID)); var query = new TableQuery<Subscriber>().Where(filter); var subscriber = mailingListTable.ExecuteQuery(query).ToList().Single(); var unsubscribeVM = new UnsubscribeVM(); unsubscribeVM.EmailAddress = MaskEmail(subscriber.EmailAddress); unsubscribeVM.ListDescription = FindRow(subscriber.ListName, "mailinglist").Description; unsubscribeVM.SubscriberGUID = subscriberGUID; unsubscribeVM.Confirmed = false; if (action == "Confirm") { unsubscribeVM.Confirmed = true; var deleteOperation = TableOperation.Delete(subscriber); mailingListTable.Execute(deleteOperation); } return View(unsubscribeVM); }
public async Task<ActionResult> Index(string subscriberGUID, string listName, string action) { TableRequestOptions reqOptions = new TableRequestOptions() { MaximumExecutionTime = TimeSpan.FromSeconds(1.5), RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(3), 3) }; string filter = TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, listName), TableOperators.And, TableQuery.GenerateFilterCondition("SubscriberGUID", QueryComparisons.Equal, subscriberGUID)); var query = new TableQuery<Subscriber>().Where(filter); TableContinuationToken token = null; OperationContext ctx = new OperationContext() { ClientRequestID = "" }; TableQuerySegment<Subscriber> currentSegment = null; currentSegment = await mailingListTable.ExecuteQuerySegmentedAsync(query, token, reqOptions, ctx); var subscriber = currentSegment.Results.ToList().Single(); var unsubscribeVM = new UnsubscribeVM(); unsubscribeVM.EmailAddress = MaskEmail(subscriber.EmailAddress); var mailingList = await FindRowAsync(subscriber.ListName, "mailinglist"); unsubscribeVM.ListDescription = mailingList.Description; unsubscribeVM.SubscriberGUID = subscriberGUID; unsubscribeVM.Confirmed = false; if (action == "Confirm") { unsubscribeVM.Confirmed = true; var deleteOperation = TableOperation.Delete(subscriber); mailingListTable.Execute(deleteOperation); } return View(unsubscribeVM); }