private void Btn_Set_Click(object sender, RoutedEventArgs e) { try { UkrzaliznutsaDBEntities ukrzaliznutsaDBEntities = new UkrzaliznutsaDBEntities(); TicketSet ticket = new TicketSet { User = user.SelectedItem.ToString(), Number = number.SelectedItem.ToString(), PointStart = pointstart.SelectedItem.ToString(), PointEnd = pointend.SelectedItem.ToString(), TypeVagon = typevagon.SelectedItem.ToString(), Price = price.Text, Photo = photoload, Information = arrayread, Marshrute = Marshrute.SelectedItem.ToString() }; ukrzaliznutsaDBEntities.TicketSet.Add(ticket); ukrzaliznutsaDBEntities.SaveChanges(); } catch (Exception exp) { MessageBox.Show(exp.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }
protected void Page_Load(object sender, EventArgs e) { Usr.KickUserIfNotLoggedIn("You must log in to view this page..."); TicketRun tr = new TicketRun(ContainerPage.Url[0]); if (!Usr.Current.IsPromoterK(tr.PromoterK) && !Usr.Current.IsAdmin) { throw new Exception("You must be a member of the " + tr.Promoter.Name + " promoter account to view this page."); } H1.InnerText = tr.Description; Query q = new Query(); q.QueryCondition=new Q(Ticket.Columns.TicketRunK, (int)ContainerPage.Url[0]); q.OrderBy = new OrderBy(Ticket.Columns.K); TicketSet ts = new TicketSet(q); foreach (Ticket t in ts) { HtmlTableRow tRow = new HtmlTableRow(); HtmlTableCell refCell = new HtmlTableCell(); refCell.InnerText = t.InvoiceItemK.ToString(); tRow.Cells.Add(refCell); HtmlTableCell dateCell = new HtmlTableCell(); dateCell.InnerText = t.BuyDateTime.ToString(); tRow.Cells.Add(dateCell); HtmlTableCell nameCell = new HtmlTableCell(); nameCell.InnerText = t.FirstName + " " + t.LastName; tRow.Cells.Add(nameCell); HtmlTableCell mobileCell = new HtmlTableCell(); mobileCell.InnerText = "0"+t.MobileNumber; tRow.Cells.Add(mobileCell); HtmlTableCell postcodeCell = new HtmlTableCell(); postcodeCell.InnerText = t.AddressPostcode; tRow.Cells.Add(postcodeCell); HtmlTableCell qtyCell = new HtmlTableCell(); qtyCell.InnerText = t.Quantity.ToString(); tRow.Cells.Add(qtyCell); // HtmlTableCell cardCell = new HtmlTableCell(); // cardCell.InnerText = t.CardDigits; // tRow.Cells.Add(cardCell); Tab.Rows.Add(tRow); } }
public void setTicket(string user, string number, string pointstart, string pointend, string typevagon, string price, byte[] photoload, byte[] arrayread, string marshrute) { UkrzaliznutsaDBEntities ukrzaliznutsaDBEntities = new UkrzaliznutsaDBEntities(); TicketSet ticket = new TicketSet { User = user, Number = number, PointStart = pointstart, PointEnd = pointend, TypeVagon = typevagon, Price = price, Photo = photoload, Information = arrayread, Marshrute = marshrute }; ukrzaliznutsaDBEntities.TicketSet.Add(ticket); ukrzaliznutsaDBEntities.SaveChanges(); }
private void DisplayDoorList() { if (!EndAllTicketRunsPanel.Visible) { List<int> ticketRunKs = new List<int>(); foreach (RepeaterItem ri in TicketRunSelectRepeater.Items) { if (((CheckBox)ri.FindControl("TicketRunCheckBox")).Checked) { ticketRunKs.Add(Convert.ToInt32(((TextBox)ri.FindControl("TicketRunKTextBox")).Text)); ((HtmlTableRow)ri.FindControl("TicketRunRow")).Attributes.Remove("class"); } else ((HtmlTableRow)ri.FindControl("TicketRunRow")).Attributes.Add("class", "HideOnPrint"); } if (ticketRunKs.Count == 0) { DoorlistGridView.Visible = false; HideOnPrintP.Visible = false; NoTicketsToDisplay = true; return; } //TemplateField firstNameColumn = (TemplateField)DoorlistGridView.Columns[0]; //TemplateField lastNameColumn = (TemplateField)DoorlistGridView.Columns[1]; //TemplateField codeColumn = (TemplateField)DoorlistGridView.Columns[2]; //TemplateField cardNumberEndColumn = (TemplateField)DoorlistGridView.Columns[3]; //TemplateField ticketRunNameColumn = (TemplateField)DoorlistGridView.Columns[4]; //TemplateField ticketsColumn = (TemplateField)DoorlistGridView.Columns[5]; //TemplateField cv2Column = (TemplateField)DoorlistGridView.Columns[6]; //DoorlistGridView.Columns.Clear(); Q selectTicketRunQ = new Q(); selectTicketRunQ = new Q(Ticket.Columns.TicketRunK, ticketRunKs[0]); for (int i = 1; i < ticketRunKs.Count; i++) { selectTicketRunQ = new Or(selectTicketRunQ, new Q(Ticket.Columns.TicketRunK, ticketRunKs[i])); } Query ticketQuery = new Query(new And(selectTicketRunQ, Ticket.ValidTicketsQ, new Or(new Q(Ticket.Columns.IsFraud, QueryOperator.IsNull, null), new Q(Ticket.Columns.IsFraud, false)) )); ticketQuery.Columns = new ColumnSet(Ticket.Columns.K, Ticket.Columns.FirstName, Ticket.Columns.LastName, Ticket.Columns.Code, Ticket.Columns.CardNumberEnd, Ticket.Columns.Quantity, Ticket.Columns.TicketRunK, Ticket.Columns.CardCheckedByPromoter, Ticket.Columns.CardCheckAttempts, Promoter.Columns.WillCheckCardsForPurchasedTickets); ticketQuery.TableElement = new Join( new Join(Ticket.Columns.TicketRunK, TicketRun.Columns.K), Promoter.Columns.K, TicketRun.Columns.PromoterK); ticketQuery.ExtraSelectElements.Add("TicketRunPriceName", "CASE WHEN LEN([TicketRun].[Name]) > 0 THEN '£' + CONVERT(varchar(9), CONVERT(money,[TicketRun].[Price])) + ' : ' + [TicketRun].[Name] ELSE '£' + CONVERT(varchar(9), CONVERT(money,[TicketRun].[Price])) END"); for (int i = 0; i < 8; i++) { DoorlistGridView.Columns[i].Visible = false; } TemplateField codeColumn = null; if (ListOrderBy.Equals(DoorlistOrderBy.FirstName)) { ticketQuery.OrderBy = new OrderBy(new OrderBy(Ticket.Columns.FirstName), new OrderBy(Ticket.Columns.LastName)); //DoorlistGridView.Columns.Add(firstNameColumn); //DoorlistGridView.Columns.Add(lastNameColumn); //DoorlistGridView.Columns.Add(codeColumn); //DoorlistGridView.Columns.Add(cardNumberEndColumn); DoorlistGridView.Columns[0].Visible = true; DoorlistGridView.Columns[1].Visible = true; codeColumn = (TemplateField)DoorlistGridView.Columns[2]; DoorlistGridView.Columns[2].Visible = true; DoorlistGridView.Columns[3].Visible = true; } else if (ListOrderBy.Equals(DoorlistOrderBy.LastName)) { ticketQuery.OrderBy = new OrderBy(new OrderBy(Ticket.Columns.LastName), new OrderBy(Ticket.Columns.FirstName)); //DoorlistGridView.Columns.Add(lastNameColumn); //DoorlistGridView.Columns.Add(firstNameColumn); //DoorlistGridView.Columns.Add(codeColumn); //DoorlistGridView.Columns.Add(cardNumberEndColumn); DoorlistGridView.Columns[1].Visible = true; DoorlistGridView.Columns[4].Visible = true; codeColumn = (TemplateField)DoorlistGridView.Columns[6]; DoorlistGridView.Columns[6].Visible = true; DoorlistGridView.Columns[7].Visible = true; } else if (ListOrderBy.Equals(DoorlistOrderBy.CardNumberEnd)) { ticketQuery.OrderBy = new OrderBy(new OrderBy(Ticket.Columns.CardNumberEnd), new OrderBy(Ticket.Columns.FirstName), new OrderBy(Ticket.Columns.LastName)); //DoorlistGridView.Columns.Add(cardNumberEndColumn); //DoorlistGridView.Columns.Add(firstNameColumn); //DoorlistGridView.Columns.Add(lastNameColumn); //DoorlistGridView.Columns.Add(codeColumn); DoorlistGridView.Columns[3].Visible = true; DoorlistGridView.Columns[4].Visible = true; DoorlistGridView.Columns[5].Visible = true; codeColumn = (TemplateField)DoorlistGridView.Columns[6]; DoorlistGridView.Columns[6].Visible = true; } else if (ListOrderBy.Equals(DoorlistOrderBy.Code)) { ticketQuery.OrderBy = new OrderBy(new OrderBy(Ticket.Columns.Code), new OrderBy(Ticket.Columns.FirstName), new OrderBy(Ticket.Columns.LastName)); //DoorlistGridView.Columns.Add(codeColumn); //DoorlistGridView.Columns.Add(firstNameColumn); //DoorlistGridView.Columns.Add(lastNameColumn); //DoorlistGridView.Columns.Add(cardNumberEndColumn); codeColumn = (TemplateField)DoorlistGridView.Columns[2]; DoorlistGridView.Columns[2].Visible = true; DoorlistGridView.Columns[4].Visible = true; DoorlistGridView.Columns[5].Visible = true; DoorlistGridView.Columns[7].Visible = true; } //DoorlistGridView.Columns.Add(ticketRunNameColumn); //DoorlistGridView.Columns.Add(ticketsColumn); //DoorlistGridView.Columns.Add(cv2Column); TicketSet doorlistTickets = new TicketSet(ticketQuery); if (doorlistTickets.Count == 0) { DoorlistGridView.Visible = false; NoTicketsToDisplay = true; uiNoTickets.Visible = true; HideOnPrintP.Visible = false; return; } HideOnPrintP.Visible = true; uiNoTickets.Visible = false; DoorlistGridView.Visible = true; codeColumn.Visible = false; TemplateField cv2Column = (TemplateField)DoorlistGridView.Columns[10]; cv2Column.Visible = false; foreach (Ticket ticket in doorlistTickets) { if (codeColumn.Visible == false && ticket.Code.Length > 0) { codeColumn.Visible = true; } if (cv2Column.Visible == false && ticket.ExtraSelectElements["Promoter_WillCheckCardsForPurchasedTickets"].ToString() == bool.TrueString) { cv2Column.Visible = true; } if (codeColumn.Visible && cv2Column.Visible) break; } doorlistTickets.Reset(); if (codeColumn.Visible) AddCodeListItemToOrderByDropDownList(); DoorlistGridView.DataSource = doorlistTickets; DoorlistGridView.DataBind(); } }
public void CalculateSoldTicketsAndUpdate() { Query q = new Query(this.SoldTicketsQ); q.ExtraSelectElements.Add("SumSoldTickets", "SUM([Ticket].[Quantity])"); q.Columns = new ColumnSet(); TicketSet tickets = new TicketSet(q); if (tickets.Count > 0 && tickets[0].ExtraSelectElements["SumSoldTickets"] != DBNull.Value) this.SoldTickets = Convert.ToInt32(tickets[0].ExtraSelectElements["SumSoldTickets"]); else this.SoldTickets = 0; this.Update(); this.TicketPromoterEvent.CalculateTicketsAndFunds(); }
public static int GetQuantity(TicketSet tickets) { int quantity = 0; foreach (Ticket ticket in tickets) { quantity += ticket.Quantity; } return quantity; }
public bool VerifyTicketPurchase() { List<IBobAsHTML> bobsAsHTML = new List<IBobAsHTML>(); if ((this.Enabled || this.Cancelled) && (this.Invoice == null || this.CardNumberEnd.Length == 0 || this.FirstName.Length == 0 || this.LastName.Length == 0)) { string oldTicketHTML = this.AsHTML(); string ticketFromDataBaseHTML = "Unable to retrieve ticket from database."; try { // Get fresh data from database and compare to MemCached Ticket TicketSet ticketsFromDatabase = new TicketSet(new Query(new Q(Ticket.Columns.K, this.K))); if (ticketsFromDatabase.Count == 1) { ticketFromDataBaseHTML = ticketsFromDatabase[0].AsHTML(); this.InvoiceItemK = ticketsFromDatabase[0].InvoiceItemK; this.FirstName = ticketsFromDatabase[0].FirstName; this.LastName = ticketsFromDatabase[0].LastName; this.CardNumberEnd = ticketsFromDatabase[0].CardNumberEnd; this.CardCV2 = ticketsFromDatabase[0].CardCV2; this.Update(); //if (this.InvoiceItemK != ticketsFromDatabase[0].InvoiceItemK || this.Enabled != ticketsFromDatabase[0].Enabled || this.Cancelled != ticketsFromDatabase[0].Cancelled || Math.Round(this.Price, 2) != Math.Round(ticketsFromDatabase[0].Price, 2)) //{ // bobsAsHTML.Add(this); // bobsAsHTML.Add(ticketsFromDatabase[0]); // Utilities.AdminEmailAlert("<p>MemCache and database do not match for ticket.</p><p>TicketK= " + this.K.ToString() + ", InvoiceItemK= " + this.InvoiceItemK.ToString() + "</p>", "Error with MemCache", new DSIUserFriendlyException("Error with MemCache"), bobsAsHTML); //} } if (this.InvoiceItemK == 0 || this.CardNumberEnd.Length == 0 || this.FirstName.Length == 0 || this.LastName.Length == 0) { bobsAsHTML.Clear(); Query ticketInvoiceQuery = new Query(new And(new Q(Invoice.Columns.UsrK, this.BuyerUsrK), //new Q(InvoiceItem.Columns.Total, this.Price), new Q(InvoiceItem.Columns.BuyableObjectType, Convert.ToInt32(Model.Entities.ObjectType.Ticket)), new Q(InvoiceItem.Columns.BuyableObjectK, this.K), new Q(Invoice.Columns.Paid, 1), new Q(Invoice.Columns.PaidDateTime, QueryOperator.GreaterThanOrEqualTo, this.BuyDateTime.AddMinutes(-8)), new Q(Invoice.Columns.PaidDateTime, QueryOperator.LessThanOrEqualTo, this.BuyDateTime.AddMinutes(8)))); ticketInvoiceQuery.TableElement = new Join(Invoice.Columns.K, InvoiceItem.Columns.InvoiceK); InvoiceSet ticketInvoice = new InvoiceSet(ticketInvoiceQuery); if (ticketInvoice.Count == 1 && ticketInvoice[0].Items.Count > 0) { if (this.InvoiceItemK == 0) { foreach (InvoiceItem ii in ticketInvoice[0].Items) { if (ii.Type == InvoiceItem.Types.EventTickets && ii.KeyData == this.K && ii.BuyableObjectType == Model.Entities.ObjectType.Ticket && ii.BuyableObjectK == this.K && Math.Round(ii.Total, 2) == Math.Round(this.Price)) this.InvoiceItemK = ii.K; } } bobsAsHTML.Add(this); bobsAsHTML.Add(ticketInvoice[0]); if (ticketInvoice[0].SuccessfulAppliedTransfers.Count == 1) { bobsAsHTML.Add(ticketInvoice[0].SuccessfulAppliedTransfers[0]); if (this.CardNumberEnd.Length == 0) { this.CardNumberEnd = ticketInvoice[0].SuccessfulAppliedTransfers[0].CardNumberEnd; this.CardNumberDigits = ticketInvoice[0].SuccessfulAppliedTransfers[0].CardDigits; this.CardCV2 = ticketInvoice[0].SuccessfulAppliedTransfers[0].CardCV2; } if (this.AddressPostcode.Length == 0) { this.AddressPostcode = ticketInvoice[0].SuccessfulAppliedTransfers[0].CardPostcode; } if (this.AddressStreet.Length == 0) { this.AddressStreet = ticketInvoice[0].SuccessfulAppliedTransfers[0].CardAddress1; } if (this.FirstName != Cambro.Misc.Utility.Snip(Utilities.GetFirstName(ticketInvoice[0].SuccessfulAppliedTransfers[0].CardName), 100)) { this.FirstName = Cambro.Misc.Utility.Snip(Utilities.GetFirstName(ticketInvoice[0].SuccessfulAppliedTransfers[0].CardName), 100); } if (this.LastName != Cambro.Misc.Utility.Snip(Utilities.GetLastName(ticketInvoice[0].SuccessfulAppliedTransfers[0].CardName), 100)) { this.LastName = Cambro.Misc.Utility.Snip(Utilities.GetLastName(ticketInvoice[0].SuccessfulAppliedTransfers[0].CardName), 100); } this.Update(); } Utilities.AdminEmailAlert("<p>Ticket and invoice did not match, but have been auto fixed.</p><p>Please verify manually.</p><p>TicketK= " + this.K.ToString() + ", InvoiceItemK= " + this.InvoiceItemK.ToString() + "</p>" + oldTicketHTML + ticketFromDataBaseHTML, "Ticket auto fixed #" + this.K.ToString(), new DsiUserFriendlyException("Ticket auto fixed"), bobsAsHTML, new string[] { Vars.EMAIL_ADDRESS_TIMI }); } else { Utilities.AdminEmailAlert("<p>Ticket and invoice did not match, and have not been fixed. Unable to find invoice from database</p><p>Please verify manually.</p><p>TicketK= " + this.K.ToString() + ", InvoiceItemK= " + this.InvoiceItemK.ToString() + "</p>" + oldTicketHTML + ticketFromDataBaseHTML, "Error not fixed with ticket #" + this.K.ToString(), new DsiUserFriendlyException("Ticket not fixed"), bobsAsHTML, new string[] { Vars.EMAIL_ADDRESS_TIMI }); } } } catch { } if (this.InvoiceItemK == 0 || this.CardNumberEnd.Length == 0 || this.FirstName.Length == 0 || this.LastName.Length == 0) { Utilities.AdminEmailAlert("<p>Ticket information missing.</p><p>Please verify manually.</p><p>TicketK= " + this.K.ToString() + ", InvoiceItemK= " + this.InvoiceItemK.ToString() + "</p>", "Error with Ticket #" + this.K.ToString(), new DsiUserFriendlyException("Error with ticket"), new List<IBobAsHTML>(){this}, new string[] { Vars.EMAIL_ADDRESS_TIMI }); } } if ((this.Enabled || this.Cancelled) && this.Invoice != null && !this.Invoice.Paid) { bobsAsHTML.Clear(); bobsAsHTML.Add(this); bobsAsHTML.Add(this.Invoice); Utilities.AdminEmailAlert("<p>Error occurred in VerifyTicketPurchase. Invoice was not fully paid for Ticket #" + this.K.ToString() + "</p>", "Error occurred in VerifyTicketPurchase. Invoice was not fully paid for Ticket #" + this.K.ToString(), new Exception(), bobsAsHTML); } if (!this.Enabled) throw new DsiUserFriendlyException("Ticket not valid."); if (this.Cancelled) throw new DsiUserFriendlyException("Ticket has been cancelled."); return true; }
public static void Refund(Usr actionUsr, TicketSet tickets, bool refundIncludeBookingFee, decimal chargeToPromoter) { if (tickets != null) { List<Ticket> ticketList = new List<Ticket>(); tickets.Reset(); foreach (Ticket ticket in tickets) ticketList.Add(ticket); Refund(actionUsr, ticketList, refundIncludeBookingFee, chargeToPromoter); } }
public static void Refund(Usr actionUsr, TicketSet tickets) { Refund(actionUsr, tickets, false, DEFAULT_REFUND_CHARGE); }
private void GetSearchResults() { // Query the database based on the search parameters // Set the returned results to be the data source of the GridView Query q = new Query(); List<Q> QueryConditionList = new List<Q>(); q.OrderBy = new OrderBy(Ticket.Columns.K, OrderBy.OrderDirection.Descending); QueryConditionList.Add(Ticket.SoldTicketsQ); if (this.TicketRunKTextBox.Text.Trim().Length > 0) QueryConditionList.Add(new Q(Ticket.Columns.TicketRunK, Convert.ToInt32(TicketRunKTextBox.Text))); if (this.FirstNameTextBox.Text.Trim().Length > 0) { QueryConditionList.Add(new Q(Ticket.Columns.FirstName, QueryOperator.TextStartsWith, this.FirstNameTextBox.Text.Trim())); //q.TableElement = new Join(Ticket.Columns.BuyerUsrK, Usr.Columns.K); } if (this.LastNameTextBox.Text.Trim().Length > 0) { QueryConditionList.Add(new Q(Ticket.Columns.LastName, QueryOperator.TextStartsWith, this.LastNameTextBox.Text.Trim())); //q.TableElement = new Join(Ticket.Columns.BuyerUsrK, Usr.Columns.K); } if (this.uiUsersAutoComplete.Value != null && !this.uiUsersAutoComplete.Value.Equals("")) QueryConditionList.Add(new Q(Ticket.Columns.BuyerUsrK, Convert.ToInt32(this.uiUsersAutoComplete.Value))); if (this.uiPromotersAutoComplete.Value != null && !uiPromotersAutoComplete.Value.Equals("")) { QueryConditionList.Add(new Q(TicketRun.Columns.PromoterK, Convert.ToInt32(uiPromotersAutoComplete.Value))); if(q.TableElement != null && q.TableElement is Join) q.TableElement = new Join(q.TableElement, new TableElement(TablesEnum.TicketRun), QueryJoinType.Inner, Ticket.Columns.TicketRunK, TicketRun.Columns.K); else q.TableElement = new Join(Ticket.Columns.TicketRunK, TicketRun.Columns.K); } if(this.CardDigitsTextBox.Text.Trim().Length > 0) QueryConditionList.Add(new Q(Ticket.Columns.CardNumberEnd, this.CardDigitsTextBox.Text.Trim())); if(this.PostCodeTextBox.Text.Trim().Length > 0) QueryConditionList.Add(new Q(Ticket.Columns.AddressPostcode, QueryOperator.TextStartsWith, this.PostCodeTextBox.Text.Trim())); if (this.FeedbackDropDownList.SelectedValue != "") { if (this.FeedbackDropDownList.SelectedValue == Ticket.FeedbackEnum.None.ToString()) { QueryConditionList.Add(new Or(new Q(Ticket.Columns.Feedback, QueryOperator.IsNull, null), new Q(Ticket.Columns.Feedback, Convert.ToInt32(FeedbackDropDownList.SelectedValue)))); } else QueryConditionList.Add(new Q(Ticket.Columns.Feedback, Convert.ToInt32(FeedbackDropDownList.SelectedValue))); } if (this.StatusDropDownList.SelectedValue != "") { if (this.StatusDropDownList.SelectedValue == "0") { QueryConditionList.Add(new Q(Ticket.Columns.Cancelled, QueryOperator.IsNull, null)); } QueryConditionList.Add(new Q(Ticket.Columns.Cancelled, Convert.ToBoolean(StatusDropDownList.SelectedValue))); } if(QueryConditionList.Count > 0) q.QueryCondition = new And(QueryConditionList.ToArray()); TicketSet searchResultTickets = new TicketSet(q); SearchResultsTicketsGridView.AllowPaging = (searchResultTickets.Count > SearchResultsTicketsGridView.PageSize); SearchResultsTicketsGridView.DataSource = searchResultTickets; SearchResultsTicketsGridView.Visible = true; SearchResultsTicketsGridView.DataBind(); ErrorLabel.Visible = false; ErrorLabel.Text = "Details missing on tickets, please fix:<ul>"; searchResultTickets.Reset(); foreach (Ticket ticket in searchResultTickets) { // Check for details missing for tickets created with the new ticket system if (ticket.BuyDateTime > Vars.TICKETS_NEW_SYSTEM_START_DATE && (ticket.LastName.Trim().Length == 0 || ticket.FirstName.Trim().Length == 0 || ticket.CardNumberEnd.Trim().Length == 0 || ticket.InvoiceItemK == 0)) { ErrorLabel.Visible = true; ErrorLabel.Text += "<li>Ticket #" + ticket.K.ToString() + "</li>"; } } // Check for tickets potentially paid for, but not enabled. Tickets up to K = 4200 have been verified. Query notEnabledTicketsQuery = new Query(new And(new Q(Ticket.Columns.Enabled, 0), new Q(Ticket.Columns.InvoiceItemK, QueryOperator.GreaterThan, 0), new Q(Ticket.Columns.K, QueryOperator.GreaterThan, 4200))); notEnabledTicketsQuery.Columns = new ColumnSet(Ticket.Columns.K); TicketSet notEnabledTickets = new TicketSet(notEnabledTicketsQuery); foreach (Ticket ticket in notEnabledTickets) { ErrorLabel.Visible = true; ErrorLabel.Text += "<li>Ticket #" + ticket.K.ToString() + " is not enabled</li>"; } ErrorLabel.Text += "</ul>"; if (searchResultTickets == null || searchResultTickets.Count == 0) { SearchResultsMessageLabel.Text = "* Zero results for your search. Please verify your search criteria."; SearchResultsMessageLabel.Visible = true; } }
public void CalculateTotalFundsAndVat() { this.promoterEventTicketsSold = null; if (this.TicketsSold != null) { this.SoldTickets = 0; this.TotalFunds = 0; this.TotalBookingFees = 0; this.TotalVat = 0; this.CancelledTickets = 0; foreach (Ticket ticket in this.TicketsSold) { this.SoldTickets += ticket.Quantity; if (!ticket.Cancelled) { this.TotalFunds += ticket.Price; this.TotalBookingFees += ticket.BookingFee; if (ticket.InvoiceItem != null) this.TotalVat += ticket.InvoiceItem.Vat; } else { this.CancelledTickets += ticket.Quantity; if (ticket.Invoice.CreditsApplied.Count > 0) { decimal refundedBookingFees = 0; foreach (InvoiceItem ii in ticket.Invoice.CreditsApplied[0].Items) { if (ii.Type == InvoiceItem.Types.EventTicketsBookingFee) refundedBookingFees += Math.Abs(ii.Total); } refundedBookingFees = Math.Round(refundedBookingFees, 2); if (refundedBookingFees > ticket.BookingFee) throw new Exception("Error calculating refunded booking fees"); else this.TotalBookingFees += ticket.BookingFee - refundedBookingFees; } } } this.TotalFunds = Math.Round(this.TotalFunds, 2); this.TotalBookingFees = Math.Round(this.TotalBookingFees, 2); this.TotalVat = Math.Round(this.TotalVat, 2); } }
private int TicketsSold(Q queryCondition) { Query q = new Query(new And(new Q(Ticket.Columns.EventK, this.K), Ticket.SoldTicketsQ, queryCondition)); q.ExtraSelectElements.Add("SumTickets", "SUM([Ticket].[Quantity])"); q.Columns = new ColumnSet(); TicketSet tickets = new TicketSet(q); if (tickets.Count > 0 && tickets[0].ExtraSelectElements["SumTickets"] != DBNull.Value) return Convert.ToInt32(tickets[0].ExtraSelectElements["SumTickets"]); else return 0; }
public int TicketsAwaitingPaymentForCardTotal(Guid cardNumberHash) { Query ticketQuery = new Query(new And(new Q(Ticket.Columns.EventK, this.K), new Q(Ticket.Columns.CardNumberHash, cardNumberHash), new Q(Ticket.Columns.ReserveDateTime, QueryOperator.GreaterThanOrEqualTo, DateTime.Now.AddSeconds(-1 * Vars.TICKETS_RESERVE_SECONDS)), new Q(Ticket.Columns.Enabled, 0))); ticketQuery.ExtraSelectElements.Add("SumAwaitingPaymentTickets", "SUM([Ticket].[Quantity])"); ticketQuery.Columns = new ColumnSet(); TicketSet tickets = new TicketSet(ticketQuery); if (tickets.Count > 0 && tickets[0].ExtraSelectElements["SumAwaitingPaymentTickets"] != DBNull.Value) return Convert.ToInt32(tickets[0].ExtraSelectElements["SumAwaitingPaymentTickets"]); else return 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; }
public void ValidateTickets(TicketSet ticketsToPurchase) { foreach (Ticket ticket in ticketsToPurchase) { if (Usr.Current.K != ticket.BuyerUsrK) { // Not same user throw new DsiUserFriendlyException("This ticket was reserved for another user."); } else if (!ticket.IsReadyForProcessing(InvoiceItem.Types.EventTickets, ticket.Price, ticket.Price) || !ticket.IsReadyForProcessing(InvoiceItem.Types.EventTicketsBookingFee, ticket.BookingFee, ticket.BookingFee)) { // Ticket not ready for processing throw new DsiUserFriendlyException("Ticket is not able to be processed."); } } }
public static void EmailAccountsTicketFundsReserveAmount() { double ticketMoney = 0; double ticketMoneyCencelled = 0; double ticketMoneyWithCardnetDelay = 0; double ticketMoneyToPromoterBankAccounts = 0; double ticketMoneyAppliedToInvoices = 0; double ticketMoneyReserve = 0; /* money earnt */ Query sumTicketMoneyQuery = new Query(); //sumTicketMoneyQuery.ExtraSelectElements.Add("SumTotalFunds", "SUM([TicketPromoterEvent].[TotalFunds])"); //sumTicketMoneyQuery.OverideSql = "SELECT SUM(TotalFunds) AS SumAmount FROM TicketPromoterEvent"; sumTicketMoneyQuery.OverideSql = "SELECT SUM([Ticket].[Price]) AS SumAmount FROM [Ticket] WHERE [Ticket].[Enabled] = 1 AND [Ticket].[Quantity] > 0 AND [Ticket].[Cancelled] = 0 AND [Ticket].[K] >= 82 "; Query sumTicketMoneyCancelledQuery = new Query(); sumTicketMoneyCancelledQuery.OverideSql = "SELECT SUM([Ticket].[Price]) AS SumAmount FROM [Ticket] WHERE [Ticket].[Enabled] = 1 AND [Ticket].[Quantity] > 0 AND [Ticket].[Cancelled] = 1 AND [Ticket].[K] >= 82 "; /* money to promoter bank accounts */ Query sumMoneyToPromoterBankAccountsQuery = new Query(); sumMoneyToPromoterBankAccountsQuery.OverideSql = @"SELECT SUM(RefundTransfer.Amount) AS SumAmount FROM Transfer PaymentTransfer INNER JOIN Transfer RefundTransfer ON PaymentTransfer.K = RefundTransfer.TransferRefundedK WHERE PaymentTransfer.Method = 5 AND RefundTransfer.Type = 2 AND PaymentTransfer.Type = 1 AND RefundTransfer.Method = 2 AND RefundTransfer.Status = 2"; /* money applied to DSI invoices */ Query sumTicketMoneyAppliedToInvoicesQuery = new Query(); sumTicketMoneyAppliedToInvoicesQuery.OverideSql = "SELECT SUM(IT.Amount) AS SumAmount FROM InvoiceTransfer IT INNER JOIN Transfer T ON IT.TransferK = T.K WHERE T.Method = 5 AND T.Type = 1 AND T.Status = 2"; /* Addition of CardNet delay to figures, as requested by Gee on Jan 7, 08 */ Query sumTicketMoneyCardnetDelayQuery = new Query(); sumTicketMoneyCardnetDelayQuery.OverideSql = "SELECT SUM([Ticket].[Price]) AS SumAmount FROM [Ticket] WHERE [Ticket].[Enabled] = 1 AND [Ticket].[Quantity] > 0 AND ([Ticket].[Cancelled] = 0 OR [Ticket].[CancelledDateTime] >= " + Cambro.Misc.Db.Dt(Utilities.CardnetDelay()) + ") AND [Ticket].[K] >= 82 AND [Ticket].[BuyDateTime] < " + Cambro.Misc.Db.Dt(Utilities.CardnetDelay()); try { TicketSet ts = new TicketSet(sumTicketMoneyQuery); if (ts.Count == 1) { ticketMoney = Convert.ToDouble(ts[0].ExtraSelectElements["SumAmount"]); } } catch { } try { TicketSet ts = new TicketSet(sumTicketMoneyCancelledQuery); if (ts.Count == 1) { ticketMoneyCencelled = Convert.ToDouble(ts[0].ExtraSelectElements["SumAmount"]); } } catch { } try { TicketPromoterEventSet tpes = new TicketPromoterEventSet(sumTicketMoneyCardnetDelayQuery); if (tpes.Count == 1) { ticketMoneyWithCardnetDelay = Convert.ToDouble(tpes[0].ExtraSelectElements["SumAmount"]); } } catch { } try { TransferSet trans = new TransferSet(sumMoneyToPromoterBankAccountsQuery); if (trans.Count == 1) { ticketMoneyToPromoterBankAccounts = -1 * Convert.ToDouble(trans[0].ExtraSelectElements["SumAmount"]); } } catch { } try { InvoiceTransferSet its = new InvoiceTransferSet(sumTicketMoneyAppliedToInvoicesQuery); if (its.Count == 1) { ticketMoneyAppliedToInvoices = Convert.ToDouble(its[0].ExtraSelectElements["SumAmount"]); } } catch { } ticketMoneyReserve = ticketMoneyWithCardnetDelay - ticketMoneyToPromoterBankAccounts - ticketMoneyAppliedToInvoices; System.Net.Mail.SmtpClient c = new System.Net.Mail.SmtpClient(); c.Host = Common.Properties.GetDefaultSmtpServer(); System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage(); m.Body = "<p>Ticket money earnt: " + ticketMoney.ToString("c") + "</p>" + "<p>Ticket money cancelled: " + ticketMoneyCencelled.ToString("c") + "</p>" + "<p>Ticket money earnt with cardnet delay: " + ticketMoneyWithCardnetDelay.ToString("c") + "</p>" + "<p>Ticket money to promoter bank accounts: " + ticketMoneyToPromoterBankAccounts.ToString("c") + "</p>" + "<p>Ticket money applied to invoices: " + ticketMoneyAppliedToInvoices.ToString("c") + "</p>" + "<p><br><b>Ticket money to be held in reserve: " + ticketMoneyReserve.ToString("c") + "</b></p>"; m.From = new System.Net.Mail.MailAddress(Vars.EMAIL_ADDRESS_MAIL); if (Vars.DevEnv || Vars.IsBeta) { m.Subject = "Test - " + m.Subject; m.Subject += " (" + Time.Now.ToString() + ")"; m.To.Add(Vars.EMAIL_ADDRESS_DEV_TEAM); } else { m.To.Add(Vars.EMAIL_ADDRESS_ACCOUNTS); } // m.To.Add(new System.Net.Mail.MailAddress(Vars.EMAIL_ADDRESS_ACCOUNTS)); m.IsBodyHtml = true; m.Subject = "Money in reserve for ticket funds: " + ticketMoneyReserve.ToString("c"); c.Send(m); Log.Increment(Log.Items.EmailsSent); }
public static void EmailAfterEventTicketFeedback() { DateTime yesterday = DateTime.Today.AddDays(-1); DateTime today = DateTime.Today; try { Query yesterdaysEventTicketsQuery = new Query(new And(new Q(Event.Columns.DateTime, QueryOperator.GreaterThanOrEqualTo, yesterday), new Q(Event.Columns.DateTime, QueryOperator.LessThan, today), Ticket.SoldTicketsQ)); yesterdaysEventTicketsQuery.TableElement = new Join(Ticket.Columns.EventK, Event.Columns.K); yesterdaysEventTicketsQuery.Columns = new ColumnSet(Ticket.Columns.BuyerUsrK, Ticket.Columns.EventK); yesterdaysEventTicketsQuery.GroupBy = new GroupBy(new GroupBy(Ticket.Columns.BuyerUsrK), new GroupBy(Ticket.Columns.EventK)); yesterdaysEventTicketsQuery.OrderBy = new OrderBy(Ticket.Columns.EventK); TicketSet eventTickets = new TicketSet(yesterdaysEventTicketsQuery); foreach (Ticket ticket in eventTickets) { try { Mailer mailer = new Mailer(); mailer.TemplateType = Mailer.TemplateTypes.AnotherSiteUser; mailer.UsrRecipient = ticket.BuyerUsr; mailer.Subject = "DontStayIn ticket feedback for " + ticket.Event.FriendlyName; //string eventUrl = @"[LOGIN(" + ticket.Event.Url(); mailer.Body = "<h2>" + mailer.Subject + @"</h2> <p>Thanks for buying your tickets with us!</p> <p>In order to provide a better service in future, we would like to know if everything went OK with getting into the event...</p> <p>Please click an option below</p> <p style='font-size:14px; font-weight:bold; padding-left:12px;'><a href=""[LOGIN(" + ticket.Event.UrlTicketFeedback(Ticket.FeedbackEnum.Good) + @")]""><img src='http://www.dontstayin.com/gfx/icon-tick-up.png' border='0' height='21' width='26' style='vertical-align:middle;'/>Yes, all OK</a></p> <p style='font-size:14px; font-weight:bold; padding-left:12px;'><a href=""[LOGIN(" + ticket.Event.UrlTicketFeedback(Ticket.FeedbackEnum.Bad) + @")]""><img src='http://www.dontstayin.com/gfx/icon-cross-up.png' border='0' height='21' width='26' style='vertical-align:middle;'/>No, there was a problem</a></p>"; mailer.Send(); } catch (Exception ex) { string additionalDetails = "Occurred in Utilities.EmailAfterEventTicketFeedback(): EventK= " + ticket.EventK.ToString() + ", BuyerUsrK= " + ticket.BuyerUsrK.ToString(); EmailException(ex, additionalDetails, ticket); } } } catch (Exception ex) { EmailException(ex, "Occurred in Utilities.EmailAfterEventTicketFeedback()"); } }
public decimal GetTotalFundsAtDate(DateTime date) { this.promoterEventTicketsSold = null; if (this.TicketsSold != null) { decimal totalFunds = 0; foreach (Ticket ticket in this.TicketsSold) { bool cancelledBeforeDate = ticket.Cancelled && ticket.CancelledDateTime < date; if (!cancelledBeforeDate && ticket.BuyDateTime < date) { totalFunds += ticket.Price; } } return totalFunds; } else return 0; }