public static MailingList GetByID(int MailingListID, IEnumerable <string> includeList = null) { MailingList obj = null; string key = cacheKeyPrefix + MailingListID + GetCacheIncludeText(includeList); MailingList tmpClass = null; if (Cache.IsEnabled) { if (Cache.IsEmptyCacheItem(key)) { return(null); } tmpClass = Cache[key] as MailingList; } if (tmpClass != null) { obj = tmpClass; } else { using (Entities entity = new Entities()) { IQueryable <MailingList> itemQuery = AddIncludes(entity.MailingList, includeList); obj = itemQuery.FirstOrDefault(n => n.MailingListID == MailingListID); } Cache.Store(key, obj); } return(obj); }
public MailingList(MailingList objectToCopy) { Active = objectToCopy.Active; Deleted = objectToCopy.Deleted; MailingListID = objectToCopy.MailingListID; Name = objectToCopy.Name; }
public static UnsubscribeUserReturnCode UnsubscribeUser(int mailingListID, string email) { ClearCache(); // Find the Subscriber record by Email Address List <Subscriber> subs = Subscriber.SubscriberGetByEmail(email); if (subs.Count == 0) { return(UnsubscribeUserReturnCode.Never_Subscribed); } // Find the MailingList (validation purposes) MailingList ml = MailingList.GetByID(mailingListID); if (ml == null) { return(UnsubscribeUserReturnCode.Missing_MailingList); } // Find the MailingListSubscriber record (this could be better) List <MailingListSubscriber> mls = MailingListSubscriber.MailingListSubscriberGetBySubscriberID(subs[0].SubscriberID); if (mls.Count == 0) { return(UnsubscribeUserReturnCode.Never_Subscribed); } bool alreadyUnsubscribed = false; foreach (MailingListSubscriber t in mls) { if (t.MailingListID == mailingListID) { alreadyUnsubscribed = true; if (t.Active) { // Ok, the MailingListSubscriber is active, deactivate t.Active = false; t.Save(); return(UnsubscribeUserReturnCode.Success); } } } if (alreadyUnsubscribed) { return(UnsubscribeUserReturnCode.Already_Unsubscribed); } return(UnsubscribeUserReturnCode.Already_Unsubscribed); }
public static SubscribeUserReturnCode SubscribeUser(int mailingListID, string email, int newsletterFormatID, int?userID) { ClearCache(); // Find the Subscriber record by Email Address List <Subscriber> subs = Subscriber.SubscriberGetByEmail(email); if (subs.Count == 0) { // Not yet a Subscriber, create new Subscriber Subscriber sub = new Subscriber(); sub.Email = email; sub.DefaultNewsletterFormatID = newsletterFormatID; //this should be set to the user preference via SetSubscriberDefaultNewsletterFormatID sub.UserID = userID; sub.Save(); subs.Add(sub); } // Find the MailingList (validation purposes) MailingList ml = MailingList.GetByID(mailingListID); if (ml == null) { return(SubscribeUserReturnCode.Missing_MailingList); } // Find the MailingListSubscriber record (this could be better) List <MailingListSubscriber> mls = MailingListSubscriber.MailingListSubscriberGetBySubscriberID(subs[0].SubscriberID); foreach (MailingListSubscriber t in mls) { if (t.MailingListID == mailingListID) { //if subscriber isn't flagged as deleted... if (t.Active) { // Ok, the MailingListSubscriber is active, return t.NewsletterFormatID = newsletterFormatID; t.Save(); return(SubscribeUserReturnCode.Already_Subscribed); } // MailingListSubscriber already exists but was inactive or was deleted from the subscriber list, reactivate and return success subs[0].Deleted = false; subs[0].Save(); t.Active = true; t.NewsletterFormatID = newsletterFormatID; t.Save(); return(SubscribeUserReturnCode.Success); } } if (Settings.EnableMailingListLimitations && MailingListSubscriber.GetCountByMailingListIDActive(mailingListID, true) >= Settings.MaxNumberSubscribers) { return(SubscribeUserReturnCode.MailingList_Full); } //if MailingListSubscriber does not exist, create a new MailingListSubscriber MailingListSubscriber mlsNew = new MailingListSubscriber(); mlsNew.MailingListID = mailingListID; mlsNew.SubscriberID = subs[0].SubscriberID; mlsNew.NewsletterFormatID = newsletterFormatID; mlsNew.Active = true; mlsNew.EntityID = Guid.NewGuid(); mlsNew.Save(); return(SubscribeUserReturnCode.Success); }