public async Task <ActionResult> PlaceBet(BetViewModel model) { if (ModelState.IsValid) { var betModel = new BetModel { LotId = model.LotId, UserId = User.Identity.GetUserId(), Sum = model.Sum, BetDate = DateTime.UtcNow }; var result = await _betService.AddAsync(betModel); if (result.Succedeed) { TempData["BetAccepted"] = "Your bet has been accepted"; return(RedirectToAction("Details", "Lots", new { id = model.LotId })); } foreach (var error in result.ValidationResults) { ModelState.AddModelError(error.MemberNames.First(), error.ErrorMessage); } } return(PartialView("PlaceBetPartial")); }
public ActionResult EditRate(int rateId, int eventId) { var bets = _businessLayer.GetBets(rateId); var betsmodel = new List <BetViewModel>(); for (int i = 0; i < bets.Count; i++) { var model = new BetViewModel() { Bet = bets[i] }; if (bets[i].ResultType == "Score") { var score = bets[i].ResultValue.Split(':'); model.Score1 = int.Parse(score[0]); model.Score2 = int.Parse(score[1]); } betsmodel.Add(model); } var sportEvent = _businessLayer.GetSportEvent(eventId); BetsViewModel viewModel = new BetsViewModel() { Bets = betsmodel, SportEvent = sportEvent, RateId = rateId }; return(View(viewModel)); }
public async Task <IActionResult> InsureBet([FromBody] BetViewModel model) { string id = User.FindFirst("id").Value; User user = await UserManager.FindByIdAsync(id); return(Ok()); }
public async Task <bool> CompleteBet(BetViewModel betToComplete) { if (betToComplete.Profit == null) { return(false); } return(await GenericUpdateBet(betToComplete)); }
public async Task <bool> UpdateBet(BetViewModel betToUpdate) { if (betToUpdate == null) { return(false); } return(await GenericUpdateBet(betToUpdate)); }
public async Task <bool> AddBet(BetViewModel newBet) { // TODO Map betviewmodel to CreateBetDto var betDto = new CreateBetDto(); var successfullyCreatedBet = await _httpClient.ExecutePostRequest <CreateBetDto, BetDto>(betDto, _configProvider.CreateBetResourceUrl, true); return(successfullyCreatedBet != null); }
public async Task <bool> AddBet(BetViewModel betToAdd) { if (betToAdd == null) { return(false); } var success = await _betService.AddBet(betToAdd); return(success); }
public ActionResult Create(BetViewModel bet) { bool status = false; string message; User loggedinUser = (User)Session["LoggedInUser"]; UpcomingMatch match = (UpcomingMatch)Session["SelectedMatch"]; UserService userservice = new UserService(); if (ModelState.IsValid) { if (bet.Amount > 5) { if (bet.Amount < loggedinUser.Balance) { Bet newbet = new Bet() { UserID = loggedinUser.UserID, MatchID = match.MatchID, Prediction = bet.Prediction, Amount = bet.Amount }; status = betservice.CreateBet(newbet); if (status == true) { message = "Bet succesfully placed!"; userservice.RemoveFunds(loggedinUser, newbet.Amount); } else { message = "Database Error!"; } } else { message = "Not enough funds to make this bet."; } } else { message = "Bet amount must be higher than 5,- or try to use a comma."; } } else { message = "Invalid request."; } ViewBag.Status = status; ViewBag.Message = message; return(View(bet)); }
public async Task <bool> DeleteBet(BetViewModel betToDelete) { if (betToDelete == null) { return(false); } var deleteBetResourceUrl = $"{_configProvider.DeleteBetResourceUlr}/{betToDelete.Id}"; await _httpClient.ExecuteDeleteRequest(deleteBetResourceUrl, true); return(true); }
public async Task AddBet(BetViewModel betViewModel) { var betEntity = new Bet { BetDateUtc = betViewModel.BetDateUtc, BookMaker = new BookMaker { Name = betViewModel.BookMaker.Name }, Profit = betViewModel.Profit }; await _betRepository.AddBet(betEntity); }
public Bet(BetViewModel model, string userId) { TradeId = model.TradeId; BuyerId = model.BuyerId; DateBet = DateTime.UtcNow; DateUpdate = DateTime.UtcNow; IsActual = true; IsRedemption = model.IsRedemption; // LotsCount = model.LotsCount; Price = model.Price; Volume = model.Volume; AspNetUserId = userId; LotId = model.LotId; DateBet = DateTime.UtcNow; LotsCount = model.LotsCount; }
public async Task <bool> UpdateBet(BetViewModel betToUpdate) { if (betToUpdate == null) { return(false); } // TODO Map BetViewModel to UpdateBetDto var updateBetDto = new UpdateBetDto(); var updateResourceUrl = $"{_configProvider.UpdateBetResourceUrl}/{betToUpdate.Id}"; var updatedBet = await _httpClient.ExecutePostRequest <UpdateBetDto, BetDto>(updateBetDto, updateResourceUrl, true); return(updatedBet != null); }
public ActionResult <Bet> Post([FromBody] BetViewModel bet) { var user = rocketDbContext.Users.Find(bet.UserId); var contest = rocketDbContext.Contests.Find(bet.ContestId); if (user == null || contest == null) { throw new KeyNotFoundException(); } if (contest.IsOpen == false) { throw new Exception("Contest is not open !"); } var duplicateExists = rocketDbContext.Bets.Where(x => x.UserId == bet.UserId && x.ContestId == bet.ContestId).SingleOrDefault(); if (duplicateExists != null) { throw new Exception("Duplicate found !"); } var newBet = new Bet { Id = bet.Id, User = user, Contest = contest, Amount = bet.Amount, Outcome = bet.Outcome, Timestamp = DateTimeOffset.Now }; rocketDbContext.Bets.Add(newBet); var newTransaction = new Transaction { Type = 1, Amount = bet.Amount, Comment = $"Placed a bet of {bet.Amount}", UserId = user.Id }; rocketDbContext.Transactions.Add(newTransaction); rocketDbContext.SaveChanges(); return(CreatedAtAction(nameof(Post), new { id = newBet.Id }, newBet)); }
public async Task <IActionResult> InsureBet([FromBody] BetViewModel model) { string id = User.FindFirst("id").Value; User user = await UserManager.FindByIdAsync(id); if (user == null) { return(Unauthorized()); } /* * bool exists = await DataContext.Store.AnyAsync<Bet>(b => * b.SlipNumber == model.SlipNumber * && b.PlatformId == model.PlatformId); * * if (exists) return BadRequest($"The bet slip {model.SlipNumber} has already been registered on this platform."); */ bool alreadyRegistered = await DataContext.Store.AnyAsync <Bet>(b => b.SlipNumber == model.SlipNumber && b.UserId == user.Id && b.PlatformId == model.PlatformId ); // if (alreadyRegistered) return BadRequest($"The bet slip {model.SlipNumber} has already been registered by the current user"); if (user.Wallet.AvailableBalance < model.Stake) { return(BadRequest("Insufficient insurance funds")); } Bet bet = Mapper.Map <Bet>(model); await user.AddBetAsync(bet); await EmailService.SendEmailAsync(user.Email, $"Bet {bet.SlipNumber} has been successfully insured", $"Hello {user.FirstName} your bet ({bet.SlipNumber}) has successfully been insured. Best Of Luck!"); await SmsService.SendMessage(user.FormattedPhoneNumber, $"Hello {user.FirstName} your bet ({bet.SlipNumber}) has successfully been insured. Best Of Luck!"); await PaymentService.CreateTransaction(user.Wallet, model.Stake, TransactionType.Debit, ChannelType.Chop9ja); return(Ok()); }
public ActionResult BetList() { User loggedInUser = (User)Session["LoggedInUser"]; if (loggedInUser != null) { List <Bet> betList = new List <Bet>(); betList = betservice.GetBetsFromUser(loggedInUser); BetViewModel betmodel = new BetViewModel(); betmodel.BetList = betList; return(View(betList)); } else { return(RedirectToAction("Login", "User")); } }
public ActionResult Create() { User loggedInUser = (User)Session["LoggedInUser"]; UpcomingMatch match = (UpcomingMatch)Session["SelectedMatch"]; bool betExists = betservice.CheckIfBetExists(match.MatchID, loggedInUser.UserID); if (betExists == false) { BetViewModel newbet = new BetViewModel { Match = match }; return(View(newbet)); } else { return(RedirectToAction("UpcomingMatches", "Match")); } }
private async Task <bool> GenericUpdateBet(BetViewModel betToComplete) { var success = await _betService.UpdateBet(betToComplete); return(success); }
public Bet(HomeItem data) { BindingContext = betViewModel = new BetViewModel(); NavigationPage.SetHasNavigationBar(this, true); Title = "Bet for " + data.title; BackgroundColor = Color.Bisque; var layout = new StackLayout { Padding = 10, }; var sublayout = new StackLayout { Padding = 10, }; var ItemName = new Label { Text = " Item Name : " + data.title, TextColor = Color.White, BackgroundColor = Color.Blue, FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)) }; // name.SetBinding(Label.TextProperty, BetViewModel.NamePropertyName); sublayout.Children.Add(ItemName); var ItemRef = new Label { Text = "Ref : " + data.id, TextColor = Color.White, BackgroundColor = Color.Blue, FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)) }; var Ref = new Entry { Text = data.id }; betViewModel.ItemRef = data.id; sublayout.Children.Add(ItemRef); var SellerName = new Label { Text = " Seller Name : " + data.Name, TextColor = Color.White, BackgroundColor = Color.Blue, FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)) }; // name.SetBinding(Label.TextProperty, BetViewModel.NamePropertyName); sublayout.Children.Add(SellerName); var currentPrice = new Label { Text = "Current Price : " + data.price, TextColor = Color.White, FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)), BackgroundColor = Color.Blue }; // currentPrice.SetBinding(Entry.TextProperty, data.description); sublayout.Children.Add(currentPrice); var Description = new Label { Text = "Description : " + data.description, TextColor = Color.White, FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)), BackgroundColor = Color.Blue }; // currentPrice.SetBinding(Entry.TextProperty, data.description); sublayout.Children.Add(Description); layout.Children.Add(sublayout); var newPrice = new Entry { Placeholder = "Enter Price", TextColor = Color.Gray, Text = "", Keyboard = Keyboard.Numeric }; newPrice.SetBinding(Entry.TextProperty, BetViewModel.PricePropertyName); NumericValidationBehavior.SetAttachBehavior(newPrice, true); layout.Children.Add(newPrice); var BetButton = new Button { Text = "Bet", TextColor = Color.White, BackgroundColor = Color.LawnGreen }; BetButton.SetBinding(Button.CommandProperty, BetViewModel.BetCommandPropertyName); layout.Children.Add(BetButton); Content = layout; }