private static void AsyncProcessMailerQueue(object data) { if (mailerLock) { return; } try { mailerLock = true; BirthdaySearch search = new BirthdaySearch(); UserSearchResults results = search.GetResults(); if (results != null) { foreach (string username in results.Usernames) { User user = null; try { user = User.Load(username); } catch (NotFoundException) { continue; } EmailTemplates.HappyBirthday happyBirthdayTemplate = new EmailTemplates.HappyBirthday(user.LanguageId); Email.Send(Config.Misc.SiteTitle, Config.Misc.SiteEmail, user.Name, user.Email, happyBirthdayTemplate.GetFormattedSubject(user.Name), happyBirthdayTemplate.GetFormattedBody(user.Name), false); } } } catch (Exception err) { Global.Logger.LogError("BirthdayEmails", err); } finally { mailerLock = false; } }
private void LoadBirthdays() { DataTable dtBirthdays = null; string cacheKey = String.Format("Components_LoadBirthdays"); if (HttpContext.Current != null && HttpContext.Current.Cache[cacheKey] != null) { dtBirthdays = Cache[cacheKey] as DataTable; } else { dtBirthdays = new DataTable(); dtBirthdays.Columns.Add("Date", typeof (DateTime)); dtBirthdays.Columns.Add("Username", typeof (string)); int count = 0; for (int i = 0; i < 7; i++) { if (count >= 12) break; BirthdaySearch search = new BirthdaySearch(); search.Birthdate = DateTime.Now.AddDays(i).Add(Config.Misc.TimeOffset); if (search.Birthdate.Month == 1 && search.Birthdate.Day == 1) continue; // skip fake birthdays UserSearchResults results = search.GetResults(); if (results == null || results.Usernames == null) continue; foreach (string username in results.Usernames) { dtBirthdays.Rows.Add(new object[] {search.Birthdate, username}); ++count; } } Cache.Insert(cacheKey, dtBirthdays, null, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, null); } if (dtBirthdays.Rows.Count != 0) { rptBirthdays.DataSource = dtBirthdays; rptBirthdays.DataBind(); } else Visible = false; }
private void LoadBirthdays() { DataTable dtBirthdays = null; string cacheKey = String.Format("Components_LoadBirthdays_{0}_{1}_{2}", Gender == User.eGenderSearch.All ? "null" : Gender.ToString(), MinAge, MaxAge); if (HttpContext.Current != null && HttpContext.Current.Cache[cacheKey] != null) { dtBirthdays = Cache[cacheKey] as DataTable; } else { dtBirthdays = new DataTable(); dtBirthdays.Columns.Add("Date", typeof (DateTime)); dtBirthdays.Columns.Add("Username", typeof (string)); dtBirthdays.Columns.Add("DisplayName", typeof (string)); UserSession user = PageBase.GetCurrentUserSession(); int count = 0; for (int i = 0; i < 7; i++) { if (count >= 12) break; BirthdaySearch search = new BirthdaySearch(); search.Birthdate = DateTime.Now.AddDays(i).Add(Config.Misc.TimeOffset); search.MinAge = Math.Max(MinAge, user.Age -10); search.MaxAge = Math.Min(MaxAge, user.Age + 10); if (Gender != User.eGenderSearch.All) search.Gender = (User.eGender)Gender; if (search.Birthdate.Month == 1 && search.Birthdate.Day == 1) continue; // skip fake birthdays UserSearchResults results = search.GetResults(); if (results == null || results.Usernames == null) continue; foreach (string username in results.Usernames) { //using (var db = new AspNetDatingDataContext()) { string displayName = user.GetUserDisplayedNameByUsername(username); dtBirthdays.Rows.Add(new object[] { search.Birthdate, username, displayName }); } ++count; } } Cache.Insert(cacheKey, dtBirthdays, null, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, null); } if (dtBirthdays.Rows.Count != 0) { rptBirthdays.DataSource = dtBirthdays; rptBirthdays.DataBind(); mvBirthdays.SetActiveView(vBirthdays); } else mvBirthdays.SetActiveView(vNoBirthdays); }
private static void AsyncProcessMailerQueue(object data) { if (mailerLock) { return; } try { mailerLock = true; BirthdaySearch search = new BirthdaySearch(); UserSearchResults results = search.GetResults(); if (results != null) { foreach (string username in results.Usernames) { User user = null; try { user = User.Load(username); } catch (NotFoundException) { continue; } Event evt = new Event(username); evt.Type = Event.eType.FriendBirthday; evt.Save(); string[] usernames = User.FetchMutuallyFriends(username); foreach (string recipient in usernames) { User u = null; try { u = User.Load(recipient); } catch (NotFoundException) { continue; } MiscTemplates.FriendBirthday friendBirthdayTemplate = new MiscTemplates.FriendBirthday(u.LanguageId); Message.Send(Config.Users.SystemUsername, recipient, friendBirthdayTemplate.Message.Replace("%%USERNAME%%", username), 0); if (Config.Users.NewEventNotification) { int imageID = 0; try { imageID = Photo.GetPrimary(user.Username).Id; } catch (NotFoundException) { imageID = ImageHandler.GetPhotoIdByGender(user.Gender); } string text = String.Format("{0} has a birthday today".Translate(), "<b>" + user.Username + "</b>"); string thumbnailUrl = ImageHandler.CreateImageUrl(imageID, 50, 50, false, true, true); User.SendOnlineEventNotification(user.Username, recipient, text, thumbnailUrl, UrlRewrite.CreateShowUserUrl(user.Username)); } } } } } catch (Exception err) { Global.Logger.LogError("FriendBirthdayEmails", err); } finally { mailerLock = false; } }
private static void AsyncProcessMailerQueue(object data) { if (mailerLock) { return; } try { mailerLock = true; if (DateTime.Now.DayOfWeek == DayOfWeek.Monday) { using (var db = new ezFixUpDataContext()) { var friendsWithCommingBirthdays = CompiledQueries.FetchActiveFriendsByBirthday(db, 7); var usernames = friendsWithCommingBirthdays.Select(f => f.u_username).Distinct(); foreach (string recipient in usernames) { User u = null; try { u = Classes.User.Load(recipient); } catch (NotFoundException) { continue; } var hisBirthdaysFriends = friendsWithCommingBirthdays .Where(f => f.u_username == recipient) .Select(f => f.f_username).ToArray(); MiscTemplates.FriendBirthday friendBirthdayTemplate = new MiscTemplates.FriendBirthday(u.LanguageId); var frUsernames = string.Join(",\r\n", hisBirthdaysFriends); Message.Send(Config.Users.SystemUsername, recipient, friendBirthdayTemplate.Message.Replace("%%USERNAMES%%", frUsernames), 0); } } } BirthdaySearch search = new BirthdaySearch(); UserSearchResults results = search.GetResults(); if (results != null && results.Usernames != null) { foreach (string username in results.Usernames) { User user = null; try { user = Classes.User.Load(username); } catch (NotFoundException) { continue; } Event evt = new Event(username); evt.Type = Event.eType.FriendBirthday; evt.Save(); string[] usernames = Classes.User.FetchMutuallyFriends(username); foreach (string recipient in usernames) { User u = null; try { u = Classes.User.Load(recipient); } catch (NotFoundException) { continue; } //MiscTemplates.FriendBirthday friendBirthdayTemplate = // new MiscTemplates.FriendBirthday(u.LanguageId); //Message.Send(Config.Users.SystemUsername, recipient, // friendBirthdayTemplate.Message.Replace("%%USERNAME%%", username), 0); if (Config.Users.NewEventNotification) { int imageID = 0; try { imageID = Photo.GetPrimary(user.Username).Id; } catch (NotFoundException) { imageID = ImageHandler.GetPhotoIdByGender(user.Gender); } string text = String.Format("{0} has a birthday today".Translate(), "<b>" + user.Username + "</b>"); string thumbnailUrl = ImageHandler.CreateImageUrl(imageID, 50, 50, false, true, true); Classes.User.SendOnlineEventNotification(user.Username, recipient, text, thumbnailUrl, UrlRewrite.CreateShowUserUrl(user.Username)); } } } } } catch (Exception err) { Global.Logger.LogError("FriendBirthdayEmails", err); } finally { mailerLock = false; } }