public IHttpActionResult Login(Credentials credentials)
        {
            if (string.IsNullOrEmpty(credentials.Password) || string.IsNullOrEmpty(credentials.Username))
            {
                return(Unauthorized(new AuthenticationHeaderValue(AuthenticationFault.InvalidCredentials.ToString())));
            }

            var authenticationResult = _customerServiceGateway.AuthenticateUser(credentials.Username, credentials.Password);

            if (authenticationResult.Success)
            {
                _authenticationContext.SetAuthenticationCookie(credentials.Username, authenticationResult.Result.Key.CustomerId);

                return(Ok(RestResult <string> .CreateSuccess(string.Empty)));
            }

            AuthenticationFault authenticationFailure = authenticationResult.FaultCode.Value;

            if (authenticationFailure == AuthenticationFault.LogonAttemptsExceeded)
            {
                return(Unauthorized(new AuthenticationHeaderValue(authenticationFailure.ToString())));
            }

            if (authenticationFailure == AuthenticationFault.AccountLocked)
            {
                return(Unauthorized(new AuthenticationHeaderValue(authenticationFailure.ToString())));
            }

            return(Unauthorized(new AuthenticationHeaderValue(AuthenticationFault.InvalidCredentials.ToString())));
        }
Esempio n. 2
0
        public IHttpActionResult GetActiveRaceDayPools()
        {
            IList <Service.RaceDay.Contracts.PoolService.ActivePoolsForRaceDay> activeRaceDayPools = _raceDayServiceGateway.GetActivePoolsForRaceDay();

            //--- FEATURE TOGGLING START--- Remove Qplus from RaceDay
            foreach (var activePoolsForRaceDay in activeRaceDayPools)
            {
                activePoolsForRaceDay.Products = activePoolsForRaceDay.Products.Where(x => x.Product != BetTypeCode.QPlus).ToList();
            }

            // removes all products for Gallop
            foreach (var gallopRaceDay in activeRaceDayPools.Where(pool => pool.SportType == SportType.G))
            {
                gallopRaceDay.Products = new List <ProductForRaceDay>();
            }

            //--- FEATURE TOGGLING END---

            IList <ActivePoolsForRaceDay> activeRaceDays = _mapper.Map <IList <ActivePoolsForRaceDay> >(activeRaceDayPools);

            List <ActivePoolsForRaceDayGroupedByDate> groupedByDate = activeRaceDays
                                                                      .GroupBy(g => g.StartTime.Date)
                                                                      .Select(s => new ActivePoolsForRaceDayGroupedByDate
            {
                Date            = s.Key.Date,
                PoolsForRaceDay = s.OrderBy(x => x.StartTime).ToList()
            })
                                                                      .OrderBy(x => x.Date)
                                                                      .ToList();

            return(Ok(RestResult <List <ActivePoolsForRaceDayGroupedByDate> > .CreateSuccess(groupedByDate)));
        }
Esempio n. 3
0
        public IHttpActionResult GetProgramAdditionForGame(string raceDayKey, BetTypeCode product)
        {
            RaceDayKey raceDay = RaceDayKey.FromString(raceDayKey);

            Service.RaceDay.Contracts.PoolService.ProgramChanges programAdditionForPool = _raceDayServiceGateway.GetProgramChangesForPool(raceDay, product);

            var programChanges = _mapper.Map <ProgramAddition>(programAdditionForPool);

            return(Ok(RestResult <ProgramAddition> .CreateSuccess(_betStatisticsPopulator.Populate(programChanges, raceDay, product))));
        }
