public static Subscriber Map(SubscriberDetail subscriber)
        {
            var coreSubscriber = new Subscriber
            {
                Date = subscriber.Date,
                EmailAddress = subscriber.EmailAddress,
                Name = subscriber.Name,
                ReadsEmailWith = subscriber.ReadsEmailWith,
                State = subscriber.State
            };


            foreach (var customField in subscriber.CustomFields)
            {
                if (coreSubscriber.CustomFields == null)
                {
                    coreSubscriber.CustomFields = new List<CustomField>();
                }
                coreSubscriber.CustomFields.Add(new CustomField
                {
                    Key = customField.Key,
                    Value = customField.Value
                });
            }

            return coreSubscriber;
        }
示例#2
0
        public NegotiatedResult Modify(int accountId, int subscriberId, [FromBody] SubscriberDetail updated)
        {
            //TODO: add optimistic concurrency check

            var account = Database.GetAccountById(accountId);

            if (account == null)
            {
                return(AccountNotFoundError(accountId));
            }

            var subscriber = account.Subscribers.FirstOrDefault(x => x.Id == subscriberId);

            if (subscriber == null)
            {
                return(SubscriberNotFoundError(accountId, subscriberId));
            }

            subscriber.Birthday  = updated.Birthday;
            subscriber.FirstName = updated.FirstName;
            subscriber.LastName  = updated.LastName;

            return(NegotiatedResult(new Message("Subscriber modified!")
            {
                Links = new[]
                {
                    Url.LinkHome(),
                    Url.Link <SubscribersController>(x => x.Detail(account.Id, subscriber.Id)),
                    Url.Link <SubscribersController>(x => x.Index(account.Id, null), Rel.Parent)
                }
            }));
        }
        void BatchAdd()
        {
            Subscriber subscriber = new Subscriber(listID);

            List<SubscriberDetail> newSubscribers = new List<SubscriberDetail>();

            SubscriberDetail subscriber1 = new SubscriberDetail("*****@*****.**", "Test Person 1", new List<SubscriberCustomField>());
            subscriber1.CustomFields.Add(new SubscriberCustomField() { Key = "CustomFieldKey", Value = "Value" });
            subscriber1.CustomFields.Add(new SubscriberCustomField() { Key = "CustomFieldKey2", Value = "Value2" });

            newSubscribers.Add(subscriber1);

            SubscriberDetail subscriber2 = new SubscriberDetail("*****@*****.**", "Test Person 2", new List<SubscriberCustomField>());
            subscriber2.CustomFields.Add(new SubscriberCustomField() { Key = "CustomFieldKey", Value = "Value3" });
            subscriber2.CustomFields.Add(new SubscriberCustomField() { Key = "CustomFieldKey2", Value = "Value4" });

            newSubscribers.Add(subscriber2);

            try
            {
                BulkImportResults results = subscriber.Import(newSubscribers, true);
                Console.WriteLine(results.TotalNewSubscribers + " subscribers added");
                Console.WriteLine(results.TotalExistingSubscribers + " total subscribers in list");
            }
            catch (CreatesendException ex)
            {
                ErrorResult<BulkImportResults> error = (ErrorResult<BulkImportResults>)ex.Data["ErrorResult"];

                Console.WriteLine(error.Code);
                Console.WriteLine(error.Message);

                if (error.ResultData != null)
                {
                    //handle the returned data
                    BulkImportResults results = error.ResultData;

                    //success details are here as normal
                    Console.WriteLine(results.TotalNewSubscribers + " subscribers were still added");

                    //but we also have additional failure detail
                    foreach (ImportResult result in results.FailureDetails)
                    {
                        Console.WriteLine("Failed Address");
                        Console.WriteLine(result.Message + " - " + result.EmailAddress);
                    }
                }
            }
            catch (Exception ex)
            {
                // Handle some other failure
                Console.WriteLine(ex.ToString());
            }
        }
示例#4
0
        void BatchAdd()
        {
            Subscriber subscriber = new Subscriber(auth, listID);

            List <SubscriberDetail> newSubscribers = new List <SubscriberDetail>();

            SubscriberDetail subscriber1 = new SubscriberDetail("*****@*****.**", "Test Person 1", new List <SubscriberCustomField>());

            subscriber1.CustomFields.Add(new SubscriberCustomField()
            {
                Key = "CustomFieldKey", Value = "Value"
            });
            subscriber1.CustomFields.Add(new SubscriberCustomField()
            {
                Key = "CustomFieldKey2", Value = "Value2"
            });

            newSubscribers.Add(subscriber1);

            SubscriberDetail subscriber2 = new SubscriberDetail("*****@*****.**", "Test Person 2", new List <SubscriberCustomField>());

            subscriber2.CustomFields.Add(new SubscriberCustomField()
            {
                Key = "CustomFieldKey", Value = "Value3"
            });
            subscriber2.CustomFields.Add(new SubscriberCustomField()
            {
                Key = "CustomFieldKey2", Value = "Value4"
            });

            newSubscribers.Add(subscriber2);

            try
            {
                BulkImportResults results = subscriber.Import(newSubscribers, true);
                Console.WriteLine(results.TotalNewSubscribers + " subscribers added");
                Console.WriteLine(results.TotalExistingSubscribers + " total subscribers in list");
            }
            catch (CreatesendException ex)
            {
                ErrorResult <BulkImportResults> error = (ErrorResult <BulkImportResults>)ex.Data["ErrorResult"];

                Console.WriteLine(error.Code);
                Console.WriteLine(error.Message);

                if (error.ResultData != null)
                {
                    //handle the returned data
                    BulkImportResults results = error.ResultData;

                    //success details are here as normal
                    Console.WriteLine(results.TotalNewSubscribers + " subscribers were still added");

                    //but we also have additional failure detail
                    foreach (ImportResult result in results.FailureDetails)
                    {
                        Console.WriteLine("Failed Address");
                        Console.WriteLine(result.Message + " - " + result.EmailAddress);
                    }
                }
            }
            catch (Exception ex)
            {
                // Handle some other failure
                Console.WriteLine(ex.ToString());
            }
        }