//public IEnumerable<T> GetAll<T>(string[] properties) where T : APIObject //{ // RetrieveRequest request = new RetrieveRequest(); // request.ObjectType = typeof(T).Name; // request.Properties = properties; // foreach (var result in GetObjectsSoapBinding(request)) // { // yield return (T)result; // } //} public CreateResult[] Save <T>(T record, SaveAction action) where T : APIObject { CreateOptions co = new CreateOptions(); co.SaveOptions = new SaveOption[1]; co.SaveOptions[0] = new SaveOption(); co.SaveOptions[0].SaveAction = action; co.SaveOptions[0].PropertyName = "*"; string emailAddress = " "; Type t = record.GetType(); if (t.Name == "Subscriber") { PropertyInfo propertyInfo = t.GetProperty("EmailAddress"); emailAddress = propertyInfo.GetValue(record, null).ToString(); } string cRequestID; string overallStatus; var results = _client.Create(co, new APIObject[] { record }, out cRequestID, out overallStatus); if (!overallStatus.Equals("OK")) { if (results.Length > 0) { if (results[0].StatusMessage == "InvalidEmailAddress") { //Debug.WriteLine("Invalid Email"); //Log.Message("Invalid Email {0}", emailAddress); _logging.LogMessage(String.Format("Invalid Email {0}", emailAddress), "Inside Save<T> Method", "Email rejected by the ET system."); } else if (results[0].StatusMessage == "EmailAddressAlreadyExists") { //Debug.WriteLine("Email Address Already Exists"); //Log.Message("Email Address Already Exists {0}", emailAddress); _logging.LogMessage(String.Format("Email Address Already Exists {0}", emailAddress), "Inside Save<T> Method", "Email already exists in ET system"); } else if (results[0].StatusMessage == "OnListAlready") { //Debug.WriteLine("On List Already"); //Log.Message("On List Already", emailAddress); _logging.LogMessage(String.Format("Email Address Already on list {0}", emailAddress), "Inside Save<T> Method", "Email already on list in ET system"); } else if (results[0].StatusMessage == "TriggeredSpamFilter") { //Debug.WriteLine("Triggered Spam Filter"); //Log.Message("Triggered Spam Filter {0}", emailAddress); _logging.LogMessage(String.Format("Triggered Spam Filter {0}", emailAddress), "Inside Save<T> Method", "Email blocked by ET system"); } else { if (results.Length > 0 && results[0].StatusMessage != "OnGlobalUnsubList") { _logging.LogMessage(String.Format("On Global Unsub List {0}", emailAddress), "Inside Save<T> Method", "Email is on ET system Global Usubscribe List"); } } } } if (action.IsOneOf(SaveAction.AddOnly, SaveAction.UpdateAdd)) { if (results.Length == 1) { var result = results[0]; record.ID = result.NewID; } } return(results); }