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"); } } }
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 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(); } }
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; }
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); } } }
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; } }