コード例 #1
0
		public void ForumInfo_Load(object o, System.EventArgs e)
		{
			if (!CurrentForumCheck)
				return;

			PanelThreadDescTypeNone.Visible = ThreadParentType.Equals(Model.Entities.ObjectType.None);
			PanelThreadDescTypeEvent.Visible = ThreadParentType.Equals(Model.Entities.ObjectType.Event);
			PanelThreadDescTypeVenue.Visible = ThreadParentType.Equals(Model.Entities.ObjectType.Venue);
			PanelThreadDescTypePlace.Visible = ThreadParentType.Equals(Model.Entities.ObjectType.Place);
			PanelThreadDescTypeCountry.Visible = ThreadParentType.Equals(Model.Entities.ObjectType.Country);
			PanelThreadDescTypeArticle.Visible = ThreadParentType.Equals(Model.Entities.ObjectType.Article);
			PanelThreadDescTypeBrand.Visible = ThreadParentType.Equals(Model.Entities.ObjectType.Brand);
			PanelThreadDescTypeGroup.Visible = ThreadParentType.Equals(Model.Entities.ObjectType.Group);
			PanelThreadDescRelatedPanel.Visible = false;
			PanelThreadDescGroupBrandPanel.Visible = false;
			PanelThreadDescBrandPanel.Visible = false;
			FavouriteGroupPanel.Visible = (ThreadParentType.Equals(Model.Entities.ObjectType.Group) && CurrentGroupUsr != null && CurrentGroupUsr.IsMember);

			SetPageTitle("General discussions");

			if (ThreadParentType.Equals(Model.Entities.ObjectType.None))
			{
				ThreadDescWorldwideHomeCountryLink.InnerText = ThreadDescWorldwideHomeCountryLink.InnerText.Replace("???", Country.Current.FriendlyName);
				ThreadDescWorldwideHomeCountryLink.HRef = Country.Current.UrlDiscussion();
			}
			if (ThreadParentType.Equals(Model.Entities.ObjectType.Event))
			{
				Event ev = new Event(ObjectK);
				ThreadDescEventEventLink.InnerText = ev.Name;
				ThreadDescEventEventLink.HRef = ev.Url();

				ThreadDescEventVenueLink.InnerText = ev.Venue.Name;
				ThreadDescEventVenueLink.HRef = ev.Venue.Url();

				ThreadDescEventPlaceLink.InnerText = ev.Venue.Place.Name;
				ThreadDescEventPlaceLink.HRef = ev.Venue.Place.Url();

				ThreadDescEventDateLabel.Text = ev.FriendlyDate(false);

				PanelThreadDescRelatedPanel.Visible = ev.Brands.Count > 0;
				string brandsHtml = "";
				for (int i = 0; i < ev.Brands.Count; i++)
				{
					brandsHtml += (i == 0 ? "" : (i == (ev.Brands.Count - 1) ? " or " : ", ")) + "the <b><a href=\"" + ev.Brands[i].UrlDiscussion() + "\">" + ev.Brands[i].Name + " forum</a></b>";
				}
				PanelThreadDescRelatedPh.Controls.Add(new LiteralControl(brandsHtml));

				SetPageTitle(ev.Name + " discussions");


			}
			if (ThreadParentType.Equals(Model.Entities.ObjectType.Venue))
			{
				Venue v = new Venue(ObjectK);

				ThreadDescVenueVenueLink.InnerText = v.Name;
				ThreadDescVenueVenueLink.HRef = v.Url();

				ThreadDescVenuePlaceLink.InnerText = v.Place.Name;
				ThreadDescVenuePlaceLink.HRef = v.Place.Url();
				SetPageTitle(v.Name + " discussions");
			}
			if (ThreadParentType.Equals(Model.Entities.ObjectType.Place))
			{
				Place t = new Place(ObjectK);

				ThreadDescPlacePlaceLink.InnerText = t.Name;
				ThreadDescPlacePlaceLink.HRef = t.Url();
				SetPageTitle(t.Name + " discussions");
			}
			if (ThreadParentType.Equals(Model.Entities.ObjectType.Country))
			{
				Country c = new Country(ObjectK);

				ThreadDescCountryLabel.Text = c.FriendlyName;
				ThreadDescCountryLink.HRef = c.Url();
				SetPageTitle(c.FriendlyName + " discussions");
			}
			if (ThreadParentType.Equals(Model.Entities.ObjectType.Article))
			{
				Article a = new Article(ObjectK);
				ThreadDescArticleArticleLink.InnerText = a.Title;
				ThreadDescArticleArticleLink.HRef = a.Url();
				SetPageTitle(a.Title + " discussions");
			}
			if (ThreadParentType.Equals(Model.Entities.ObjectType.Brand))
			{
				Brand b = new Brand(ObjectK);
				ThreadDescBrandBrandLink.InnerText = b.Name;
				ThreadDescBrandBrandLink.HRef = b.Url();
				SetPageTitle(b.Name + " discussions");
				if (b.Group.TotalComments > 0)
				{
					PanelThreadDescBrandPanel.Visible = true;
					PanelThreadDescBrandGroupChatAnchor.InnerText = b.Group.FriendlyName + " group chat";
					PanelThreadDescBrandGroupChatAnchor.HRef = b.Group.UrlDiscussion();
					PanelThreadDescBrandGroupChatCommentsLabel.Text = b.Group.TotalComments.ToString("#,##0") + " comment" + (b.Group.TotalComments == 1 ? "" : "s");
				}
			}
			if (ThreadParentType.Equals(Model.Entities.ObjectType.Group))
			{
				ThreadDescGroupGroupLink.InnerText = CurrentGroup.FriendlyName + " group";
				ThreadDescGroupGroupLink.HRef = CurrentGroup.Url();
				SetPageTitle(CurrentGroup.FriendlyName + " discussions");
				if (CurrentGroup.BrandK > 0)
				{
					PanelThreadDescGroupBrandPanel.Visible = true;
					PanelThreadDescGroupBrandAnchor.HRef = CurrentGroup.Brand.UrlDiscussion();
					PanelThreadDescGroupBrandAnchor.InnerText = CurrentGroup.Brand.Name + " public chat";
					PanelThreadDescGroupBrandCommentsLabel.Text = CurrentGroup.Brand.TotalComments.ToString("#,##0") + " comment" + (CurrentGroup.Brand.TotalComments == 1 ? "" : "s");
				}
			}
		}
