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); }
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); }