예제 #1
0
        static void Main(string[] args)
        {
            EventTickets.Contracts.ITicketService myService;

            myService = new TicketServiceClientProxy();
            //EventTickets.Service.TicketService myService = new TicketService();
            //IEventRepository myRepository = new InMemoryRepository();

            //foreach (Event x in myRepository)
            //    Debug.Print(x.Id.ToString());


            ReserveTicketResponse reservation = myService.ReserveTicket(new ReserveTicketRequest
            {
                EventId        = "7632ef29-64aa-4fc7-90aa-d86cf735f1a8",
                TicketQuantity = 3
            });

            Console.WriteLine(reservation.Message ?? "OK");
            Console.WriteLine("{0} {1}", reservation.ReservationNumber, reservation.NoOfTickets);

            PurchaseTicketResponse purchase = myService.PurchaseTicket(new PurchaseTicketRequest
            {
                ReservationId = reservation.ReservationNumber,
                EventId       = reservation.EventId,
            });

            Console.WriteLine("{0} {1}", purchase.Message ?? "OK", purchase.TicketId);

            Console.Read();
        }
        public TicketReservationPresentation ReserveTicketsFor(string EventId, int NoOfTkts)
        {
            TicketReservationPresentation reservation = new TicketReservationPresentation();
            ReserveTicketResponse         response    = new ReserveTicketResponse();
            ReserveTicketRequest          request     = new ReserveTicketRequest();

            request.EventId        = EventId;
            request.TicketQuantity = NoOfTkts;

            response = _ticketService.ReserveTicket(request);

            if (response.Success)
            {
                reservation.TicketWasSuccessfullyReserved = true;
                reservation.ReservationId = response.ReservationNumber;
                reservation.ExpiryDate    = response.ExpirationDate;
                reservation.EventId       = response.EventId;
                reservation.Description   = String.Format("{0} ticket(s) reserved for {1}.<br/><small>This reservation will expire on {2} at {3}.</small>", response.NoOfTickets, response.EventName, response.ExpirationDate.ToLongDateString(), response.ExpirationDate.ToLongTimeString());
            }
            else
            {
                reservation.TicketWasSuccessfullyReserved = false;
                reservation.Description = response.Message;
            }

            return(reservation);
        }
        /// <summary>
        /// 订票
        /// </summary>
        /// <param name="reserveTicketRequest">订票请求</param>
        /// <returns></returns>
        public ReserveTicketResponse ReserveTicket(ReserveTicketRequest reserveTicketRequest)
        {
            ReserveTicketResponse response = new ReserveTicketResponse();

            try
            {
                //1 检索与请求的赛事相关的赛事
                Event             my_Event = _eventRepository.FindBy(new Guid(reserveTicketRequest.EventId));
                TicketReservation reservation;
                //2 判断是否有传入的请求中所要求的预定票数
                if (my_Event.CanReserveTicket(reserveTicketRequest.TicketQuantity))
                {
                    //2.1 预定指定数量的门票
                    reservation = my_Event.ReserveTicket(reserveTicketRequest.TicketQuantity);
                    _eventRepository.Save(my_Event);
                    //获取预定门票响应
                    response         = reservation.ConvertToReserveTicketResponse();
                    response.Success = true;
                }
                else
                {
                    response.Success = false;
                    response.Message = String.Format("There are {0} ticket(s) available.", my_Event.AvailableAllocation());
                }
            }
            catch (Exception ex)
            {
                // Shield Exceptions
                response.Message = ErrorLog.GenerateErrorRefMessageAndLog(ex);
                response.Success = false;
            }
            return(response);
        }
예제 #4
0
        public ReserveTicketResponse ReserveTicket(ReserveTicketRequest reserveTicketRequest)
        {
            ReserveTicketResponse response = new ReserveTicketResponse();

            try
            {
                Event             Event = _eventRepository.FindBy(new Guid(reserveTicketRequest.EventId));
                TicketReservation reservation;

                if (Event.CanReserveTicket(reserveTicketRequest.TicketQuantity))
                {
                    reservation = Event.ReserveTicket(reserveTicketRequest.TicketQuantity);
                    _eventRepository.Save(Event);
                    response         = reservation.ConvertToReserveTicketResponse();
                    response.Success = true;
                }
                else
                {
                    response.Success = false;
                    response.Message = String.Format("There are {0} ticket(s) available.", Event.AvailableAllocation());
                }
            }
            catch (Exception ex)
            {
                // Shield Exceptions
                response.Message = ErrorLog.GenerateErrorRefMessageAndLog(ex);
                response.Success = false;
            }
            return(response);
        }
예제 #5
0
        public DataContract.ReserveTicketResponse ReserveTicket(DataContract.ReserveTicketRequest reserveTicketRequest)
        {
            foreach (Event x in _eventRepository)
            {
                Debug.Print(x.Id.ToString());
            }

            ReserveTicketResponse response = new ReserveTicketResponse();

            try
            {
                Event Event = _eventRepository.FindBy(
                    new Guid(reserveTicketRequest.EventId));
                TicketReservation reservation;

                if (Event.CanReserveTicket(reserveTicketRequest.TicketQuantity))
                {
                    reservation = Event.ReserveTicket(reserveTicketRequest.TicketQuantity);
                    _eventRepository.Save(Event);
                    response         = reservation.ConvertToReserveTicketResponse();
                    response.Success = true;
                }
                else
                {
                    response.Success = false;
                    response.Message = String.Format("There are {0} tickets available ", Event.AvailableAllocation());
                }
            }
            catch (Exception ex)
            {
                response.Success = false;
                response.Message = ErrorLog.GenerateErrorRefMessageAndLog(ex);
            }
            return(response);
        }
        public static ReserveTicketResponse ConvertToReserveTicketResponse(this TicketReservation reservation)
        {
            ReserveTicketResponse response = new ReserveTicketResponse();

            response.EventId           = reservation.Event.Id.ToString();
            response.EventName         = reservation.Event.Name;
            response.ExpirationDate    = reservation.ExpiryTime;
            response.NoOfTickets       = reservation.TicketQuantity;
            response.ReservationNumber = reservation.Id.ToString();

            return(response);
        }