public void SendSpotterInvites(object o, System.EventArgs e) { Cambro.Web.Helpers.WriteAlertHeader(); Cambro.Web.Helpers.WriteAlert("Selecting spotters...", 1); Query q = new Query(); q.QueryCondition = new And( new Q(Usr.Columns.IsSpotter, true), new Q(Usr.Columns.AddressCountryK, QueryOperator.NotEqualTo, 224), new Q(Usr.Columns.AddressCountryK, QueryOperator.NotEqualTo, 225) ); UsrSet bs = new UsrSet(q); for (int count = 0; count < bs.Count; count++) { Usr c = bs[count]; try { Mailer m = new Mailer(); m.UsrRecipient = c; m.Subject = "Calling all DontStayIn Spotters - cards now available!"; m.RedirectUrl = "/pages/spotters"; m.Body = @"<p>Calling all spotters!</p> <p>You recently signed up as a Spotter on DontStayIn, but because you weren't based in the UK we couldn't send you a pack of cards. Spotter cards help people find their photos, and get the word out about DontStayIn!</p> <p><b>We can now send spotter cards all over the world!</b></p> <p>Just visit the <a href=""[LOGIN]"">Spotters page</a>, check your address is still correct, and click the 'request more cards' button. We'll send them out straight away.</p> <p>Please note they will be sent airmail from the UK, so they may take about a week to arrive.</p> "; m.Send(); // Do work here! c.Update(); Cambro.Web.Helpers.WriteAlert("Done " + count + "/" + bs.Count, 2); } catch(Exception ex) { Cambro.Web.Helpers.WriteAlert("Exception " + count + "/" + bs.Count + " - " + ex.ToString(), 3); } bs.Kill(count); } Cambro.Web.Helpers.WriteAlert("Done!", 3); Cambro.Web.Helpers.WriteAlertFooter(); }
public void CampDsiEmails(object o, System.EventArgs e) { Cambro.Web.Helpers.WriteAlertHeader(); Cambro.Web.Helpers.WriteAlert("Selecting users...", 1); Query q = new Query(); q.TableElement = new JoinLeft(Usr.Columns.K, GroupUsr.Columns.UsrK); q.TableElement = new Join(q.TableElement, new TableElement(TablesEnum.UsrEventAttended), QueryJoinType.Left, Usr.Columns.K, UsrEventAttended.Columns.UsrK); q.QueryCondition = new Or( new Q(GroupUsr.Columns.GroupK, 1060), new Q(UsrEventAttended.Columns.EventK, 29398), new Q(UsrEventAttended.Columns.EventK, 10597) ); q.Distinct = true; q.DistinctColumn = Usr.Columns.K; UsrSet bs = new UsrSet(q); for (int count = 0; count < bs.Count; count++) { Usr c = bs[count]; try { Mailer m = new Mailer(); m.UsrRecipient = c; m.RedirectUrl = "/event-29398"; m.Subject = "DontStayIn 3rd birthday bash! - Camp DSI 2006!"; m.Body = @"<p> <div style=""font-size:33px; font-weight:bold; line-height:33px;""> <center>DSI IS 3 YEARS OLD!</center> </div> </p> <p> <div style=""font-size:36px; font-weight:bold;line-height:36px;""> <center>LETS GO CAMPING!</center> </div> </p> <p> <center> Friday 16th June to Sunday 18th June 2006<br> <a href=""[LOGIN]"">Camp DSI</a> @ <a href=""[LOGIN(/uk/barnstaple/little-roadway-farm-campsite)]"">Little Roadway Farm Campsite</a> in Woolacombe, North Devon </center> </p> <table cellspacing=""10""><tr><td valign=""top""> <p> You are receiving this email because you are signed up to Camp DSI! </p> <p> This year we are heading back to the beautiful Woolacombe in Devon to celebrate our third birthday! DSI will be 3 years old! Can you believe it? </p> <p> If you're not coming, please be so kind as to take your name off the <a href=""[LOGIN]"">event page</a>. </p> <p> For those of you coming, <b>GET READY FOR A WEEKEND TO REMEMBER!</b> </p> <p> This year you can expect a marquee playing music on Friday evening, Saturday daytime and evening and Sunday daytime. We have lots of activities provided by some of our DSI regulars - currently we have: </p> <p> <b>A dressing up tent, a giant BBQ, a tea tent, a break-dancing tent, a body painting tent, a casino / strip poker tent, a massage tent, a rubber dingy racing contest, a tequila drinking contest and photography lessons!!!</b> </p> <p> If you think you could add anything to the fun, please put your name down on <a href=""[LOGIN(/chat/k-629074)]"">this topic</a> and we will be in contact. </p> <p> Tickets are £20 for the whole weekend. That includes campsite fees etc. The rest will be used to pay for marquees / sound rigs / all the other bits and bobs. </p> <p> <b>We've only got 300 tickets, but there are 400 of you signed up... Some of you might be disappointed if you don't buy your tickets early! The only way to get a ticket is to <a href=""[LOGIN]"">buy on the event page</a>. If you don't have a credit card, you can get one of your friends to buy one for you.</b> </p> <p> Everyone who buys a ticket will get a little CAMP DSI icon on their profile! </p> <p> We're really excited about this - it's going to be great to meet you all in the flesh! See you there! </p> </td> <td valign=""top""> <p> <a href=""[LOGIN(/photo-503702)]""><img src=""[WEB-ROOT]gfx/camp-dsi-jump.jpg"" width=""100"" height=""133"" border=""0"" style=""border:1px solid #000000;""></a> </p> <p> <a href=""[LOGIN(/photo-474887)]""><img src=""[WEB-ROOT]gfx/camp-dsi-matt.jpg"" width=""100"" height=""94"" border=""0"" style=""border:1px solid #000000;""></a> </p> <p> <a href=""[LOGIN(/photo-476406)]""><img src=""[WEB-ROOT]gfx/camp-dsi-vw.jpg"" width=""100"" height=""133"" border=""0"" style=""border:1px solid #000000;""></a> </p> <p> <a href=""[LOGIN(/photo-475245)]""><img src=""[WEB-ROOT]gfx/camp-dsi-girl.jpg"" width=""100"" height=""127"" border=""0"" style=""border:1px solid #000000;""></a> </p> </td></tr></table> <p style=""margin-bottom:10px;""> <center><a href=""[LOGIN]"" style=""font-size:20px; font-weight:bold;line-height:20px;"">CLICK HERE TO BUY YOUR TICKETS!</a></center> </p> "; m.Send(); //Response.Write(c.NickName + "<br>"); // Do work here! //c.Update(); if (count % 10 == 0) Cambro.Web.Helpers.WriteAlert("Done " + count + "/" + bs.Count, 2); } catch (Exception ex) { Cambro.Web.Helpers.WriteAlert("Exception " + count + "/" + bs.Count + " - " + ex.ToString(), 3); } bs.Kill(count); } Cambro.Web.Helpers.WriteAlert("Done!", 3); Cambro.Web.Helpers.WriteAlertFooter(); }
public void SendGlobalEmail(object o, System.EventArgs e) { Cambro.Web.Helpers.WriteAlertHeader(); Cambro.Web.Helpers.WriteAlert("SendGlobalEmail...", 1); Query q = new Query(); if (Vars.DevEnv) q.TopRecords = 50; q.QueryCondition = new Q(UsrEventAttended.Columns.EventK, 25099); q.TableElement = new Join(Usr.Columns.K, UsrEventAttended.Columns.UsrK); UsrSet bs = new UsrSet(q); Event globalEvent = new Event(25099); for (int count = 0; count < bs.Count; count++) { Usr c = bs[count]; try { Mailer m = new Mailer(); m.Bulk = true; m.RedirectUrl = globalEvent.Url(); m.Subject = "SUBJECT"; m.Body = "<p>BODY</p>"; m.UsrRecipient = c; m.Send(); if (count % 10 == 0) Cambro.Web.Helpers.WriteAlert("Done " + count + "/" + bs.Count, 2); } catch(Exception ex) { Cambro.Web.Helpers.WriteAlert("Exception " + count + "/" + bs.Count + " - " + ex.ToString(), 3); } bs.Kill(count); } Cambro.Web.Helpers.WriteAlert("Done!", 3); Cambro.Web.Helpers.WriteAlertFooter(); }
public void SendSpotterInvitesAll(object o, System.EventArgs e) { Cambro.Web.Helpers.WriteAlertHeader(); Cambro.Web.Helpers.WriteAlert("Selecting spotters...", 1); Query q = new Query(); q.QueryCondition = new Q(Usr.Columns.IsSpotter, true); UsrSet bs = new UsrSet(q); Usr dsiUsr = new Usr(8); Bobs.Group spottersGroup = new Bobs.Group(3480); Bobs.Group spottersGroupUsa = new Bobs.Group(4537); GroupUsr guDsi = spottersGroup.GetGroupUsr(dsiUsr); GroupUsr guDsiUsa = spottersGroupUsa.GetGroupUsr(dsiUsr); for (int count = 0; count < bs.Count && count<1000; count++) { Usr c = bs[count]; try { GroupUsr guTarget = spottersGroup.GetGroupUsr(c); spottersGroup.Invite(c, guTarget, dsiUsr, guDsi, "Chat about being a Spotter and all things Spotting in the DontStayIn Spotters group!", false); if (c.AddressCountryK == 225) { GroupUsr guTargetUsa = spottersGroupUsa.GetGroupUsr(c); spottersGroupUsa.Invite(c, guTargetUsa, dsiUsr, guDsiUsa, "Chat about being a USA based DontStayIn Spotter in the USA Spotters group!", false); } if (count % 100 == 0) Cambro.Web.Helpers.WriteAlert("Done " + count + "/" + bs.Count, 2); } catch(Exception ex) { Cambro.Web.Helpers.WriteAlert("Exception " + count + "/" + bs.Count + " - " + ex.ToString(), 3); } bs.Kill(count); } Cambro.Web.Helpers.WriteAlert("Done!", 3); Cambro.Web.Helpers.WriteAlertFooter(); }
public void SortIsPromoter(object o, System.EventArgs e) { Cambro.Web.Helpers.WriteAlertHeader(); Cambro.Web.Helpers.WriteAlert("Selecting PromoterUsrs...", 1); Query q = new Query(); q.QueryCondition = new Q(Promoter.Columns.Status, Promoter.StatusEnum.Active); q.TableElement = new Join( new Join(Usr.Columns.K, PromoterUsr.Columns.UsrK), Promoter.Columns.K, PromoterUsr.Columns.PromoterK); UsrSet bs = new UsrSet(q); Group g = new Group(3684); //DontStayIn Promoters group try { for (int count = 0; count < bs.Count; count++) { Usr u = bs[count]; try { GroupUsr gu = u.GetGroupUsr(g.K); if (gu == null || !(gu.Status.Equals(GroupUsr.StatusEnum.Exited) || gu.Status.Equals(GroupUsr.StatusEnum.Barred))) { GroupUsr gu1 = g.ChangeUsr(false, u.K, false, false, false, false, Bobs.GroupUsr.StatusEnum.Member, u.DateTimeSignUp, false); gu1.Favourite = true; gu1.Update(); CommentAlert.Enable(u, g.K, Model.Entities.ObjectType.Group); } if (count % 10 == 0) Cambro.Web.Helpers.WriteAlert("Done " + count + "/" + bs.Count + " - " + u.NickName, 2); } catch (Exception ex) { Cambro.Web.Helpers.WriteAlert("Exception " + count + "/" + bs.Count + " - " + ex.ToString(), 3); } bs.Kill(count); } } finally { g.UpdateTotalMembers(); } Cambro.Web.Helpers.WriteAlert("Done!", 4); Cambro.Web.Helpers.WriteAlertFooter(); Response.End(); }
public static void SendUsrEmailFromOwain(string[] args) { Console.WriteLine("============"); Console.WriteLine("SendUsrEmailFromOwain"); Console.WriteLine("============"); if (args.Length == 0) { Console.WriteLine("Press any key..."); Console.ReadLine(); } //Q loadBalancer = args.Length == 2 ? new StringQueryCondition(" ([Promoter].[K] % " + int.Parse(args[1]).ToString() + " = " + ((int)(int.Parse(args[0]) - 1)).ToString() + ") ") : new Q(true); Console.WriteLine("Selecting...", 1); Query q = new Query(); q.QueryCondition = new And( new StringQueryCondition(@"Usr.K IN (4)") ); if (Vars.DevEnv) q.TopRecords = 10; UsrSet bs = new UsrSet(q); Console.WriteLine("Found " + bs.Count.ToString("#,##0") + " item(s)...", 1); List<string> emails = new List<string>(); for (int count = 0; count < bs.Count; count++) { Usr c = bs[count]; try { emails.Add(c.Email); if (count % 10 == 0) Console.WriteLine("Done " + count + "/" + bs.Count, 2); } catch (Exception ex) { Console.WriteLine("Exception " + count + "/" + bs.Count + " - " + ex.ToString(), 3); } bs.Kill(count); } Console.WriteLine("Starting to send {0} emails...", emails.Count.ToString("#,##0")); System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); client.Host = Common.Properties.GetDefaultSmtpServer(); int count1 = 0; foreach (string email in emails) { try { string body = @"Hi, Apologies for emailing you out of the blue like this, but there's something you might want to hear: You now don't need to use Facebook to log in to Don't Stay In! We've just today added the dual-login feature so you can access the site with your old password. See you online soon! p.s. If you stopped using the site for another reason, just ignore this message! -- Owain Harries Senior Account Manager DontStayIn Development Hell Ltd. 90-92 Pentonville Rd London N1 9HS "; string subject = "You now don't need to use Facebook to log in to Don't Stay In..."; //string subject = "DSI Promoter Roundup - February 2011"; string from = "*****@*****.**"; System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage(); m.Subject = subject; m.Body = body;//.Replace("\n", "\n\r"); m.From = new System.Net.Mail.MailAddress(from); if (Vars.DevEnv) m.To.Add("*****@*****.**"); else m.To.Add(email); m.IsBodyHtml = false; client.Send(m); if (count1 % 10 == 0) Console.WriteLine("Done " + count1 + "/" + bs.Count, 2); } catch (Exception ex) { Console.WriteLine("Exception " + count1 + "/" + emails.Count + " - " + ex.ToString(), 3); } count1++; } Console.WriteLine("All done!"); Console.ReadLine(); }
public static void GetRecentlyUploadedProfilePics(string[] args) { //select photok from groupphoto where groupk = 10992 and caption not like 'week%' Console.WriteLine("============"); Console.WriteLine("GetRecentlyUploadedProfilePics"); Console.WriteLine("============"); if (args.Length == 0) { Console.WriteLine("Press any key..."); Console.ReadLine(); } Q loadBalancer = args.Length == 2 ? new StringQueryCondition(" ([Usr].[K] % " + int.Parse(args[1]).ToString() + " = " + ((int)(int.Parse(args[0]) - 1)).ToString() + ") ") : new Q(true); Console.WriteLine("Selecting...", 1); Query q = new Query(); q.QueryCondition = new And( loadBalancer, new Q(Photo.Columns.EnabledDateTime, QueryOperator.GreaterThan, DateTime.Now.AddMonths(-1)) ); q.TableElement = new Join(Usr.Columns.PicPhotoK, Photo.Columns.K); UsrSet bs = new UsrSet(q); Console.WriteLine("Found " + bs.Count.ToString("#,##0") + " item(s)...", 1); for (int count = 0; count < bs.Count; count++) { Usr c = bs[count]; try { byte[] b = Storage.GetFromStore(Storage.Stores.Pix, c.Pic, "jpg"); string filename = string.Format(@"C:\2008-10-26 Profile photos\{0}.jpg", c.K.ToString()); File.WriteAllBytes(filename, b); if (count % 10 == 0) Console.WriteLine("Done " + count + "/" + bs.Count, 2); } catch (Exception ex) { Console.WriteLine("Exception " + count + "/" + bs.Count + " - " + ex.ToString(), 3); } bs.Kill(count); } Console.WriteLine("All done!"); Console.ReadLine(); }
private void Page_Load(object sender, System.EventArgs e) { Response.ContentType = "text/xml"; Response.Clear(); Response.Buffer = false; XmlTextWriter x = new XmlTextWriter(Response.OutputStream, Encoding.UTF8); x.Formatting = Formatting.Indented; x.WriteRaw("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"); string dateFormat = "yyyy-MM-ddTHH:mm:sszzz"; if (Request.QueryString[0].Equals("index")) { #region sitemapindex x.WriteStartElement("sitemapindex"); x.WriteAttributeString("xmlns", "http://www.google.com/schemas/sitemap/0.84"); if (true) { #region sitemap - countries x.WriteStartElement("sitemap"); x.WriteElementString("loc", "http://www.dontstayin.com/sitemapxml?country"); Query q = new Query(); q.QueryCondition = new And( new Q(Thread.Columns.Private, false), new Q(Thread.Columns.PrivateGroup, false), new Q(Thread.Columns.GroupPrivate, false) ); q.OrderBy = new OrderBy(Thread.Columns.LastPost, OrderBy.OrderDirection.Descending); q.TopRecords = 1; ThreadSet bobset = new ThreadSet(q); if (bobset.Count > 0) x.WriteElementString("lastmod", bobset[0].LastPost.ToString(dateFormat)); x.WriteEndElement(); //sitemap #endregion } if (true) { #region sitemap - place x.WriteStartElement("sitemap"); x.WriteElementString("loc", "http://www.dontstayin.com/sitemapxml?place"); Query q = new Query(); q.OrderBy = new OrderBy(Place.Columns.LastPost, OrderBy.OrderDirection.Descending); q.TopRecords = 1; PlaceSet bobset = new PlaceSet(q); if (bobset.Count > 0) x.WriteElementString("lastmod", bobset[0].LastPost.ToString(dateFormat)); x.WriteEndElement(); //sitemap #endregion } if (true) { #region sitemap - venue x.WriteStartElement("sitemap"); x.WriteElementString("loc", "http://www.dontstayin.com/sitemapxml?venue"); Query q = new Query(); q.OrderBy = new OrderBy(Venue.Columns.LastPost, OrderBy.OrderDirection.Descending); q.TopRecords = 1; VenueSet bobset = new VenueSet(q); if (bobset.Count > 0) x.WriteElementString("lastmod", bobset[0].LastPost.ToString(dateFormat)); x.WriteEndElement(); //sitemap #endregion } if (true) { #region sitemap - event x.WriteStartElement("sitemap"); x.WriteElementString("loc", "http://www.dontstayin.com/sitemapxml?event"); Query q = new Query(); q.OrderBy = new OrderBy(Event.Columns.LastPost, OrderBy.OrderDirection.Descending); q.TopRecords = 1; EventSet bobset = new EventSet(q); if (bobset.Count > 0) x.WriteElementString("lastmod", bobset[0].LastPost.ToString(dateFormat)); x.WriteEndElement(); //sitemap #endregion } if (true) { #region sitemap - thread x.WriteStartElement("sitemap"); x.WriteElementString("loc", "http://www.dontstayin.com/sitemapxml?thread"); Query q = new Query(); q.QueryCondition = new And( new Q(Thread.Columns.Private, false), new Q(Thread.Columns.PrivateGroup, false), new Q(Thread.Columns.GroupPrivate, false) ); q.OrderBy = new OrderBy(Thread.Columns.LastPost, OrderBy.OrderDirection.Descending); q.TopRecords = 1; ThreadSet bobset = new ThreadSet(q); if (bobset.Count > 0) x.WriteElementString("lastmod", bobset[0].LastPost.ToString(dateFormat)); x.WriteEndElement(); //sitemap #endregion } if (true) { #region sitemap - photo x.WriteStartElement("sitemap"); x.WriteElementString("loc", "http://www.dontstayin.com/sitemapxml?photo"); Query q = new Query(); q.QueryCondition = Photo.EnabledQueryCondition; q.OrderBy = new OrderBy(Photo.Columns.EnabledDateTime, OrderBy.OrderDirection.Descending); q.TopRecords = 1; PhotoSet bobset = new PhotoSet(q); if (bobset.Count > 0) x.WriteElementString("lastmod", bobset[0].EnabledDateTime.ToString(dateFormat)); x.WriteEndElement(); //sitemap #endregion } if (true) { #region sitemap - usr x.WriteStartElement("sitemap"); x.WriteElementString("loc", "http://www.dontstayin.com/sitemapxml?usr"); x.WriteEndElement(); //sitemap #endregion } if (true) { #region sitemap - article x.WriteStartElement("sitemap"); x.WriteElementString("loc", "http://www.dontstayin.com/sitemapxml?article"); Query q = new Query(); q.QueryCondition = Article.EnabledQueryCondition; q.OrderBy = new OrderBy(Article.Columns.EnabledDateTime, OrderBy.OrderDirection.Descending); q.TopRecords = 1; ArticleSet bobset = new ArticleSet(q); if (bobset.Count > 0) x.WriteElementString("lastmod", bobset[0].EnabledDateTime.ToString(dateFormat)); x.WriteEndElement(); //sitemap #endregion } if (true) { #region sitemap - comp x.WriteStartElement("sitemap"); x.WriteElementString("loc", "http://www.dontstayin.com/sitemapxml?comp"); x.WriteEndElement(); //sitemap #endregion } if (true) { #region sitemap - brand x.WriteStartElement("sitemap"); x.WriteElementString("loc", "http://www.dontstayin.com/sitemapxml?brand"); Query q = new Query(); q.OrderBy = new OrderBy(Brand.Columns.LastPost, OrderBy.OrderDirection.Descending); q.TopRecords = 1; BrandSet bobset = new BrandSet(q); if (bobset.Count > 0) x.WriteElementString("lastmod", bobset[0].LastPost.ToString(dateFormat)); x.WriteEndElement(); //sitemap #endregion } if (true) { #region sitemap - group x.WriteStartElement("sitemap"); x.WriteElementString("loc", "http://www.dontstayin.com/sitemapxml?group"); Query q = new Query(); q.QueryCondition = new And( new Q(Group.Columns.BrandK, 0), new Q(Group.Columns.PrivateGroupPage, false)); q.OrderBy = new OrderBy(Group.Columns.LastPost, OrderBy.OrderDirection.Descending); q.TopRecords = 1; GroupSet bobset = new GroupSet(q); if (bobset.Count > 0) x.WriteElementString("lastmod", bobset[0].LastPost.Value.ToString(dateFormat)); x.WriteEndElement(); //sitemap #endregion } x.WriteEndElement(); //sitemapindex #endregion } else { #region urlset x.WriteStartElement("urlset"); x.WriteAttributeString("xmlns", "http://www.google.com/schemas/sitemap/0.84"); #region Countries if (Request.QueryString[0].Equals("country")) { if (true) { #region url x.WriteStartElement("url"); x.WriteElementString("loc", "http://www.dontstayin.com/"); Query q = new Query(); q.QueryCondition = new And( new Q(Thread.Columns.Private, false), new Q(Thread.Columns.PrivateGroup, false), new Q(Thread.Columns.GroupPrivate, false) ); q.OrderBy = new OrderBy(Thread.Columns.LastPost, OrderBy.OrderDirection.Descending); q.TopRecords = 1; ThreadSet bobset = new ThreadSet(q); if (bobset.Count > 0) x.WriteElementString("lastmod", bobset[0].LastPost.ToString(dateFormat)); x.WriteElementString("changefreq", "hourly"); x.WriteEndElement(); //url #endregion } if (true) { Query q = new Query(); q.QueryCondition = new Q(Country.Columns.TotalEvents, QueryOperator.GreaterThan, 0); q.OrderBy = new OrderBy(Country.Columns.TotalEvents, OrderBy.OrderDirection.Descending); q.Columns = new ColumnSet(Country.LinkColumns, Country.Columns.TotalEvents); if (Vars.DevEnv) q.TopRecords = 10; CountrySet bobset = new CountrySet(q); for (int i = 0; i < bobset.Count; i++) { Country p = bobset[i]; #region url x.WriteStartElement("url"); x.WriteElementString("loc", "http://www.dontstayin.com" + p.Url()); if (p.TotalEvents > 100) x.WriteElementString("changefreq", "hourly"); else if (p.TotalEvents > 20) x.WriteElementString("changefreq", "daily"); else if (p.TotalEvents > 10) x.WriteElementString("changefreq", "weekly"); else x.WriteElementString("changefreq", "monthly"); x.WriteEndElement(); //url #endregion bobset.Kill(i); } } } #endregion #region Places if (Request.QueryString[0].Equals("place")) { Query q = new Query(); q.QueryCondition = new Or( new Q(Place.Columns.TotalComments, QueryOperator.GreaterThan, 0), new Q(Place.Columns.TotalEvents, QueryOperator.GreaterThan, 0)); q.OrderBy = new OrderBy(Place.Columns.TotalComments, OrderBy.OrderDirection.Descending); q.Columns = new ColumnSet(Place.LinkColumns, Place.Columns.LastPost); if (Vars.DevEnv) q.TopRecords = 10; else q.TopRecords = 40000; PlaceSet bobset = new PlaceSet(q); for (int i = 0; i < bobset.Count; i++) { Place p = bobset[i]; #region url x.WriteStartElement("url"); x.WriteElementString("loc", "http://www.dontstayin.com" + p.Url()); if (p.LastPost != DateTime.MinValue) { x.WriteElementString("lastmod", p.LastPost.ToString(dateFormat)); TimeSpan ts = DateTime.Now.Subtract(p.LastPost); if (ts.TotalHours < 24) x.WriteElementString("changefreq", "hourly"); else if (ts.TotalDays < 7) x.WriteElementString("changefreq", "daily"); else if (ts.TotalDays < 30) x.WriteElementString("changefreq", "weekly"); else x.WriteElementString("changefreq", "monthly"); } else x.WriteElementString("changefreq", "monthly"); x.WriteEndElement(); //url #endregion bobset.Kill(i); } } #endregion #region Venues if (Request.QueryString[0].Equals("venue")) { Query q = new Query(); q.OrderBy = new OrderBy(Venue.Columns.TotalEvents, OrderBy.OrderDirection.Descending); q.Columns = new ColumnSet(Venue.LinkColumns, Venue.Columns.LastPost, Venue.Columns.TotalEvents); if (Vars.DevEnv) q.TopRecords = 10; else q.TopRecords = 40000; VenueSet bobset = new VenueSet(q); for (int i = 0; i < bobset.Count; i++) { Venue v = bobset[i]; #region url x.WriteStartElement("url"); x.WriteElementString("loc", "http://www.dontstayin.com" + v.Url()); if (v.LastPost != DateTime.MinValue) { x.WriteElementString("lastmod", v.LastPost.ToString(dateFormat)); TimeSpan ts = DateTime.Now.Subtract(v.LastPost); if (ts.TotalHours < 24) x.WriteElementString("changefreq", "hourly"); else if (ts.TotalDays < 7) x.WriteElementString("changefreq", "daily"); else if (ts.TotalDays < 30) x.WriteElementString("changefreq", "weekly"); else x.WriteElementString("changefreq", "monthly"); } else if (v.TotalEvents > 10) x.WriteElementString("changefreq", "weekly"); else x.WriteElementString("changefreq", "monthly"); x.WriteEndElement(); //url #endregion bobset.Kill(i); } } #endregion #region Events if (Request.QueryString[0].Equals("event")) { Query q = new Query(); q.OrderBy = new OrderBy(Event.Columns.LastPost, OrderBy.OrderDirection.Descending); q.Columns = new ColumnSet(Event.LinkColumns, Event.Columns.LastPost, Event.Columns.DateTime); if (Vars.DevEnv) q.TopRecords = 10; else q.TopRecords = 40000; EventSet bobset = new EventSet(q); for (int i = 0; i < bobset.Count; i++) { Event ev = bobset[i]; #region url x.WriteStartElement("url"); x.WriteElementString("loc", "http://www.dontstayin.com" + ev.Url()); if (ev.LastPost != DateTime.MinValue) { x.WriteElementString("lastmod", ev.LastPost.ToString(dateFormat)); TimeSpan ts = DateTime.Now.Subtract(ev.LastPost); if (ts.TotalHours < 24) x.WriteElementString("changefreq", "hourly"); else if (ts.TotalDays < 7) x.WriteElementString("changefreq", "daily"); else if (ts.TotalDays < 30) x.WriteElementString("changefreq", "weekly"); else x.WriteElementString("changefreq", "monthly"); } else x.WriteElementString("changefreq", "monthly"); x.WriteEndElement(); //url #endregion bobset.Kill(i); } } #endregion #region Threads if (Request.QueryString[0].Equals("thread")) { Query q = new Query(); q.QueryCondition = new And( new Q(Thread.Columns.Private, false), new Q(Thread.Columns.PrivateGroup, false), new Q(Thread.Columns.GroupPrivate, false) ); q.Columns = new ColumnSet(Thread.Columns.K, Thread.Columns.UrlFragment, Thread.Columns.TotalComments, Thread.Columns.LastPost); q.OrderBy = new OrderBy(Thread.Columns.LastPost, OrderBy.OrderDirection.Descending); if (Vars.DevEnv) q.TopRecords = 10; else q.TopRecords = 40000; ThreadSet bobset = new ThreadSet(q); for (int i = 0; i < bobset.Count; i++) { Thread t = bobset[i]; #region url x.WriteStartElement("url"); if (t.LastPage == 1) x.WriteElementString("loc", "http://www.dontstayin.com" + t.Url()); else x.WriteElementString("loc", "http://www.dontstayin.com" + t.Url("c", t.LastPage.ToString())); x.WriteElementString("lastmod", t.LastPost.ToString(dateFormat)); TimeSpan ts = DateTime.Now.Subtract(t.LastPost); if (ts.TotalHours < 24) x.WriteElementString("changefreq", "hourly"); else if (ts.TotalDays < 7) x.WriteElementString("changefreq", "daily"); else if (ts.TotalDays < 30) x.WriteElementString("changefreq", "weekly"); else x.WriteElementString("changefreq", "monthly"); x.WriteEndElement(); //url #endregion bobset.Kill(i); } } #endregion #region Photos if (Request.QueryString[0].Equals("photo")) { Query q = new Query(); q.QueryCondition = Photo.EnabledQueryCondition; q.Columns = new ColumnSet(Photo.Columns.K, Photo.Columns.UrlFragment, Photo.Columns.EventK, Photo.Columns.ArticleK); q.OrderBy = new OrderBy(Photo.Columns.EnabledDateTime, OrderBy.OrderDirection.Descending); if (Vars.DevEnv) q.TopRecords = 10; else q.TopRecords = 50000; PhotoSet bobset = new PhotoSet(q); for (int i = 0; i < bobset.Count; i++) { Photo p = bobset[i]; #region url x.WriteStartElement("url"); x.WriteElementString("loc", "http://www.dontstayin.com" + p.Url()); x.WriteEndElement(); //url #endregion bobset.Kill(i); } } #endregion #region Usrs if (Request.QueryString[0].Equals("usr")) { Query q = new Query(); q.QueryCondition = new And( new Q(Usr.Columns.IsSkeleton, false), new Q(Usr.Columns.IsEmailVerified, true), new Or( new Q(Usr.Columns.Pic, QueryOperator.NotEqualTo, Guid.Empty), new Q(Usr.Columns.CommentCount, QueryOperator.NotEqualTo, 0) ) ); q.Columns = new ColumnSet(Usr.Columns.NickName); q.OrderBy = new OrderBy(Usr.Columns.DateTimeLastPageRequest, OrderBy.OrderDirection.Descending); if (Vars.DevEnv) q.TopRecords = 10; else q.TopRecords = 50000; UsrSet bobset = new UsrSet(q); for (int i = 0; i < bobset.Count; i++) { Usr u = bobset[i]; #region url x.WriteStartElement("url"); x.WriteElementString("loc", "http://www.dontstayin.com" + u.Url()); x.WriteEndElement(); //url #endregion bobset.Kill(i); } } #endregion #region Articles if (Request.QueryString[0].Equals("article")) { Query q = new Query(); q.QueryCondition = Article.EnabledQueryCondition; q.Columns = new ColumnSet(Article.Columns.UrlFragment, Article.Columns.ParentObjectK, Article.Columns.ParentObjectType, Article.Columns.K); q.OrderBy = new OrderBy(Article.Columns.EnabledDateTime, OrderBy.OrderDirection.Descending); if (Vars.DevEnv) q.TopRecords = 10; else q.TopRecords = 50000; ArticleSet bobset = new ArticleSet(q); for (int i = 0; i < bobset.Count; i++) { Article a = bobset[i]; #region url x.WriteStartElement("url"); x.WriteElementString("loc", "http://www.dontstayin.com" + a.Url()); x.WriteEndElement(); //url #endregion bobset.Kill(i); } } #endregion #region Competitions if (Request.QueryString[0].Equals("comp")) { Query q = new Query(); q.QueryCondition = new Q(Comp.Columns.Status, Comp.StatusEnum.Enabled); q.Columns = new ColumnSet(Comp.Columns.K); q.OrderBy = new OrderBy(Comp.Columns.DateTimeClose, OrderBy.OrderDirection.Descending); if (Vars.DevEnv) q.TopRecords = 10; else q.TopRecords = 50000; CompSet bobset = new CompSet(q); for (int i = 0; i < bobset.Count; i++) { Comp c = bobset[i]; #region url x.WriteStartElement("url"); x.WriteElementString("loc", "http://www.dontstayin.com" + c.Url()); x.WriteEndElement(); //url #endregion bobset.Kill(i); } } #endregion #region Brands if (Request.QueryString[0].Equals("brand")) { Query q = new Query(); q.OrderBy = new OrderBy(Brand.Columns.LastPost, OrderBy.OrderDirection.Descending); q.Columns = new ColumnSet(Brand.LinkColumns, Brand.Columns.LastPost); if (Vars.DevEnv) q.TopRecords = 10; else q.TopRecords = 40000; BrandSet bobset = new BrandSet(q); for (int i = 0; i < bobset.Count; i++) { Brand b = bobset[i]; #region url x.WriteStartElement("url"); x.WriteElementString("loc", "http://www.dontstayin.com" + b.Url()); if (b.LastPost > DateTime.MinValue) { x.WriteElementString("lastmod", b.LastPost.ToString(dateFormat)); TimeSpan ts = DateTime.Now.Subtract(b.LastPost); if (ts.TotalHours < 24) x.WriteElementString("changefreq", "hourly"); else if (ts.TotalDays < 7) x.WriteElementString("changefreq", "daily"); else if (ts.TotalDays < 30) x.WriteElementString("changefreq", "weekly"); else x.WriteElementString("changefreq", "monthly"); } else x.WriteElementString("changefreq", "monthly"); x.WriteEndElement(); //url #endregion bobset.Kill(i); } } #endregion #region Groups if (Request.QueryString[0].Equals("group")) { Query q = new Query(); q.QueryCondition = new And( new Q(Group.Columns.BrandK, 0), new Q(Group.Columns.PrivateGroupPage, false)); q.OrderBy = new OrderBy(Group.Columns.LastPost, OrderBy.OrderDirection.Descending); q.Columns = new ColumnSet(Group.Columns.BrandK, Group.Columns.UrlName, Group.Columns.LastPost); if (Vars.DevEnv) q.TopRecords = 10; else q.TopRecords = 40000; GroupSet bobset = new GroupSet(q); for (int i = 0; i < bobset.Count; i++) { Group g = bobset[i]; #region url x.WriteStartElement("url"); x.WriteElementString("loc", "http://www.dontstayin.com" + g.Url()); if (g.LastPost.HasValue && g.LastPost > DateTime.MinValue) { x.WriteElementString("lastmod", g.LastPost.Value.ToString(dateFormat)); TimeSpan ts = DateTime.Now.Subtract(g.LastPost.Value); if (ts.TotalHours < 24) x.WriteElementString("changefreq", "hourly"); else if (ts.TotalDays < 7) x.WriteElementString("changefreq", "daily"); else if (ts.TotalDays < 30) x.WriteElementString("changefreq", "weekly"); else x.WriteElementString("changefreq", "monthly"); } else x.WriteElementString("changefreq", "monthly"); x.WriteEndElement(); //url #endregion bobset.Kill(i); } } #endregion x.WriteEndElement(); //urlset #endregion } x.Flush(); x.Close(); Response.End(); }
public void SendMail(UsrSet us, bool liveSend, int startUsrK) { Console.WriteLine("Flyer.SendMail v3 - with IsEmailBroken flag..."); if (liveSend && this.IsReadyToSend && !this.IsSending) { if (this.Sends == 0) this.SendDateTime = DateTime.Now; this.IsSending = true; this.Update(); } string body = ""; if (!IsHtml) { body = string.Format(@" <div style=""padding-top:10px;padding-bottom:10px;{0}""><center> <a href=""{1}"">Click here if you can't see the e-flyer below</a><br> <a href=""{2}""><img src=""{3}"" border=""0"" width=""{4}"" height=""{5}"" vspace=""10""></a><br>", (this.BackgroundColor == "") ? "" : @"background-color:#" + this.BackgroundColor + ";", this.PopupUrl, this.LinkTargetUrlTrackingClicks, this.ImgSrcTrackingViews, this.Misc.Width, this.Misc.Height); } //string unsubscribeLink = "/popup/unsubscribeeflyers/usrk-" "/flyerk-" + this.K; Random r = new Random(); const int intervalToUpdateSends = 100; //int startIndex = usrList.FindIndex(u => u.K >= startUsrK); int skipped = 0; for (int i = 0; i < us.Count; i++) { try { Usr u = us[i]; //string unsubscribeLinkNoDomain = "http://" + Vars.DomainName + "/popup/unsubscribeeflyers/usrk-" + u.K.ToString() + "/loginstring-" + u.LoginString.ToLower() + "/flyerk-" + this.K; //string unsubscribeLinkWithDomain = "http://" + Vars.DomainName + "/popup/unsubscribeeflyers/usrk-" + u.K.ToString() + "/loginstring-" + u.LoginString.ToLower() + "/flyerk-" + this.K; string unsubscribeLinkWithDomain = u.LoginAndTransfer("/popup/unsubscribeeflyers/flyerk-" + this.K); if (u.K > startUsrK) { if (liveSend && i % intervalToUpdateSends == 0) { //this.Update(); // check that we're still good to send, not been paused // this'll be cached until anything changes if (new Flyer(this.K).IsReadyToSend == false) { this.IsSending = false; this.Update(); return; } } System.Net.Mail.SmtpClient c = new System.Net.Mail.SmtpClient(); c.Host = Common.Properties.GetDefaultSmtpServer(r); System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage(); m.IsBodyHtml = true; if (!IsHtml) { m.Body = body + @" <a href=""" + unsubscribeLinkWithDomain + @""">Click here to unsubscribe from DontStayIn e-flyers</a> </center></div> "; } else { if (this.TextAlternative.Length > 0) { System.Net.Mail.AlternateView alt = System.Net.Mail.AlternateView.CreateAlternateViewFromString(this.TextAlternative + @" Click here to unsubscribe from DontStayIn e-flyers: " + unsubscribeLinkWithDomain, null, "text/plain"); m.AlternateViews.Add(alt); System.Net.Mail.AlternateView html = System.Net.Mail.AlternateView.CreateAlternateViewFromString( @"<p style=""margin:5px;padding:5px;background-color:#ffffff;""><center><a href=""" + unsubscribeLinkWithDomain + @""">Click here to unsubscribe from DontStayIn e-flyers</a><img src=""" + this.ImgSrcTrackingViews + @""" width=""1"" height=""1"" border=""0"" /></center></p>" + this.Html, null, "text/html"); m.AlternateViews.Add(html); } else { m.Body = @"<p style=""margin:5px;padding:5px;background-color:#ffffff;""><center><a href=""" + unsubscribeLinkWithDomain + @""">Click here to unsubscribe from DontStayIn e-flyers</a><img src=""" + this.ImgSrcTrackingViews + @""" width=""1"" height=""1"" border=""0"" /></center></p>" + this.Html; } } m.Subject = this.Subject; string To = u.Email; m.From = (this.MailFromDisplayName.Trim().Length > 0) ? new System.Net.Mail.MailAddress(Vars.AdminReplyAddress, this.MailFromDisplayName.Trim()) : new System.Net.Mail.MailAddress(Vars.AdminReplyAddress); //System.Threading.Thread.Sleep(50); if (!u.IsEmailBroken) { if (Vars.DevEnv) { m.Subject += " (to:" + To + ") (" + DateTime.Now.ToString() + ")"; m.To.Add("*****@*****.**"); if (u.K == 8) m.To.Add(To); } else { m.To.Add(To); } bool done = false; do { try { c.Send(m); done = true; u.RegisterMailSentForBounceTracking(); } catch (Exception ex) { if (ex.Message.Contains("Insufficient system storage")) { Update up = new Update(); up.Changes.Add(new Assign.Increment(Flyer.Columns.MailServerRetries)); up.Changes.Add(new Assign(Flyer.Columns.MailServerLastRetry, DateTime.Now)); up.Changes.Add(new Assign(Flyer.Columns.DateTimeLastMessageSent, DateTime.Now)); up.Table = TablesEnum.Flyer; up.Where = new Q(Flyer.Columns.K, this.K); up.Run(); Console.Error.WriteLine("UsrK: {0}, eFlyerK: {1}, retrying after 5 sec.", us[i].K, this.K); System.Threading.Thread.Sleep(5000); } else throw ex; } } while (!done); if (liveSend) { Update up = new Update(); up.Changes.Add(new Assign.Increment(Flyer.Columns.Sends)); up.Changes.Add(new Assign(Flyer.Columns.PausedAtUsrK, u.K)); up.Changes.Add(new Assign(Flyer.Columns.DateTimeLastMessageSent, DateTime.Now)); up.Table = TablesEnum.Flyer; up.Where = new Q(Flyer.Columns.K, this.K); up.Run(); } } else { if (liveSend) { Update up = new Update(); up.Changes.Add(new Assign.Increment(Flyer.Columns.Broken)); up.Changes.Add(new Assign(Flyer.Columns.DateTimeLastMessageSent, DateTime.Now)); up.Table = TablesEnum.Flyer; up.Where = new Q(Flyer.Columns.K, this.K); up.Run(); } } } if (i % 10 == 0) Console.Out.WriteLine("Done " + i + "/" + us.Count); us.Kill(i); } catch (Exception ex) { Console.Error.WriteLine("UsrK: {0}, eFlyerK: {1}, Exception: {2}", us[i].K, this.K, ex.Message); if (liveSend) { Update up = new Update(); up.Changes.Add(new Assign.Increment(Flyer.Columns.Exceptions)); up.Changes.Add(new Assign(Flyer.Columns.DateTimeLastMessageSent, DateTime.Now)); up.Table = TablesEnum.Flyer; up.Where = new Q(Flyer.Columns.K, this.K); up.Run(); } } } if (liveSend) { //this.Sends += (us.Count - skipped) % intervalToUpdateSends; this.IsSending = false; this.HasFinishedSending = true; this.Update(); } }