예제 #1
0
        public DataContract.PurchaseTicketResponse PurchaseTicket(DataContract.PurchaseTicketRequest request)
        {
            DataContract.PurchaseTicketResponse response = new DataContract.PurchaseTicketResponse();
            try
            {
                if (_purchaseHistory.IsUniqueResponse(request.CorrelationId))
                {
                    Model.Event ticketEvent = this._repository.FindBy(new Guid(request.EventId));
                    var         reservation = ticketEvent.GetReservationWith(new Guid(request.ReservationId));
                    if (ticketEvent.CanPurchaseTicketWith(reservation.Id))
                    {
                        var purchase = ticketEvent.PurchaseTicketWith(reservation.Id);
                        this._repository.Save(ticketEvent);
                        response         = purchase.ConvertToTicketPurchaseResponse();
                        response.Success = true;
                    }
                    else
                    {
                        response.Success = false;
                        response.Message = "can no longer purchase with this reservation";
                    }
                }
                else
                {
                    response = _purchaseHistory.RetrievePreviousResponseFor(request.CorrelationId);
                }
            }
            catch (Exception ex)
            {
                response.Success = false;
                response.Message = ErrorLog.GenerateErrorRef(ex);
            }

            return(response);
        }
예제 #2
0
 public static DataContract.PurchaseTicketResponse ConvertToTicketPurchaseResponse(this Model.TicketPurchase purchase)
 {
     DataContract.PurchaseTicketResponse response = new DataContract.PurchaseTicketResponse();
     response.EventId      = purchase.Event.Id.ToString();
     response.EventName    = purchase.Event.Name;
     response.NumOfTickets = purchase.TicketQuantity;
     response.TicketId     = purchase.Id.ToString();
     return(response);
 }