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()))); }
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))); }
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)))); }
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 }))); }
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))); }
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()))); }
public IHttpActionResult GetProductsForTimeline(string raceDayKey) { GamesForRaceDay gamesForRaceDay = _raceDayServiceGateway.GetGamesForRaceDay(RaceDayKey.FromString(raceDayKey)); return(Ok(RestResult <ProductsForTimeline> .CreateSuccess(_viewModelPopulator.Populate(gamesForRaceDay)))); }
public IHttpActionResult GetInvestmentForRaceDay(string raceDayKey) { var totalInvestmentsForRaceDay = _raceDayServiceGateway.GetTotalInvestmentsForRaceDay(RaceDayKey.FromString(raceDayKey)); return(Ok(RestResult <List <TotalInvestmentForPool> > .CreateSuccess(_mapper.Map <List <TotalInvestmentForPool> >(totalInvestmentsForRaceDay)))); }
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)))); }
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)))); }
public IHttpActionResult GetDepositUrl() { return(Ok(RestResult <string> .CreateSuccess(_urlSettings.Deposit))); }
public IHttpActionResult GetForgotPasswordUrl() { return(Ok(RestResult <string> .CreateSuccess(_urlSettings.ForgotPassword))); }
public IHttpActionResult IsBettingSystemOpenForBet() { return(Ok(RestResult <bool> .CreateSuccess(_bettingServiceGateway.IsOpenForBetting()))); }
public IHttpActionResult GetRegisterUrl() { return(Ok(RestResult <string> .CreateSuccess(_urlSettings.Register))); }
public IHttpActionResult GetBetDateToday() { return(Ok(RestResult <DateTime> .CreateSuccess(_betDateProvider.Today))); }