void VisitPostAuthenticateRequest() { if (!HttpContext.Current.Request.Url.LocalPath.ToLower().StartsWith("/webservices/controls/chatclient/service.asmx") && !HttpContext.Current.Request.Url.LocalPath.Equals("/support/DbChatServer.aspx") && !HttpContext.Current.Request.Url.LocalPath.Equals("/WebResource.axd")) { Guid guid = Guid.Empty; int usrK = 0; Visit currentVisit = null; VisitSet vs = null; string userAgent = ""; bool noLoggedInPreviousVisitExists = true; bool browserIsCrawler = false; string ipAddress = ""; try { #region Get ipAddress try { ipAddress = Utilities.TruncateIp(HttpContext.Current.Request.ServerVariables["REMOTE_HOST"]); } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception getting IpAddress!..."), ex)); } #endregion #region Get UserAgent try { if (HttpContext.Current.Request.UserAgent != null) { userAgent = HttpContext.Current.Request.UserAgent; } } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception getting UserAgent!... IpAddress={0}", ipAddress), ex)); } #endregion #region Get browserIsCrawler try { if (HttpContext.Current.Request.Browser != null) { browserIsCrawler = HttpContext.Current.Request.Browser.Crawler; } } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception getting BrowserIsCrawler!... UserAgent={0}, IpAddress={1}", userAgent, ipAddress), ex)); } #endregion #region Get UsrK try { //The user is authenticated - lets find the UsrK... if (HttpContext.Current.User.Identity.IsAuthenticated) { string usrStr = HttpContext.Current.User.Identity.Name; string[] split = usrStr.Split('&'); usrK = int.Parse(split[0]); } } catch (Exception ex) { //We might get a corrupt cookie from the client... (not likely because IsAuthenticated should check for this!) SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception getting UsrK!... BrowserIsCrawler={0}, UserAgent={1}, IpAddress={2}", browserIsCrawler, userAgent, ipAddress), ex)); } #endregion #region Get Guid try { if (HttpContext.Current.Request.Cookies["DsiGuid"] != null) { //We have a Guid from the client... guid = new Guid(HttpContext.Current.Request.Cookies["DsiGuid"].Value); } } catch (Exception ex) { //We might get a corrupt cookie from the client... SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception getting guid!... BrowserIsCrawler={0}, UserAgent={1}, UsrK={2}, IpAddress={3}", browserIsCrawler, userAgent, usrK, ipAddress), ex)); } #endregion #region Get previous Visit(s) if (!guid.Equals(Guid.Empty)) { try { //OK so we've got a Guid, lets see if this page request is part of a previous visit by looking for //visits in the last 30 minutes with this Guid / UsrK combination... Query q = new Query(); q.QueryCondition = new And( new Q(Visit.Columns.UsrK, usrK), new Q(Visit.Columns.Guid, guid), new Q(Visit.Columns.DateTimeLast, QueryOperator.GreaterThan, DateTime.Now.AddMinutes(-30))); q.OrderBy = new OrderBy(Visit.Columns.Hits, OrderBy.OrderDirection.Descending); vs = new VisitSet(q); } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception getting previous visit(s) [PART 1]... UsrK={0}, DsiGuid={1}, UserAgent={2}, BrowserIsCrawler={3}, IpAddress={4}", usrK, guid, userAgent, browserIsCrawler, ipAddress), ex)); } try { if (browserIsCrawler && (vs == null || vs.Count == 0)) { // if not, still see if we can match the Guid to a previous LOGGED IN visit to reduce chance of detecting a bot when it's not.. var vs2 = new VisitSet(new Query { QueryCondition = new And( new Q(Visit.Columns.UsrK, QueryOperator.GreaterThan, 0), new Q(Visit.Columns.Guid, guid), new Q(Visit.Columns.DateTimeLast, QueryOperator.GreaterThan, DateTime.Now.AddMonths(-1))), TopRecords = 1 }); if (vs2.Count > 0) { noLoggedInPreviousVisitExists = false; } } } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception getting previous visit(s) [PART 2]... UsrK={0}, DsiGuid={1}, UserAgent={2}, BrowserIsCrawler={3}, IpAddress={4}", usrK, guid, userAgent, browserIsCrawler, ipAddress), ex)); } } else if (usrK == 0) { try { //We don't have a Guid from the cookie, and they're not logged in. Either it's their first page //request or they have cookies disabled. Lets see if this IP adress has hit the site in the last //30 minutes... Query q = new Query(); q.QueryCondition = new And( new Q(Visit.Columns.UsrK, 0), new Q(Visit.Columns.IpAddress, Utilities.TruncateIp(HttpContext.Current.Request.ServerVariables["REMOTE_HOST"])), new Q(Visit.Columns.DateTimeLast, QueryOperator.GreaterThan, DateTime.Now.AddMinutes(-30))); q.OrderBy = new OrderBy(Visit.Columns.Hits, OrderBy.OrderDirection.Descending); vs = new VisitSet(q); } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception getting previous visit(s) [PART 3]... UsrK={0}, DsiGuid={1}, UserAgent={2}, BrowserIsCrawler={3}, IpAddress={4}", usrK, guid, userAgent, browserIsCrawler, ipAddress), ex)); } } else { try { //This should never happen, but we've found it happening when the Guid doesn't get set to the //cookie properly when it's done just before a redirect? Lets see if this UsrK has hit the site //in the last 30 minutes... Query q = new Query(); q.QueryCondition = new And( new Q(Visit.Columns.UsrK, usrK), new Q(Visit.Columns.DateTimeLast, QueryOperator.GreaterThan, DateTime.Now.AddMinutes(-30))); q.OrderBy = new OrderBy(Visit.Columns.Hits, OrderBy.OrderDirection.Descending); vs = new VisitSet(q); } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception getting previous visit(s) [PART 4]... UsrK={0}, DsiGuid={1}, UserAgent={2}, BrowserIsCrawler={3}, IpAddress={4}", usrK, guid, userAgent, browserIsCrawler, ipAddress), ex)); } } #endregion #region Create / merge visit if (vs == null || vs.Count == 0) { try { //If we didn't find any visits, lets create one. I wish there was a way we could avoid duplicates! Visit v = new Visit(); if (guid.Equals(Guid.Empty)) { guid = Guid.NewGuid(); v.Guid = guid; v.IsNewGuid = true; try { Cambro.Web.Helpers.SetCookie("DsiGuid", guid.ToString(), true); } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception setting cookie while creating new visit... UsrK={0}, DsiGuid={1}, UserAgent={2}, BrowserIsCrawler={3}, IpAddress={4}", usrK, guid, userAgent, browserIsCrawler, ipAddress), ex)); } } else { v.Guid = guid; v.IsNewGuid = false; } v.UsrK = usrK; v.Pages = 0; v.Photos = 0; v.DateTimeStart = DateTime.Now; v.DateTimeLast = DateTime.Now; v.IpAddress = ipAddress; v.CountryK = Bobs.IpCountry.ClientCountryK(); if (userAgent.Length > 0) { v.IsCrawler = browserIsCrawler && !userAgent.StartsWith("Opera") && usrK == 0 && noLoggedInPreviousVisitExists; v.UserAgent = userAgent.TruncateWithDots(400); } if (usrK > 0 && browserIsCrawler) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception( string.Format("False-positive crawler? UsrK={0}, UserAgent={1}", usrK, userAgent))); } v.Update(); currentVisit = v; } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception creating new visit... UsrK={0}, DsiGuid={1}, UserAgent={2}, BrowserIsCrawler={3}, IpAddress={4}", usrK, guid, userAgent, browserIsCrawler, ipAddress), ex)); } } else if (vs.Count == 1) { try { //If we found just one visit, then great! currentVisit = vs[0]; } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception getting single visit from visit set... UsrK={0}, DsiGuid={1}, UserAgent={2}, BrowserIsCrawler={3}, IpAddress={4}", usrK, guid, userAgent, browserIsCrawler, ipAddress), ex)); } } else// if (vs.Count > 1) { try { //If we've found more than one visit from the last half hour, we should merge them together. This //isn't great, and I wish we could avoid duplicates when we create them - good use for a stored //procedure? int mergeWithK = vs[0].K; int pages = 0; int photos = 0; for (int i = 1; i < vs.Count; i++) { pages += vs[i].Pages; photos += vs[i].Photos; vs[i].Delete(); } Visit.Increment(mergeWithK, pages, photos); currentVisit = vs[0]; } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception merging visits... UsrK={0}, DsiGuid={1}, UserAgent={2}, BrowserIsCrawler={3}, IpAddress={4}", usrK, guid, userAgent, browserIsCrawler, ipAddress), ex)); } } #endregion if (currentVisit != null) { #region Update Guid from Visit if needed try { if (guid.Equals(Guid.Empty)) { //If we don't have a guid, lets create a new one and set it in the cookie. guid = currentVisit.Guid; Cambro.Web.Helpers.SetCookie("DsiGuid", guid.ToString(), true); } } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception setting guid at end of visit code... UsrK={0}, DsiGuid={1}, UserAgent={2}, BrowserIsCrawler={3}, IpAddress={4}", usrK, guid, userAgent, browserIsCrawler, ipAddress), ex)); } #endregion #region Store current visit in HttpContext.Current.Items try { HttpContext.Current.Items["CurrentVisit"] = currentVisit; } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Exception setting current visit in HttpContext.Current.Items... UsrK={0}, DsiGuid={1}, UserAgent={2}, BrowserIsCrawler={3}, IpAddress={4}", usrK, guid, userAgent, browserIsCrawler, ipAddress), ex)); } #endregion } else { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("Got to end of visit code but didn't have a visit!... UsrK={0}, DsiGuid={1}, UserAgent={2}, BrowserIsCrawler={3}, IpAddress={4}", usrK, guid, userAgent, browserIsCrawler, ipAddress))); } } catch (Exception ex) { SpottedException.TryToSaveExceptionAndChildExceptions(new Exception(string.Format("General exception in visit code... UsrK={0}, DsiGuid={1}, UserAgent={2}, BrowserIsCrawler={3}, IpAddress={4}", usrK, guid, userAgent, browserIsCrawler, ipAddress), ex)); } } }
private void LoadTicketsToPaymentControl() { Payment.Reset(); if (Usr.Current == null) throw new DsiUserFriendlyException("You must be logged in to purchase tickets."); InvoiceDataHolder idh = new InvoiceDataHolder(); idh.ActionUsrK = Usr.Current.K; idh.CreatedDateTime = DateTime.Now; idh.DuplicateGuid = (Guid)ViewState["DuplicateGuid"]; idh.PromoterK = 0; idh.Type = Invoice.Types.Invoice; idh.VatCode = Invoice.VATCodes.T1; DateTime now = DateTime.Now; foreach (Ticket ticket in TicketsToPurchase) { InvoiceItemDataHolder iidhTicket = new InvoiceItemDataHolder(); InvoiceItemDataHolder iidhBookingFee = new InvoiceItemDataHolder(); if (ticket.TicketRun.Promoter.VatStatus == Promoter.VatStatusEnum.Registered) iidhTicket.VatCode = InvoiceItem.VATCodes.T1; else iidhTicket.VatCode = InvoiceItem.VATCodes.T0; iidhTicket.SetTotal(ticket.Price); iidhTicket.Type = InvoiceItem.Types.EventTickets; iidhTicket.KeyData = ticket.K; iidhTicket.BuyableObjectK = ticket.K; iidhTicket.BuyableObjectType = Model.Entities.ObjectType.Ticket; iidhTicket.RevenueStartDate = now; iidhTicket.RevenueEndDate = now; iidhTicket.Description = ticket.Description; iidhTicket.ShortDescription = ticket.ShortDescription; iidhBookingFee.VatCode = InvoiceItem.VATCodes.T1; iidhBookingFee.SetTotal(ticket.BookingFee); iidhBookingFee.Type = InvoiceItem.Types.EventTicketsBookingFee; iidhBookingFee.KeyData = ticket.K; iidhBookingFee.BuyableObjectK = ticket.K; iidhBookingFee.BuyableObjectType = Model.Entities.ObjectType.Ticket; iidhBookingFee.RevenueStartDate = now; iidhBookingFee.RevenueEndDate = now; iidhBookingFee.Description = "Booking fee"; iidhBookingFee.ShortDescription = "Booking fee"; idh.InvoiceItemDataHolderList.Add(iidhTicket); idh.InvoiceItemDataHolderList.Add(iidhBookingFee); } //how many visits has this user had? Query qVisits = new Query(); qVisits.QueryCondition = new Q(Visit.Columns.UsrK, Usr.Current.K); qVisits.ReturnCountOnly = true; VisitSet vsCount = new VisitSet(qVisits); if (vsCount.Count <= 20) Payment.FraudCheck = Transfer.FraudCheckEnum.Strict; Payment.Invoices.Add(idh); Payment.PromoterK = 0; Payment.AllowPayWithBalance = false; Payment.ShowItemsIncVat = true; Payment.UsrK = Usr.Current.K; Payment.Initialize(); Payment.LoadBuyerDetailsToScreen(); //this.TicketsPanel.Visible = false; //this.PayForTicketsPanel.Visible = true; }
protected string Number(int DateSpan, int StatType) { TimeSpan ts = DateTime.Today.Subtract(new DateTime(1970, 1, 1)); int dayIndexNow = ts.Days; //return dayIndexNow.ToString(); int dayMin = dayIndexNow; int dayMax = dayIndexNow; DateTime dateMin = DateTime.Today; DateTime dateMax = DateTime.Today.AddDays(1); bool estimateWholeDay = false; if (DateSpan == 10) estimateWholeDay = true; else if (DateSpan == 1) { dayMin = dayIndexNow - 1; dayMax = dayIndexNow - 1; dateMin = DateTime.Today.AddDays(-1); dateMax = DateTime.Today; } else if (DateSpan == 2) { dayMin = dayIndexNow - 7; dayMax = dayIndexNow - 1; dateMin = DateTime.Today.AddDays(-7); dateMax = DateTime.Today; } else if (DateSpan == 3) { dayMin = dayIndexNow - 30; dayMax = dayIndexNow - 1; dateMin = DateTime.Today.AddMonths(-1); dateMax = DateTime.Today; } else if (DateSpan == 4) { dayMin = dayIndexNow - 365; dayMax = dayIndexNow - 1; dateMin = DateTime.Today.AddDays(-365); dateMax = DateTime.Today; } else if (DateSpan == 5) { dayMin = 0; dayMax = dayIndexNow; dateMin = new DateTime(2000, 1, 1); dateMax = new DateTime(3000, 1, 1); } else if (DateSpan == 15) { dayMin = 0; dayMax = dayIndexNow; dateMin = DateTime.Now.AddMinutes(-5); dateMax = DateTime.Now; } else if (DateSpan == 130) { dayMin = 0; dayMax = dayIndexNow; dateMin = DateTime.Now.AddMinutes(-30); dateMax = DateTime.Now; } int number = 0; if (StatType == 1) // Uniques { Query q = new Query(); q.NoLock = true; q.Columns = new ColumnSet(); q.ExtraSelectElements["count"] = "count(distinct Guid)"; q.QueryCondition = new And( new Or(new Q(Visit.Columns.DateTimeStart, QueryOperator.GreaterThanOrEqualTo, dateMin), new Q(Visit.Columns.DateTimeLast, QueryOperator.GreaterThanOrEqualTo, dateMin)), new Or(new Q(Visit.Columns.DateTimeStart, QueryOperator.LessThan, dateMax), new Q(Visit.Columns.DateTimeLast, QueryOperator.LessThan, dateMax)), new Or(new Q(Visit.Columns.Pages, QueryOperator.GreaterThan, 1), new Q(Visit.Columns.IsNewGuid, false)) ); VisitSet vs = new VisitSet(q); number = (int)vs[0].ExtraSelectElements["count"]; } else if (StatType == 2) //Pages { Query q = new Query(); q.NoLock = true; q.Columns = new ColumnSet(); q.ExtraSelectElements["sum"] = "sum(Count)"; q.QueryCondition = new And( new Q(Log.Columns.Date, QueryOperator.GreaterThanOrEqualTo, dateMin), new Q(Log.Columns.Date, QueryOperator.LessThan, dateMax), new Q(Log.Columns.Item, Log.Items.DsiPages) ); LogSet ls = new LogSet(q); number = (int)ls[0].ExtraSelectElements["sum"]; } else if (StatType == 4) //Photos { if (DateSpan == 5) { Query q = new Query(); q.NoLock = true; q.OrderBy = new OrderBy(Photo.Columns.K, OrderBy.OrderDirection.Descending); q.Columns = new ColumnSet(Photo.Columns.K); q.TopRecords = 1; PhotoSet ps = new PhotoSet(q); number = ps[0].K; } else { Query q = new Query(); q.NoLock = true; q.QueryCondition = new And( Photo.EnabledQueryCondition, new Q(Photo.Columns.EnabledDateTime, QueryOperator.GreaterThanOrEqualTo, dateMin), new Q(Photo.Columns.EnabledDateTime, QueryOperator.LessThan, dateMax) ); q.ReturnCountOnly = true; PhotoSet ps = new PhotoSet(q); number = ps.Count; } } else if (StatType == 5) //Events { if (DateSpan == 5) { Query q = new Query(); q.NoLock = true; q.OrderBy = new OrderBy(Event.Columns.K, OrderBy.OrderDirection.Descending); q.Columns = new ColumnSet(Event.Columns.K); q.TopRecords = 1; EventSet es = new EventSet(q); number = es[0].K; } else { Query q = new Query(); q.NoLock = true; q.QueryCondition = new And( new Q(Event.Columns.AddedDateTime, QueryOperator.GreaterThanOrEqualTo, dateMin), new Q(Event.Columns.AddedDateTime, QueryOperator.LessThan, dateMax) ); q.ReturnCountOnly = true; EventSet es = new EventSet(q); number = es.Count; } } else if (StatType == 6) //New users { if (DateSpan == 5) { Query q = new Query(); q.NoLock = true; q.OrderBy = new OrderBy(Usr.Columns.K, OrderBy.OrderDirection.Descending); q.Columns = new ColumnSet(Usr.Columns.K); q.TopRecords = 1; UsrSet us = new UsrSet(q); number = us[0].K; } else { Query q = new Query(); q.NoLock = true; q.QueryCondition = new And( new Q(Usr.Columns.DateTimeSignUp, QueryOperator.GreaterThanOrEqualTo, dateMin), new Q(Usr.Columns.DateTimeSignUp, QueryOperator.LessThan, dateMax) ); q.ReturnCountOnly = true; UsrSet us = new UsrSet(q); number = us.Count; } } else if (StatType == 7) //Users logged on { if (DateSpan == 5) { Query q = new Query(); q.NoLock = true; q.QueryCondition = Usr.IsNotSkeletonQ; q.ReturnCountOnly = true; UsrSet us = new UsrSet(q); number = us.Count; } else { Query q = new Query(); q.NoLock = true; if (DateSpan == 1) { q.QueryCondition = new Q(Usr.Columns.DateTimeLastPageRequest, QueryOperator.GreaterThanOrEqualTo, DateTime.Now.AddDays(-1)); } else { q.QueryCondition = new And( new Q(Usr.Columns.DateTimeLastPageRequest, QueryOperator.GreaterThanOrEqualTo, dateMin), new Q(Usr.Columns.DateTimeLastPageRequest, QueryOperator.LessThan, dateMax) ); } q.QueryCondition = new And(Usr.IsNotSkeletonQ, q.QueryCondition); q.ReturnCountOnly = true; UsrSet us = new UsrSet(q); number = us.Count; } } else if (StatType == 8) //Comments { if (DateSpan == 5) { Query q = new Query(); q.NoLock = true; q.OrderBy = new OrderBy(Comment.Columns.K, OrderBy.OrderDirection.Descending); q.Columns = new ColumnSet(Comment.Columns.K); q.TopRecords = 1; CommentSet cs = new CommentSet(q); number = cs[0].K; } else { Query q = new Query(); q.NoLock = true; q.QueryCondition = new And( new Q(Comment.Columns.DateTime, QueryOperator.GreaterThanOrEqualTo, dateMin), new Q(Comment.Columns.DateTime, QueryOperator.LessThan, dateMax) ); q.ReturnCountOnly = true; CommentSet cs = new CommentSet(q); number = cs.Count; } } else if (StatType == 9) //PMs { Query q = new Query(); q.NoLock = true; q.QueryCondition = new And( new Q(Comment.Columns.DateTime, QueryOperator.GreaterThanOrEqualTo, dateMin), new Q(Comment.Columns.DateTime, QueryOperator.LessThan, dateMax), new Q(Thread.Columns.Private, true), new Q(Comment.Columns.UsrK, QueryOperator.NotEqualTo, 7646) ); q.TableElement = Comment.ThreadJoin; q.ReturnCountOnly = true; CommentSet cs = new CommentSet(q); number = cs.Count; } else if (StatType == 10) //Chat massages { if (DateSpan == 5) { Query q = new Query(); q.NoLock = true; q.OrderBy = new OrderBy(ChatMessage.Columns.K, OrderBy.OrderDirection.Descending); q.Columns = new ColumnSet(ChatMessage.Columns.K); q.TopRecords = 1; ChatMessageSet cms = new ChatMessageSet(q); number = cms[0].K; } else { Query q = new Query(); q.NoLock = true; q.QueryCondition = new And( new Q(ChatMessage.Columns.DateTime, QueryOperator.GreaterThanOrEqualTo, dateMin), new Q(ChatMessage.Columns.DateTime, QueryOperator.LessThan, dateMax) ); q.ReturnCountOnly = true; ChatMessageSet cms = new ChatMessageSet(q); number = cms.Count; } } else if (StatType == 11) //Photo views { Query q = new Query(); q.NoLock = true; q.Columns = new ColumnSet(); q.ExtraSelectElements["sum"] = "sum(Count)"; q.QueryCondition = new And( new Q(Log.Columns.Date, QueryOperator.GreaterThanOrEqualTo, dateMin), new Q(Log.Columns.Date, QueryOperator.LessThan, dateMax), new Q(Log.Columns.Item, Log.Items.PhotoImpressions) ); LogSet ls = new LogSet(q); number = (int)ls[0].ExtraSelectElements["sum"]; } else if (StatType == 12) // Unique members from visit table { Query q = new Query(); q.NoLock = true; q.Columns = new ColumnSet(); q.ExtraSelectElements["count"] = "count(distinct UsrK)"; q.QueryCondition = new And( new Or(new Q(Visit.Columns.DateTimeStart, QueryOperator.GreaterThanOrEqualTo, dateMin), new Q(Visit.Columns.DateTimeLast, QueryOperator.GreaterThanOrEqualTo, dateMin)), new Or(new Q(Visit.Columns.DateTimeStart, QueryOperator.LessThan, dateMax), new Q(Visit.Columns.DateTimeLast, QueryOperator.LessThan, dateMax)) ); VisitSet vs = new VisitSet(q); number = (int)vs[0].ExtraSelectElements["count"]; } else if (StatType == 13) //New users { Query q = new Query(); q.NoLock = true; q.QueryCondition = new And( new Q(Usr.Columns.DateTimeSignUp, QueryOperator.GreaterThanOrEqualTo, dateMin), new Q(Usr.Columns.DateTimeSignUp, QueryOperator.LessThan, dateMax), new Or(new Q(Usr.Columns.IsSkeleton, false), new Q(Usr.Columns.IsSkeleton, QueryOperator.IsNull, null)) ); q.ReturnCountOnly = true; UsrSet us = new UsrSet(q); number = us.Count; } else number = 0; //if (estimateWholeDay) //{ // number = (int)Banner.EstimateFullDay(DateTime.Now, number); //} if (number == 0) return "<small>n/a</small>"; else return number.ToString("###,##0"); }
public void LoadTicketsToPaymentControl(TicketSet ticketsToPurchase) { Payment.Reset(); if (Usr.Current == null) throw new DsiUserFriendlyException("You must be logged in to purchase tickets."); if (!Usr.Current.IsEmailVerified || Usr.Current.IsEmailBroken) HttpContext.Current.Response.Redirect("/pages/emailverify?url=" + HttpContext.Current.Server.UrlEncode(HttpContext.Current.Request.Url.ToString()) + "&er=" + HttpContext.Current.Server.UrlEncode("You need to verify your email to buy tickets")); InvoiceDataHolder idh = new InvoiceDataHolder(); idh.ActionUsrK = Usr.Current.K; idh.CreatedDateTime = DateTime.Now; idh.DuplicateGuid = (Guid)ViewState["DuplicateGuid"]; idh.PromoterK = 0; idh.Type = Invoice.Types.Invoice; idh.VatCode = Invoice.VATCodes.T1; DateTime now = DateTime.Now; bool requiresDeliveryAddress = false; foreach (Ticket ticket in ticketsToPurchase) { InvoiceItemDataHolder ticketInvoiceItem = new InvoiceItemDataHolder(); InvoiceItemDataHolder bookingFeeInvoiceItem = new InvoiceItemDataHolder(); if (ticket.TicketRun.Promoter.VatStatus == Promoter.VatStatusEnum.Registered) ticketInvoiceItem.VatCode = InvoiceItem.VATCodes.T1; else ticketInvoiceItem.VatCode = InvoiceItem.VATCodes.T0; ticketInvoiceItem.SetTotal(ticket.Price); ticketInvoiceItem.Type = InvoiceItem.Types.EventTickets; ticketInvoiceItem.KeyData = ticket.K; ticketInvoiceItem.BuyableObjectK = ticket.K; ticketInvoiceItem.BuyableObjectType = Model.Entities.ObjectType.Ticket; ticketInvoiceItem.RevenueStartDate = now; ticketInvoiceItem.RevenueEndDate = now; ticketInvoiceItem.Description = ticket.Description; ticketInvoiceItem.ShortDescription = ticket.ShortDescription; bookingFeeInvoiceItem.VatCode = InvoiceItem.VATCodes.T1; bookingFeeInvoiceItem.SetTotal(ticket.BookingFee); bookingFeeInvoiceItem.Type = InvoiceItem.Types.EventTicketsBookingFee; bookingFeeInvoiceItem.KeyData = ticket.K; bookingFeeInvoiceItem.BuyableObjectK = ticket.K; bookingFeeInvoiceItem.BuyableObjectType = Model.Entities.ObjectType.Ticket; bookingFeeInvoiceItem.RevenueStartDate = now; bookingFeeInvoiceItem.RevenueEndDate = now; bookingFeeInvoiceItem.Description = "Booking fee"; bookingFeeInvoiceItem.ShortDescription = "Booking fee"; idh.InvoiceItemDataHolderList.Add(ticketInvoiceItem); idh.InvoiceItemDataHolderList.Add(bookingFeeInvoiceItem); if (ticket.TicketRun.DeliveryMethod == TicketRun.DeliveryMethodType.SpecialDelivery) { requiresDeliveryAddress = true; } } if (requiresDeliveryAddress){ TicketRun ticketRun = ticketsToPurchase[0].TicketRun; InvoiceItemDataHolder deliveryFeeInvoiceItem = new InvoiceItemDataHolder() { VatCode = InvoiceItem.VATCodes.T1, Type = InvoiceItem.Types.EventTicketsDelivery, Description = "Delivery by " + ticketRun.DeliveryMethod.ToString(), ShortDescription = "Delivery by " + ticketRun.DeliveryMethod.ToString(), RevenueStartDate = now, RevenueEndDate = now/*, BuyableObjectK = ticketsToPurchase[0].K, BuyableObjectType = Model.Entities.ObjectType.Ticket*/ }; deliveryFeeInvoiceItem.SetTotal(Convert.ToDecimal(ticketsToPurchase[0].TicketRun.DeliveryCharge)); idh.InvoiceItemDataHolderList.Add(deliveryFeeInvoiceItem); Payment.GetFullAddress = true; Payment.LockCountryK(224); Payment.FraudCheck = Transfer.FraudCheckEnum.Strict; } //how many visits has this user had? Query qVisits = new Query(); qVisits.QueryCondition = new Q(Visit.Columns.UsrK, Usr.Current.K); qVisits.ReturnCountOnly = true; VisitSet vsCount = new VisitSet(qVisits); if (vsCount.Count <= 20) Payment.FraudCheck = Transfer.FraudCheckEnum.Strict; Payment.Invoices.Add(idh); Payment.PromoterK = 0; Payment.AllowPayWithBalance = false; Payment.ShowItemsIncVat = true; Payment.UsrK = Usr.Current.K; Payment.Initialize(); Payment.LoadBuyerDetailsToScreen(); //this.TicketsPanel.Visible = false; this.PayForTicketsPanel.Visible = true; }