public CreateBetResponse MakeBet(CreateBetRequest betRequest, string clientId) { CreateBetResponse response = new CreateBetResponse(); var currentRoulette = _redisHelper.FindRoulette(betRequest.RouletteId); if (!currentRoulette.IsOpen) { response.Message = "The roulette is Closed"; return(response); } Entities.Bet newBet = new Entities.Bet(); if (betRequest.TypeofBet == Enums.BetType.Color) { newBet.Color = betRequest.Color; newBet.NumbertoBet = null; } else { newBet.Color = Enums.BetColor.None; newBet.NumbertoBet = betRequest.NumbertoBet; } newBet.RouletteId = betRequest.RouletteId; newBet.Type = betRequest.TypeofBet; newBet.MoneytoBet = betRequest.MoneytoBet; _redisHelper.CreateBet(newBet); response.Successful = true; response.Message = "Success"; return(response); }
public ApiWrapperResponse <IList <RouletteInfo> > GetRoulettes(CreateBetRequest request) { LogInfo("Start GetRoulettes"); ApiWrapperResponse <IList <RouletteInfo> > result = new ApiWrapperResponse <IList <RouletteInfo> >(new List <RouletteInfo>(), 1); try { var list_of_values = new List <RouletteInfo>(); var rouletes = RouletteModel.GetRoulettes(); var betboardsdictionary = RouletteModel.GetRoulettesBoards(); list_of_values = rouletes.Select(roulette => { RouletteInfo info = new RouletteInfo(); info.Roulette = roulette; List <BetBoard> list_result = null; betboardsdictionary.TryGetValue(roulette.id.ToString(), out list_result); info.BetBoardList = list_result; return(info); }).ToList(); result = new ApiWrapperResponse <IList <RouletteInfo> >(list_of_values, 1); } catch (Exception ex) { result = new ApiWrapperResponse <IList <RouletteInfo> >(1); LogException("Error GetRoulettes ", ex); } LogInfo("End GetRoulettes " + result.ToString()); return(result); }
public async Task GetBetsByEvent() { var start = DateTime.Now; var end = new DateTime(2015, 1, 25); var close = start.AddDays((end - start).TotalDays / 2); var response1 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); var response2 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); var response3 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); var response4 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); var response5 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); var response6 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); var ev = new CreateEventRequest { AccountId = response1.AccountId, Title = "a a 2015", ImageUri = "localhost", StartDate = start, EndDate = end, CloseDate = close, ExpectedEventCondition = "a a a a a 2015", EventRelationType = EventRelationType.MenyVsMeny, ArbiterAccountIds = new[] { response2.AccountId }, AlgorithmType = AlgorithmType.Exponential, StartRate = 100, LocusRage = 1, EndRate = 0, CurrencyType = CurrencyType.Reputation }; var ceResponse1 = await _eventsService.CreateEvent(ev); var req = new CreateBetRequest { EventId = ceResponse1.EventId, OutcomesType = OutcomesType.NotHappen }; req.AccountId = response3.AccountId; await _betsService.CreateBet(req); req.AccountId = response4.AccountId; await _betsService.CreateBet(req); req.AccountId = response5.AccountId; await _betsService.CreateBet(req); req.AccountId = response6.AccountId; await _betsService.CreateBet(req); var response7 = await _betsService.GetBets(new GetBetsRequest { EventId = req.EventId }); Assert.AreEqual(4, response7.Bets.Count()); }
public IActionResult CreateBet([FromBody] CreateBetRequest bet, [FromHeader] string clientId) { if (!string.IsNullOrEmpty(clientId)) { CreateBetResponse response = _betService.MakeBet(bet, clientId); return(Ok(response)); } else { return(BadRequest("You must enter a Client Id")); } }
public async Task <CreateBetResponse> CreateBet(CreateBetRequest request) { Account account = await this._repositoryAccount.Get(request.AccountId); Event @event = await this._repositoryEvent.Get(request.EventId); OutcomesType outcomesType = await this._repositoryOutcomesType.GetBy(v => v.Name == request.OutcomesType); Bet bet = await this._betsFactory.CreateBet(account, @event, outcomesType, request.BetAmount); return(new CreateBetResponse { BetId = bet.Id }); }
public ApiWrapperResponse <string> CreateBet(CreateBetRequest CreateBetRequest) { LogInfo("Start CreateBet"); ApiWrapperResponse <string> result = new ApiWrapperResponse <string>("", 1); try { StringValues player_id = ""; //this header must be encrypted HttpContext.Request.Headers.TryGetValue("PlayerIdentification", out player_id); if (StringValues.IsNullOrEmpty(player_id)) { result = new ApiWrapperResponse <string>(1, "Invalid Request the player header does not exits."); } else { CreateBetRequest.bet.AssingPlayerId(player_id); if (RouletteModel.PlayerHasCredit(CreateBetRequest.bet)) { RouletteModel.AddBet(CreateBetRequest.id_roulette, CreateBetRequest.bet); } else { result = new ApiWrapperResponse <string>("Player does not have credit to make the Bet.", 1); } } } catch (BetBoardStateException ex) { result = new ApiWrapperResponse <string>(1, ex.Message); LogException("Error CreateBet ", ex); } catch (Exception ex) { result = new ApiWrapperResponse <string>(1); LogException("Error CreateBet ", ex); } LogInfo("End CreateBet " + result.ToString()); return(result); }
public async Task TestCalculateCoupleBetRate() { var start = DateTime.Now; var end = new DateTime(2015, 1, 25); var close = start.AddDays((end - start).TotalDays / 2); var response1 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); var response2 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); var response3 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); var response4 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); var response5 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); var response6 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); var response7 = await _accountingService.CreateAccount(new CreateAccountRequest { Email = this.UniqueEmail }); CreateEventResponse response = await _eventsService.CreateEvent(new CreateEventRequest { AccountId = response1.AccountId, Title = "a a 2015", ImageUri = "localhost", StartDate = start, EndDate = end, CloseDate = close, ExpectedEventCondition = "a a a a a 2015", EventRelationType = EventRelationType.MenyVsMeny, ArbiterAccountIds = new[] { response2.AccountId }, AlgorithmType = AlgorithmType.Exponential, StartRate = 100, LocusRage = 1, EndRate = 0, CurrencyType = CurrencyType.Reputation }); var createBetRequest = new CreateBetRequest { EventId = response.EventId }; var calculateBetRateRequest = new CalculateBetRateRequest { BetAmount = 1, EventId = response.EventId }; calculateBetRateRequest.AccountId = response1.AccountId; calculateBetRateRequest.OutcomesType = OutcomesType.Happen; var calculateBetRateResponse = await _betsService.CalculateBetRate(calculateBetRateRequest); Assert.IsTrue(DateTime.Now > calculateBetRateResponse.CreationDate && DateTime.Now.AddSeconds(-10) < calculateBetRateResponse.CreationDate); Assert.AreEqual(0, calculateBetRateResponse.WinValue); Assert.IsTrue(0.99 < (double)calculateBetRateResponse.Rate); createBetRequest.AccountId = response1.AccountId; createBetRequest.OutcomesType = OutcomesType.Happen; var createBetResponse = await _betsService.CreateBet(createBetRequest); calculateBetRateRequest.AccountId = response3.AccountId; calculateBetRateResponse = await _betsService.CalculateBetRate(calculateBetRateRequest); Assert.AreEqual(0, calculateBetRateResponse.WinValue); Assert.IsTrue(0.99 / 2 < (double)calculateBetRateResponse.Rate); createBetRequest.AccountId = response3.AccountId; createBetResponse = await _betsService.CreateBet(createBetRequest); calculateBetRateRequest.AccountId = response4.AccountId; calculateBetRateResponse = await _betsService.CalculateBetRate(calculateBetRateRequest); Assert.AreEqual(0, calculateBetRateResponse.WinValue); Assert.IsTrue(0.99 / 3 < (double)calculateBetRateResponse.Rate); createBetRequest.AccountId = response4.AccountId; createBetResponse = await _betsService.CreateBet(createBetRequest); calculateBetRateRequest.AccountId = response5.AccountId; calculateBetRateRequest.OutcomesType = OutcomesType.NotHappen; calculateBetRateResponse = await _betsService.CalculateBetRate(calculateBetRateRequest); Assert.AreEqual(3, calculateBetRateResponse.WinValue); Assert.IsTrue(0.99 < (double)calculateBetRateResponse.Rate); createBetRequest.AccountId = response5.AccountId; createBetRequest.OutcomesType = OutcomesType.NotHappen; createBetResponse = await _betsService.CreateBet(createBetRequest); calculateBetRateRequest.AccountId = response6.AccountId; calculateBetRateResponse = await _betsService.CalculateBetRate(calculateBetRateRequest); Assert.IsTrue(1.5m > calculateBetRateResponse.WinValue && calculateBetRateResponse.WinValue > 1.49m); Assert.IsTrue(0.99 / 2 < (double)calculateBetRateResponse.Rate); createBetRequest.AccountId = response6.AccountId; createBetResponse = await _betsService.CreateBet(createBetRequest); calculateBetRateRequest.AccountId = response7.AccountId; calculateBetRateRequest.OutcomesType = OutcomesType.Happen; calculateBetRateResponse = await _betsService.CalculateBetRate(calculateBetRateRequest); Assert.IsTrue(0.5m > calculateBetRateResponse.WinValue && calculateBetRateResponse.WinValue > 0.49m); Assert.IsTrue(0.99 / 4 < (double)calculateBetRateResponse.Rate); }