public virtual SyncResult Synchronize() { var result = new SyncResult(); // Get all the queued records for subscription/unsubscription var allRecords = _subscriptionEventQueueingService.GetAll(); //get unique and latest records var allRecordsUnique = new List<MailChimpEventQueueRecord>(); foreach (var item in allRecords.OrderByDescending(x => x.CreatedOnUtc)) { var exists = allRecordsUnique.FirstOrDefault(x => x.Email.Equals(item.Email, StringComparison.InvariantCultureIgnoreCase)) != null; if (!exists) allRecordsUnique.Add(item); } var subscribeRecords = allRecordsUnique.Where(x => x.IsSubscribe).ToList(); var unsubscribeRecords = allRecordsUnique.Where(x => !x.IsSubscribe).ToList(); //subscribe if (subscribeRecords.Any()) { BatchSubscribeResult subscribeResult = BatchSubscribe(subscribeRecords); if (subscribeResult.AddCount > 0) { result.SubscribeResult = string.Format("Added {0} new records", subscribeResult.AddCount); } if(subscribeResult.UpdateCount>0){ result.SubscribeResult = string.Format("Updated {0} new records", subscribeResult.UpdateCount); } } else { result.SubscribeResult = "No records to add"; } //unsubscribe if (unsubscribeRecords.Any()) { var unsubscribeResultCount = BatchUnsubscribe(unsubscribeRecords); if (unsubscribeResultCount.SuccessCount > 0) { result.UnsubscribeResult = string.Format("Unsubscribe {0} complete ", unsubscribeResultCount); } } else { result.UnsubscribeResult = "No records to unsubscribe"; } //delete the queued records foreach (var sub in allRecords) { _subscriptionEventQueueingService.Delete(sub); } return result; }
public virtual SyncResult Synchronize() { var result = new SyncResult(); // Get all the queued records for subscription/unsubscription var allRecords = _subscriptionEventQueueingService.GetAll(); //get unique and latest records var allRecordsUnique = new List<MailChimpEventQueueRecord>(); foreach (var item in allRecords .OrderByDescending(x => x.CreatedOnUtc)) { var exists = allRecordsUnique .Where(x => x.Email.Equals(item.Email, StringComparison.InvariantCultureIgnoreCase)) .FirstOrDefault() != null; if (!exists) allRecordsUnique.Add(item); } var subscribeRecords = allRecordsUnique.Where(x => x.IsSubscribe).ToList(); var unsubscribeRecords = allRecordsUnique.Where(x => !x.IsSubscribe).ToList(); //subscribe if (subscribeRecords.Count > 0) { var subscribeResult = BatchSubscribe(subscribeRecords); //result if (subscribeResult.api_ErrorMessages.Count > 0) { foreach (var error in subscribeResult.api_ErrorMessages) result.SubscribeErrors.Add(error.error); } else { result.SubscribeResult = subscribeResult.ToString(); } } else { result.SubscribeResult = "No records to add"; } //unsubscribe if (unsubscribeRecords.Count > 0) { var unsubscribeResult = BatchUnsubscribe(unsubscribeRecords); //result if (unsubscribeResult.api_ErrorMessages.Count > 0) { foreach (var error in unsubscribeResult.api_ErrorMessages) result.UnsubscribeErrors.Add(error.error); } else { result.UnsubscribeResult = unsubscribeResult.ToString(); } } else { result.UnsubscribeResult = "No records to unsubscribe"; } //delete the queued records foreach (var sub in allRecords) _subscriptionEventQueueingService.Delete(sub); //other useful properties of listBatchSubscribeOutput and listBatchUnsubscribeOutput //output.result.add_count //output.result.error_count //output.result.update_count //output.result.errors //output.api_Request, output.api_Response, // raw data //output.api_ErrorMessages, output.api_ValidatorMessages); // & errors return result; }
public virtual SyncResult Synchronize() { var result = new SyncResult(); // Get all the queued records for subscription/unsubscription var allRecords = _subscriptionEventQueueingService.GetAll(); //get unique and latest records var allRecordsUnique = new List <MailChimpEventQueueRecord>(); foreach (var item in allRecords .OrderByDescending(x => x.CreatedOnUtc)) { var exists = allRecordsUnique .Where(x => x.Email.Equals(item.Email, StringComparison.InvariantCultureIgnoreCase)) .FirstOrDefault() != null; if (!exists) { allRecordsUnique.Add(item); } } var subscribeRecords = allRecordsUnique.Where(x => x.IsSubscribe).ToList(); var unsubscribeRecords = allRecordsUnique.Where(x => !x.IsSubscribe).ToList(); //subscribe if (subscribeRecords.Count > 0) { var subscribeResult = BatchSubscribe(subscribeRecords); //result if (subscribeResult.api_ErrorMessages.Count > 0) { foreach (var error in subscribeResult.api_ErrorMessages) { result.SubscribeErrors.Add(error.error); } } else { result.SubscribeResult = subscribeResult.ToString(); } } else { result.SubscribeResult = "No records to add"; } //unsubscribe if (unsubscribeRecords.Count > 0) { var unsubscribeResult = BatchUnsubscribe(unsubscribeRecords); //result if (unsubscribeResult.api_ErrorMessages.Count > 0) { foreach (var error in unsubscribeResult.api_ErrorMessages) { result.UnsubscribeErrors.Add(error.error); } } else { result.UnsubscribeResult = unsubscribeResult.ToString(); } } else { result.UnsubscribeResult = "No records to unsubscribe"; } //delete the queued records foreach (var sub in allRecords) { _subscriptionEventQueueingService.Delete(sub); } //other useful properties of listBatchSubscribeOutput and listBatchUnsubscribeOutput //output.result.add_count //output.result.error_count //output.result.update_count //output.result.errors //output.api_Request, output.api_Response, // raw data //output.api_ErrorMessages, output.api_ValidatorMessages); // & errors return(result); }