// TODO: account for results more robustly (esp. insufficient available seats) public static ReserveTicketsResult ReserveTicketsSyos(string sessionKey, int perfId, SyosSeatsPerPriceTypeCollection seatsPerPriceType, SpecialRequests requests) { List<int> priceTypes = new List<int>(); List<int> seatIds = new List<int>(); if (seatsPerPriceType.PriceTypeCount == 1) { priceTypes.Add(seatsPerPriceType[0].PriceTypeId); SyosSeatsPerPriceType spt = seatsPerPriceType[0]; for (int c = 0; c < spt.Count; c++) { seatIds.Add(spt[c]); } } else { foreach (SyosSeatsPerPriceType spt in seatsPerPriceType) { for (int c = 0; c < spt.Count; c++) { priceTypes.Add(spt.PriceTypeId); seatIds.Add(spt[c]); } } } ReserveTicketsResult result = ReserveTicketsResult.Success; int seatsReserved = 0; try { seatsReserved = UnsecureTess.ReserveTicketsSpecifiedSeats( sWebSessionID: Mask(sessionKey), sPriceType: String.Join(",", priceTypes), iPerformanceNumber: perfId, iNumberOfSeats: 0, iZone: 0, sSpecialRequests: Mask(requests), RequestedSeats: String.Join(",", seatIds)); } catch (Exception e) { if (e.Message.Contains("One or more of the selected seats")) { result = ReserveTicketsResult.Unavailable; } else { throw e; } } if (seatsReserved == 0) { result = ReserveTicketsResult.Failed; } else if (seatsReserved < seatIds.Count) { result = ReserveTicketsResult.PartialFailure; } return result; }
public static ReserveTicketsResult ReserveTicketsSyos(string sessionKey, int perfId, SyosSeatsPerPriceTypeCollection seatsPerPriceType) { return ReserveTicketsSyos(sessionKey, perfId, seatsPerPriceType, null); }