// TODO: Account for failure due to not enough seats being available vs. other circumstances public static ReserveTicketsResult ReserveTickets(string sessionKey, int perfId, int zoneId, SeatsPerPriceTypeCollection seatsPerPriceType, SpecialRequests requests) { List<int> priceTypes = new List<int>(); if (seatsPerPriceType.PriceTypeCount == 1) { priceTypes.Add(seatsPerPriceType[0].PriceTypeId); } else { foreach (SeatsPerPriceType req in seatsPerPriceType) { for (byte s = 0; s < req.NumOfSeats; s++) { priceTypes.Add(req.PriceTypeId); } } } string sPriceTypeValue = String.Join(",", priceTypes); byte numOfSeats = seatsPerPriceType.TotalSeats; int seatsReserved = 0; ReserveTicketsResult result = ReserveTicketsResult.Success; try { seatsReserved = UnsecureTess.ReserveTicketsEx( sWebSessionID: Mask(sessionKey), sPriceType: sPriceTypeValue, iPerformanceNumber: perfId, iNumberOfSeats: numOfSeats, iZone: zoneId, sSpecialRequests: Mask(requests)); } catch (Exception e) { if (e.Message.Contains("Could not find seats")) { result = ReserveTicketsResult.CriteriaNotMet; } else { throw e; } } if (seatsReserved == 0) { result = ReserveTicketsResult.Failed; } else if (seatsReserved < numOfSeats) { throw new ApplicationException( "Ticket reservation encountered an unexpected partial failure."); } return result; }
public static ReserveTicketsResult ReserveTickets(string sessionKey, int perfId, int zoneId, SeatsPerPriceTypeCollection seatsPerPriceType) { return ReserveTickets(sessionKey, perfId, zoneId, seatsPerPriceType, null); }