public IHttpActionResult ProcessPurchase(PurchaseRequest purchase) { BetData betData = BetData.Parse(purchase.BetData); CustomerKey customerKey = _customerProvider.GetCurrentCustomer().Key; PurchaseErrorCode errorCode = ValidatePurchaseRequest(customerKey, betData.EstimatedTotalPrice); if (errorCode != PurchaseErrorCode.NotSet) { return(Ok(RestResult <string> .CreateFailed(errorCode.ToString()))); } Guid purchaseIdentifier = Guid.NewGuid(); CommandResult placeBetResult = _bettingServiceGateway.Execute(new PlaceNormalBetForMultiLegGame { PurchaseIdentifier = purchaseIdentifier, CustomerPlacingBet = _customerServiceGateway.GetBettingReference(GetCustomerBettingInfo(customerKey)), RaceDay = betData.RaceDayKey, Product = betData.BetTypeCode, FirstRaceNumber = betData.RaceNumber, IsFirstPrizeOnlyBet = betData.IsFirstPrizeOnlyBet, LegMarks = betData.Marks.ToDictionary(mark => mark.LegNumber, mark => mark.Marks), RowPrice = Money.FromOere(betData.RowPrice) }); if (!placeBetResult.IsExecuted) { return(Ok(RestResult <string> .CreateFailed(placeBetResult.ErrorCode.ToString(), placeBetResult.Message))); } TicketKey ticketKey = _bettingServiceGateway.GetTicketSerialNumber(purchaseIdentifier); SingleBetItem betItem = _bettingHistoryServiceGateway.GetBetItem(new TicketKey(ticketKey.TicketSerialNumber)); return(Ok(RestResult <PurchaseReceipt> .CreateSuccess(new PurchaseReceipt { TicketSerialNumber = ticketKey.TicketSerialNumber, RaceDay = RaceDayKey.ToString(betData.RaceDayKey), Product = betData.BetTypeCode.ToString(), SellFee = betItem.TicketReceipt.SellFee.Amount, BetCost = betItem.TicketReceipt.BetCost.Amount, PurchaseTime = betItem.TicketReceipt.BetTimeSold }))); }
public IHttpActionResult GetSettings() { Customer currentCustomer = _customerProvider.GetCurrentCustomer(); if (currentCustomer == null) { return(Ok(RestResult <string> .CreateFailed())); } PrizeNotificationCustomerSettings prizeNotifications = _prizeNotificationGateway.GetCustomerSettings(currentCustomer.Key); return(Ok(RestResult <PrizeNotificationSettings> .CreateSuccess(new PrizeNotificationSettings { WantsSms = prizeNotifications.SendSms, WantsEmail = prizeNotifications.SendEmail, HasRegisteredEmail = !String.IsNullOrEmpty(currentCustomer.EmailAddress), HasRegisteredMobile = !String.IsNullOrEmpty(currentCustomer.MobileNumber), MyPageUrl = _urlSettings.MyPage }))); }