Esempio n. 4
0
        public IHttpActionResult GetScratchedStarts(string raceDayKey, BetTypeCode product)
        {
            IDictionary <int, int[]> scratchedStartsByRaceNumber = _raceDayServiceGateway.GetScratchedStartsForPool(RaceDayKey.FromString(raceDayKey), product);

            IList <ScratchedStart> scratchedStarts = scratchedStartsByRaceNumber.SelectMany(scratchesForRace => scratchesForRace.Value.Select(start => new ScratchedStart {
                RaceNumber = scratchesForRace.Key, StartNumber = start
            })).ToList();

            return(Ok(RestResult <IList <ScratchedStart> > .CreateSuccess(scratchedStarts)));
        }
        public IHttpActionResult GetLoggedInUser()
        {
            Customer customer = _customerProvider.GetCurrentCustomer();

            var model = new LoggedInUser
            {
                Username    = customer.Username,
                Segment     = customer.Metadata.Segment.ToString(),
                CustomerKey = customer.Key.CustomerId
            };

            return(Ok(RestResult <LoggedInUser> .CreateSuccess(model)));
        }
        public IHttpActionResult GetNumberOfActiveGames()
        {
            CustomerKey customerKey = _customerProvider.FindCurrentCustomerKey();
            var         betDate     = _betDateProvider.Today;

            var deliveredTicketsCount = _bettingHistoryServiceGateway.GetNumberOfDeliveredTickets(customerKey, betDate);

            var expertOrdersCount = _expertMarketServiceGateway.GetNumberOfNotDeliveredShareOrders(customerKey, betDate);

            var teamGameOrdersCount = _teamGameServiceGateway.GetNumberOfNotDeliveredShareOrders(customerKey, betDate);

            var numberOfActiveGames = deliveredTicketsCount + expertOrdersCount + teamGameOrdersCount;

            return(Ok(RestResult <int> .CreateSuccess(numberOfActiveGames)));
        }
        public IHttpActionResult GetCredit()
        {
            CustomerKey customerKey = _customerProvider.FindCurrentCustomerKey();

            BetLimitStatusAfterBet betLimitStatus = _bettingServiceGateway.GetBetLimitStatusForAmount(customerKey, Money.FromKroner(0));
            VirtualAccount         account        = _virtualAccountServiceGateway.GetAccount(customerKey);

            var model = new Credit
            {
                Balance           = account.Balance.AvailableAmount.Amount,
                RemainingBetLimit = betLimitStatus.LowestLimitRemainder.Amount,
                HasBetLimit       = betLimitStatus.AffectedLimit != BetLimit.LimitNotSet
            };

            return(Ok(RestResult <Credit> .CreateSuccess(model)));
        }
        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
            })));
        }
Esempio n. 10
0
        public IHttpActionResult GetCustomerSupportLinks()
        {
            var startPage   = _contentRepository.Get <StartPage>(ContentReference.StartPage);
            var urlResolver = _serviceLocator.GetInstance <UrlResolver>();

            if (ContentReference.IsNullOrEmpty(startPage.ContentLink) || startPage.AdditionalCustomerSupportLinks == null)
            {
                return(NotFound());
            }

            var model = startPage.AdditionalCustomerSupportLinks.Select(x => new CustomerSupportLink
            {
                Title  = x.Title,
                Target = x.Target,
                Href   = urlResolver.GetUrl(x.Href)
            })
                        .ToList();

            return(Ok(RestResult <IList <CustomerSupportLink> > .CreateSuccess(model)));
        }
Esempio n. 11
0
        public IHttpActionResult GetDoubleOddsPaged(string raceDayKey, int page)
        {
            const int take = 25;
            int       skip = (page - 1) * take;

            IList <DoubleOdds> doubleOdds = _raceDayServiceGateway.GetDoubleOdds(RaceDayKey.FromString(raceDayKey))
                                            .OrderByDescending(x => x.Odds > 0)
                                            .ThenBy(x => x.Odds)
                                            .Skip(skip)
                                            .Take(take + 1)
                                            .ToList();

            var viewmodel = new DoubleOddsPaged
            {
                HasMorePages = doubleOdds.Count == take + 1,
                DoubleOdds   = _mapper.Map <IList <Models.DoubleOdds> >(doubleOdds.Take(take).ToList())
            };

            return(Ok(RestResult <DoubleOddsPaged> .CreateSuccess(viewmodel)));
        }
        public IHttpActionResult GetPrices(BetTypeCode product)
        {
            var prices = _mapper.Map <IEnumerable <PriceInfoForProduct> >(_bettingServiceGateway.GetPricesForAllProducts().Where(x => x.BetType == product));

            return(Ok(RestResult <IEnumerable <PriceInfoForProduct> > .CreateSuccess(prices)));
        }
        public IHttpActionResult Logout()
        {
            _authenticationContext.Logout();

            return(Ok(RestResult <string> .CreateSuccess(string.Empty)));
        }
 public IHttpActionResult IsAuthenticated()
 {
     return(Ok(RestResult <bool> .CreateSuccess(_authenticationContext.IsAuthenticated())));
 }
