Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
		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);


			}
		}
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
		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();
			}
		}
Ejemplo n.º 5
0
		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();
		}
Ejemplo n.º 6
0
 public static int GetQuantity(TicketSet tickets)
 {
     int quantity = 0;
     foreach (Ticket ticket in tickets)
     {
         quantity += ticket.Quantity;
     }
     return quantity;
 }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 8
0
		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);
            }
        }
Ejemplo n.º 9
0
 public static void Refund(Usr actionUsr, TicketSet tickets)
 {
     Refund(actionUsr, tickets, false, DEFAULT_REFUND_CHARGE);
 }
Ejemplo n.º 10
0
		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;
			}
		}
Ejemplo n.º 11
0
		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);
			}
		}
Ejemplo n.º 12
0
		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;
		}
Ejemplo n.º 13
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;
		}
Ejemplo n.º 14
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;
        }
Ejemplo n.º 15
0
 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.");
         }
     }          
 }
Ejemplo n.º 16
0
		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);
		}
Ejemplo n.º 17
0
		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()");
			}
		}
Ejemplo n.º 18
0
		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;
		}