コード例 #2
0
ファイル: Utility.ascx.cs プロジェクト: davelondon/dontstayin
		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();
		}
コード例 #3
0
ファイル: Gallery.cs プロジェクト: davelondon/dontstayin
		public static void DailySendNewGalleryEmails()
		{
			DateTime StartDateTime = DateTime.Now;
			int UsrCount = 0;
			int FailCount = 0;
			try
			{
				Query q = new Query();
				if (Vars.DevEnv)
					q.TopRecords=100;
				q.TableElement = new TableElement(TablesEnum.Gallery);
				q.TableElement = new Join(
					q.TableElement,
					new TableElement(TablesEnum.UsrEventAttended),
					QueryJoinType.Inner,
					new And(
						new Q(Gallery.Columns.EventK, UsrEventAttended.Columns.EventK, true),
						new Q(UsrEventAttended.Columns.SendUpdate, true)
					)
				);
				q.TableElement = new Join(
					q.TableElement,
					new TableElement(new Column(UsrEventAttended.Columns.UsrK, Usr.Columns.K)),
					QueryJoinType.Inner,
					new And(
						new Q(UsrEventAttended.Columns.UsrK, new Column(UsrEventAttended.Columns.UsrK, Usr.Columns.K), true),
						new Q(new Column(UsrEventAttended.Columns.UsrK, Usr.Columns.IsSkeleton),false),
						new Q(new Column(UsrEventAttended.Columns.UsrK, Usr.Columns.IsEmailVerified),true)
					)
				);
				q.TableElement = new Join(
					q.TableElement,
					new TableElement(TablesEnum.Event),
					QueryJoinType.Inner,
					new Q(Gallery.Columns.EventK, Event.Columns.K, true)
					);
				q.TableElement = new Join(
					q.TableElement,
					new TableElement(TablesEnum.GalleryUsr),
					QueryJoinType.Left,
					new And(
						new Q(Gallery.Columns.K, GalleryUsr.Columns.GalleryK, true),
						new Q(UsrEventAttended.Columns.UsrK, GalleryUsr.Columns.UsrK, true)
					)
				);
				q.TableElement = new Join(
					q.TableElement,
					new TableElement(TablesEnum.Usr),
					QueryJoinType.Inner,
					new Q(Gallery.Columns.OwnerUsrK, Usr.Columns.K, true)
					);
				q.TableElement = new Join(
					q.TableElement,
					new TableElement(TablesEnum.Photo),
					QueryJoinType.Left,
					new Q(Gallery.Columns.MainPhotoK, Photo.Columns.K, true)
					);
				q.Columns = new ColumnSet(
						Gallery.Columns.K,
						Gallery.Columns.Name,
						Gallery.Columns.UrlFragment,
						Gallery.Columns.ArticleK,
						Gallery.Columns.MainPhotoK,
						Gallery.Columns.LivePhotos,
						Gallery.Columns.CreateDateTime, 
						Gallery.Columns.EventK, 
						Gallery.Columns.OwnerUsrK,
						Photo.Columns.K,
						Photo.Columns.Icon,
						Photo.Columns.ContentDisabled,
						Photo.Columns.Status,
						Usr.LinkColumns,
						UsrEventAttended.Columns.UsrK
					);
				int daysPast = -3;
				if (Vars.DevEnv)
					daysPast = -30;
				q.QueryCondition=new And(
					new Q(Gallery.Columns.LastLiveDateTime,QueryOperator.GreaterThan,DateTime.Now.AddDays(daysPast)),
					Gallery.ShowOnSiteQ,
					new Or(
						new Q(GalleryUsr.Columns.ViewPhotosLatest,QueryOperator.IsNull,null),
						new Q(Gallery.Columns.LivePhotos,QueryOperator.GreaterThan,GalleryUsr.Columns.ViewPhotosLatest,true)
					)
				);
				q.OrderBy=new OrderBy(
					new OrderBy(UsrEventAttended.Columns.UsrK),
					new OrderBy(Event.Columns.DateTime, OrderBy.OrderDirection.Descending),
					new OrderBy(Event.Columns.K),
					new OrderBy(Gallery.Columns.LivePhotos, OrderBy.OrderDirection.Descending),
					new OrderBy(Gallery.Columns.K)
				);
				GallerySet gs = new GallerySet(q);
				Usr CurrentUsr = null;
				Event CurrentEvent = null;
				Mailer CurrentMail = null;
				int RowCount = 0;
				int CurrentGalleryCount = 0;
				for (int count=0; count<gs.Count; count++)
				{
					try
					{
						Gallery CurrentGallery = gs[count];

						if (CurrentUsr==null || CurrentGallery.JoinedUsrEventAttend.UsrK!=CurrentUsr.K)
						{
							if (CurrentMail!=null)
							{
								Console.WriteLine(CurrentUsr.Email+" - "+CurrentGalleryCount.ToString()+", IsSkeleton="+CurrentUsr.IsSkeleton+", IsEmailVerified="+CurrentUsr.IsEmailVerified);
								CurrentGalleryCount=0;

								CurrentMail.Body+="</tr></table>";
								CurrentMail.Send();
							}

							CurrentEvent = null;
							CurrentUsr = new Usr(CurrentGallery.JoinedUsrEventAttend.UsrK);
							UsrCount++;
							
					
							CurrentMail = new Mailer();
							CurrentMail.Subject="New DontStayIn galleries "+DateTime.Today.ToString("ddddd dd MMMM yyyy");
							CurrentMail.UsrRecipient = CurrentUsr;
							CurrentMail.Body="<p>Here are some galleries you might like to check out:</p>";
							CurrentMail.Bulk=true;

						}
						if (CurrentEvent==null || CurrentGallery.EventK!=CurrentEvent.K)
						{
							if (CurrentEvent!=null)
							{
								CurrentMail.Body+="</tr></table>";
							}
							CurrentEvent = new Event(CurrentGallery.EventK);
							CurrentMail.Body+="<p style=\"margin:15px 0px 1px 0px;\"><center><a href=\"[LOGIN("+CurrentEvent.Url()+")]\" style=\"line-height:21px;font-size:18px;font-weight:bold;\">"+CurrentEvent.Name+"</a></center></p>";
							CurrentMail.Body+="<div style=\"margin:0px 0px 3px 0px;\"><center><small><a href=\"[LOGIN("+CurrentEvent.Venue.Url()+")]\">"+CurrentEvent.Venue.Name+"</a>, "+CurrentEvent.FriendlyDate(false)+", <a href=\"[LOGIN("+CurrentEvent.Url("ignore","")+")]\">click to ignore new galleries</a></small></center></div>";
							RowCount = 0;
							CurrentMail.Body+="<table cellspacing=\"0\" cellpadding=\"7\" width=\"100%\" style=\"margin:0px 0px 3px 0px;\"><tr>";
						}
						if (RowCount==3)
						{
							RowCount = 0;
							CurrentMail.Body+="</tr><tr>";
						}
						CurrentMail.Body += "<td align=\"center\" valign=\"top\" width=\"33%\"><a href=\"[LOGIN(" + CurrentGallery.Url() + ")]\"><img src=\"" + CurrentGallery.PicPathAbsolute + "\" width=\"100\" height=\"100\" class=\"BorderBlack All\" border=\"0\"><div style=\"padding:5px 0px 0px 0px;\">" + CurrentGallery.NameSafe + "</div></a><div style=\"padding:5px 0px 0px 0px;\"><small>" + CurrentGallery.LivePhotos.ToString("#,##0") + " photo" + (CurrentGallery.LivePhotos == 1 ? "" : "s") + ". Added by <a href=\"[LOGIN(" + CurrentGallery.Owner.Url() + ")]\">" + CurrentGallery.Owner.NickName + "</a></small></div></td>";
						RowCount++;
						CurrentGalleryCount++;
					}
					catch
					{
						FailCount++;
						CurrentUsr = null;
						CurrentEvent = null;
						CurrentMail = null;
					}
					gs.Kill(count);
				}
			}
			finally
			{
				string summary = "<p>Started: "+StartDateTime.ToLongTimeString()+"</p>";
				summary += "<p>Ending: "+DateTime.Now.ToLongTimeString()+"</p>";
				TimeSpan timeTaken = (DateTime.Now - StartDateTime);
				summary += "<p>Total time: "+timeTaken.TotalMinutes.ToString("0.##")+" min</p>";
				summary += "<p><b>Users with unseen galleries: "+UsrCount.ToString("#,##0")+"</b></p>";
				summary += "<p><b>Exceptions: "+FailCount.ToString("#,##0")+"</b></p>";

				Mailer smAdmin = new Mailer();
				smAdmin.TemplateType=Mailer.TemplateTypes.AdminNote;

				smAdmin.Body += "<h1>Summary</h1>";
				smAdmin.Body += summary;
			
				smAdmin.Subject="Gallery email sent "+DateTime.Now.ToString();
				smAdmin.To="*****@*****.**";
				smAdmin.Send();
			}
			
		}
