Пример #1
0
 public static ProductButton Create(RaceDayKey raceDay, BetTypeCode product)
 {
     return(new ProductButton
     {
         Url = $"/Spill#/{RaceDayKey.ToString(raceDay)}/{product}/",
         Text = product.PresentAsText()
     });
 }
        public string FindLinkForNextAvailableProduct(string value, string baseLink)
        {
            BetTypeCode product = value.TryCastTo <BetTypeCode>();

            if (product == BetTypeCode.Undefined || !product.IsVGame())
            {
                return(null);
            }

            IList <ActivePoolsForRaceDay> racedays = _raceDayServiceGateway.GetActivePoolsForRaceDay();

            ActivePoolsForRaceDay raceday = racedays
                                            .OrderBy(x => x.StartTime)
                                            .FirstOrDefault(x => x.Products.Any(p => p.Product == product && p.IsOpenForBet));

            return(raceday == null ? null : $"{baseLink}#/{RaceDayKey.ToString(raceday.RaceDay)}/{product}/");
        }
        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
            })));
        }