Exemple #1
0
        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);
        }
Exemple #4
0
        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;
            }
        }
Exemple #5
0
        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;
            }
        }