예제 #1
0
        // 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;
        }
예제 #2
0
        public static ReserveTicketsResult ReserveTickets(string sessionKey, int perfId,
				int zoneId, SeatsPerPriceTypeCollection seatsPerPriceType)
        {
            return ReserveTickets(sessionKey, perfId, zoneId, seatsPerPriceType, null);
        }