public ActionResult GetNewsletter(string slug)
        {
            Newsletter newsletter = null;

            newsletter = _dynamicsClient.GetNewsletterBySlug(slug);

            if (newsletter == null)
            {
                return(new NotFoundResult());
            }

            return(new JsonResult(newsletter));
        }
        public static void RemoveNewsletterSubscriber(this IDynamicsClient context, string slug, string email)
        {
            Newsletter newsletter = context.GetNewsletterBySlug(slug);

            if (newsletter != null)
            {
                /*
                 * Subscriber existing = newsletter.Subscribers.FirstOrDefault(x => x.Email == email);
                 * if (existing != null)
                 * {
                 *  newsletter.Subscribers.Remove(existing);
                 *  context.Newsletters.Update(newsletter);
                 *  context.SaveChanges();
                 * }
                 */
            }
        }
        /// <summary>
        /// Adds a jurisdiction to the system, only if it does not exist.
        /// </summary>
        private static void AddInitialNewsletter(this IDynamicsClient context, ViewModels.Newsletter initialNewsletter)
        {
            Newsletter newsletter = context.GetNewsletterBySlug(initialNewsletter.slug);

            if (newsletter != null)
            {
                return;
            }

            newsletter = new Newsletter
                         (
                initialNewsletter.slug,
                initialNewsletter.title,
                initialNewsletter.description
                         );

            context.AddNewsletter(newsletter);
        }
        /// <summary>
        /// Update region
        /// </summary>
        /// <param name="context"></param>
        /// <param name="regionInfo"></param>
        public static void UpdateSeedNewsletterInfo(this IDynamicsClient context, Models.Newsletter newsletterInfo)
        {
            Newsletter newsletter = context.GetNewsletterBySlug(newsletterInfo.Slug);

            if (newsletter == null)
            {
                context.AddInitialNewsletter(newsletterInfo.ToViewModel());
            }
            else
            {
                // update Newsletter.
                MicrosoftDynamicsCRMlist list = new MicrosoftDynamicsCRMlist()
                {
                    Purpose     = newsletterInfo.Title,
                    Description = newsletterInfo.Description,
                    Listname    = newsletterInfo.Slug
                };

                context.Lists.Update(newsletter.Id.ToString(), list);
            }
        }
        public static void AddNewsletterSubscriber(this IDynamicsClient dynamicsClient, string slug, string email)
        {
            bool       newSubscriber = false;
            Newsletter newsletter    = dynamicsClient.GetNewsletterBySlug(slug);

            if (newsletter != null)
            {
                MicrosoftDynamicsCRMlead subscriber = dynamicsClient.GetSubscriberByEmail(email);
                if (subscriber == null)
                {
                    // add the new subscriber
                    MicrosoftDynamicsCRMlead newLead = new MicrosoftDynamicsCRMlead()
                    {
                        Emailaddress1 = email,
                        Firstname     = email
                    };

                    try
                    {
                        subscriber    = dynamicsClient.Leads.Create(newLead);
                        newSubscriber = true;
                    }
                    catch (HttpOperationException)
                    {
                        subscriber = null;
                    }
                    catch (Exception)
                    {
                        subscriber = null;
                    }
                }

                if (subscriber != null)
                {
                    // add the subscriber to the newsletter (Marketing List)

                    // check to determine if it is there already.
                    bool notFound = true;

                    if (subscriber.ListleadAssociation != null)
                    {
                        foreach (var item in subscriber.ListleadAssociation)
                        {
                            if (item.Listid == newsletter.Id.ToString())
                            {
                                notFound = false;
                            }
                        }
                    }

                    if (notFound)
                    {
                        try
                        {
                            EntityIdReference oDataId = new EntityIdReference()
                            {
                                EntityId = subscriber.Leadid
                            };
                            dynamicsClient.Lists.AddMember(newsletter.Id.ToString(), oDataId);
                        }
                        catch (HttpOperationException)
                        {
                            throw;
                        }
                    }
                }
            }
        }