コード例 #4
0
ファイル: Event.cs プロジェクト: davelondon/dontstayin
		public static Event AddEvent(
			string name, 
			int venueK, 
			StartTimes? startTime, 
			DateTime date, 
			string shortDetails, 
			string safeLongDetails, 
			Guid? duplicateGuid, 
			int? capacity, 
			Usr usr, 
			int[] musicTypeKs, 
			int[] brandKs,
			bool spotterRequest,
			string spotterRequestName,
			string spotterRequestNumber)
		{
			Event ev = new Event();

			Venue venue = new Venue(venueK);
			Transaction t = null;//new Transaction();
			try
			{
				ev.AddedDateTime = DateTime.Now;
				ev.VenueK = venue.K;
				ev.Name = Cambro.Web.Helpers.StripHtml(name).Trim();
				ev.StartTime = startTime ?? StartTimes.Evening;;
				ev.DateTime = date;
				ev.ShortDetailsHtml = Cambro.Misc.Utility.Snip(Cambro.Web.Helpers.StripHtml(shortDetails ?? ""), 500);

				ev.LongDetailsHtml = safeLongDetails;

				ev.DuplicateGuid = duplicateGuid ?? Guid.NewGuid();

				ev.Capacity = capacity ?? venue.Capacity;

				ev.AdminNote += "Event added by owner " + DateTime.Now.ToString();

				ev.OwnerUsrK = Usr.Current.K;

				ev.SpotterRequest = spotterRequest;
				ev.SpotterRequestName = spotterRequestName;
				ev.SpotterRequestNumber = spotterRequestNumber;

				if (!usr.IsSuper)
				{
					ev.IsNew = true;
					ev.ModeratorUsrK = Usr.GetEventModeratorUsrK();
				}
				ev.InitUrlFragment();
				ev.Update(t);

				foreach (int musicTypeK in musicTypeKs ?? new int[]{})
				{
					MusicType mt = new MusicType(musicTypeK);
					EventMusicType emt = new EventMusicType();
					emt.EventK = ev.K;
					emt.MusicTypeK = mt.K;
					emt.Update(t);
				}
				foreach (int brandK in brandKs ?? new int[] { })
				{
					EventBrand eb = new EventBrand();
					eb.BrandK = brandK;
					eb.EventK = ev.K;
					eb.Update(t);
				}

				ev.UpdateMusicTypesString(t);

				ev.Venue.UpdateTotalEvents(t);
				ev.Owner.UpdateEventCount(t);

				//t.Commit();
				

			}
			catch (Exception ex)
			{
				//t.Rollback();
				ev.DeleteAll(null);
				throw ex;
			}
			finally
			{
				//t.Close();
			}

			Mailer sm = new Mailer();
			sm.TemplateType = Mailer.TemplateTypes.AnotherSiteUser;
			sm.UsrRecipient = Usr.Current;
			sm.To = Usr.Current.Email;
			sm.Subject = "You've added an event!";
			sm.Body += "<p>You've added an event to the DontStayIn events database.</p>";
			sm.Body += "<p>Click the link below to view the event:</p>";
			sm.Body += "<p><a href=\"[LOGIN(" + ev.Url() + ")]\">" + HttpUtility.HtmlEncode(ev.FriendlyName) + "</a></p>";
			sm.Body += "<h2>Make changes</h2>";
			sm.Body += "<p>You can make changes or corrections to the event details by clicking the link below:</p>";
			sm.Body += "<p><a href=\"[LOGIN(/event-" + ev.K.ToString() + "/edit)]\">Edit your event</a></p>";
			sm.Body += "<h2>How about a banner advert?</h2>";
			sm.Body += "<p>You can add a banner advert to your event by using the link below:</p>";
			sm.Body += "<p><a href=\"[LOGIN(/pages/bannerpreview/eventk-" + ev.K.ToString() + ")]\">Add a banner</a></p>";
			sm.Body += "<h2>Add photos or a review</h2>";
			sm.Body += "<p>After the event you can upload photos or add a review with the links below:</p>";
			sm.Body += "<p><a href=\"[LOGIN(/pages/galleries/add/eventk-" + ev.K.ToString() + ")]\">Add photos</a> or <a href=\"[LOGIN(" + ev.UrlApp("review") + ")]\">add a review</a></p>";
			sm.Body += "<h2>Are you the event promoter?</h2>";
			sm.Body += "<p>If you organise this event, you can sign up for a FREE promoter account by using the link below:</p>";
			sm.Body += "<p><a href=\"[LOGIN(/pages/promoters/edit)]\">Apply for a promoter account</a></p>";
			sm.RedirectUrl = ev.Url();
			sm.Send();
			return ev;

		}
