示例#1
0
        //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);
        }