Esempio n. 15
0
        public IHttpActionResult GetProductsForTimeline(string raceDayKey)
        {
            GamesForRaceDay gamesForRaceDay = _raceDayServiceGateway.GetGamesForRaceDay(RaceDayKey.FromString(raceDayKey));

            return(Ok(RestResult <ProductsForTimeline> .CreateSuccess(_viewModelPopulator.Populate(gamesForRaceDay))));
        }
Esempio n. 16
0
        public IHttpActionResult GetInvestmentForRaceDay(string raceDayKey)
        {
            var totalInvestmentsForRaceDay = _raceDayServiceGateway.GetTotalInvestmentsForRaceDay(RaceDayKey.FromString(raceDayKey));

            return(Ok(RestResult <List <TotalInvestmentForPool> > .CreateSuccess(_mapper.Map <List <TotalInvestmentForPool> >(totalInvestmentsForRaceDay))));
        }
Esempio n. 17
0
        public IHttpActionResult GetProgramForGame(string raceDayKey, BetTypeCode product)
        {
            Service.RaceDay.Contracts.PoolService.Program program = _raceDayServiceGateway.GetProgramForPool(RaceDayKey.FromString(raceDayKey), product);

            return(Ok(RestResult <Models.Program> .CreateSuccess(_mapper.Map <Models.Program>(program))));
        }
        public IHttpActionResult GetTrotFormRowsForRace(string raceDayKey, int raceNumber)
        {
            Service.RaceDay.Contracts.PoolService.FormRows.TrotFormRowsForRace formsRows = _raceDayServiceGateway.GetTrotFormRowsForRace(RaceDayKey.FromString(raceDayKey), raceNumber);

            return(Ok(RestResult <TrotFormRowsForRace> .CreateSuccess(_mapper.Map <TrotFormRowsForRace>(formsRows))));
        }
Esempio n. 19
0
        public IHttpActionResult GetActiveRaceDay(string raceDayKey)
        {
            Service.RaceDay.Contracts.PoolService.ActiveRaceDay activeRaceDay = _raceDayServiceGateway.FindActiveRaceDay(RaceDayKey.FromString(raceDayKey));

            return(Ok(RestResult <ActiveRaceDay> .CreateSuccess(_mapper.Map <ActiveRaceDay>(activeRaceDay))));
        }
        public IHttpActionResult GetWeatherForRaceDay(string raceDayKey)
        {
            Service.RaceDay.Contracts.WeatherService.WeatherForRaceDay weather = _raceDayServiceGateway.GetWeatherForRaceDay(RaceDayKey.FromString(raceDayKey));

            return(Ok(RestResult <WeatherForRaceDay> .CreateSuccess(_mapper.Map <WeatherForRaceDay>(weather))));
        }
Esempio n. 21
0
 public IHttpActionResult GetDepositUrl()
 {
     return(Ok(RestResult <string> .CreateSuccess(_urlSettings.Deposit)));
 }
Esempio n. 22
0
 public IHttpActionResult GetForgotPasswordUrl()
 {
     return(Ok(RestResult <string> .CreateSuccess(_urlSettings.ForgotPassword)));
 }
 public IHttpActionResult IsBettingSystemOpenForBet()
 {
     return(Ok(RestResult <bool> .CreateSuccess(_bettingServiceGateway.IsOpenForBetting())));
 }
Esempio n. 24
0
 public IHttpActionResult GetRegisterUrl()
 {
     return(Ok(RestResult <string> .CreateSuccess(_urlSettings.Register)));
 }
Esempio n. 25
0
 public IHttpActionResult GetBetDateToday()
 {
     return(Ok(RestResult <DateTime> .CreateSuccess(_betDateProvider.Today)));
 }