Beispiel #1
0
		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();
		}
Beispiel #2
0
		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();
		}
Beispiel #3
0
		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();
		}
Beispiel #4
0
		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();
		}
Beispiel #5
0
		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();

		}
Beispiel #9
0
		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();
			}
		}