コード例 #5
0
ファイル: FacebookPost.cs プロジェクト: davelondon/dontstayin
		public static void CreateAttendEvent(Usr u, Event e)
		{
			Query q = new Query();
			q.QueryCondition = new And(
				new Q(FacebookPost.Columns.DateTime, QueryOperator.GreaterThan, System.DateTime.Now.AddDays(-1)),
				new Q(FacebookPost.Columns.FacebookUid, u.Facebook.Uid),
				new Q(FacebookPost.Columns.Type, TypeEnum.AttendEvent));
			FacebookPostSet fps = new FacebookPostSet(q);
			if (fps.Count < 5)
			{
				Query q1 = new Query();
				q1.QueryCondition = new And(
					new Q(FacebookPost.Columns.FacebookUid, u.Facebook.Uid),
					new Q(FacebookPost.Columns.DataInt, e.K),
					new Or(new Q(FacebookPost.Columns.Type, TypeEnum.BuyTicket), new Q(FacebookPost.Columns.Type, TypeEnum.AttendEvent)));
				FacebookPostSet fps1 = new FacebookPostSet(q1);
				if (fps1.Count == 0)
				{

					FacebookPost fp = new FacebookPost();
					fp.Hits = 0;
					fp.FacebookUid = u.Facebook.Uid;
					fp.DateTime = System.DateTime.Now;
					fp.Type = TypeEnum.AttendEvent;
					fp.Content = "EventK=" + e.K.ToString();
					fp.DataInt = e.K;
					fp.UsrK = u.K;
					fp.Update();

					//send facebook message
					//http://developers.facebook.com/docs/reference/api/post
					Dictionary<string, object> par = new Dictionary<string, object>();
					par["picture"] = e.HasAnyPic ? e.AnyPicPath : "http://www.dontstayin.com/gfx/logo-90.png";
					par["link"] = "http://" + Vars.DomainName + e.Url() + "?fbpk=" + fp.K.ToString();
					par["name"] = e.FriendlyNameGeneric(true, false, false, false);
					par["caption"] = "Don't Stay In";
					par["description"] = ("@ " + e.FriendlyNameGeneric(false, true, true, true) + " - " + e.ShortDetailsHtml).TruncateWithDots(990);
					u.Facebook.PutWallPost(e.IsFuture ? "I'm going to this..." : "I went to this...", par);
				}
			}
		}
コード例 #6
0
ファイル: Copy.ascx.cs プロジェクト: davelondon/dontstayin
		void PanelSaved_Load(object o, EventArgs e)
		{
			if (this.ViewState["NewEventK"] != null)
			{
				int newEventK = int.Parse(this.ViewState["NewEventK"].ToString());
				Event NewEvent = new Event(newEventK);
				//ucBannerPreview.EventK = newEventK;
				//ucBannerPreview.Bind();
				PanelSavedEventLink.HRef = NewEvent.Url();
				PanelSavedEventLink.InnerText = NewEvent.FriendlyName;
				PanelSavedSignUpLink.HRef = NewEvent.SpotterSignUpUrl;
			}

		}