private async Task UpdateUser(PlacedBet firstUserBet, int point, int place, BetUser user)
        {
            var placement = new FinishedBetPlacement
            {
                BetUserId = firstUserBet.BetUserId,
                BetId     = firstUserBet.BetId,
                Place     = place
            };

            if (user.Placements == null)
            {
                user.Placements = new List <FinishedBetPlacement> {
                    placement
                }
            }
            ;
            else
            {
                user.Placements.Add(placement);
            }

            user.Points += point;

            await _userBetRepository.UpdateUser(user);
        }
Exemple #2
0
        public async Task UpdatePlacedBet(PlacedBet userBet)
        {
            var entity = await _set.FindAsync(userBet.Id);

            if (entity != null)
            {
                _context.Entry(entity).CurrentValues.SetValues(userBet);
                await _context.SaveChangesAsync();
            }
        }
Exemple #3
0
 public async Task AddPlacedBet(PlacedBet userBet)
 {
     try
     {
         _set.Add(userBet);
         await _context.SaveChangesAsync();
     }
     catch (Exception e)
     {
         var s = e;
     }
 }
Exemple #4
0
        public async Task Bet(string shortName, string price)
        {
            var user = Context.User as SocketGuildUser;
            var bet  = await _betRepository.Getbet(shortName.ToLower().Trim());

            if (bet == null)
            {
                await ReplyAsync($"Bet Doesn't exist"); return;
            }
            if (bet.Date < DateTimeOffset.Now)
            {
                await ReplyAsync($"Bet is already finished"); return;
            }
            if (bet.Locked < DateTimeOffset.Now)
            {
                await ReplyAsync($"Bet is locked"); return;
            }

            if (!int.TryParse(price.Trim(), out int priceDTO))
            {
                await ReplyAsync($"Price is incorrect"); return;
            }

            var exists = await _placedUserBetRepository.PlacedBetExists(bet.BetId, user.Id);

            if (exists)
            {
                await ReplyAsync($"You can't bet twice"); return;
            }

            var userExists = await _betUserRepository.GetBetUser(user.Id);

            if (userExists == null)
            {
                await _betUserRepository.AddBetUser(new BetUser { BetUserId = user.Id, Name = user.Username, Points = 0 });
            }

            var userBet = new PlacedBet
            {
                Price     = priceDTO,
                Name      = user.Username,
                BetId     = bet.BetId,
                BetUserId = user.Id,
                BetPlaced = DateTimeOffset.Now
            };

            await _placedUserBetRepository.AddPlacedBet(userBet);

            await ReplyAsync($"**{userBet.Name}** | Price: ${priceDTO:#,##0} at {bet.Date.ToString("dd/M/yyyy", CultureInfo.GetCultureInfo("nb-NO"))}");
        }
Exemple #5
0
        public async Task <bool> MakeBet(int userId, int betResultId, int summa)
        {
            var betResultsRepos = GetRepository <BetResult>();
            var userService     = _serviveFactory.GetUserService(_database);
            var placedBets      = GetRepository <PlacedBet>();

            var user = userService.Get(x => x.Id == userId && x.Score >= summa).FirstOrDefault();

            if (user == null && user.Score >= summa && summa > 0)
            {
                return(false);
            }

            var betResult = betResultsRepos.Get(x => x.Id == betResultId).FirstOrDefault();

            if (betResult == null)
            {
                return(false);
            }

            int checkExistPlace = placedBets
                                  .Get(x => x.BetResult.BetId == betResult.BetId &&
                                       x.UserId == userId).Count();

            if (checkExistPlace != 0)
            {
                return(false);
            }

            user.Score -= summa;
            await userService.Edit(user);

            var newPlacedBet = new PlacedBet()
            {
                BetResultId = betResult.Id,
                DataPlaced  = DateTime.Now,
                Summa       = summa,
                UserId      = user.Id,
                User        = user,
                BetResult   = betResult
            };

            placedBets.Insert(newPlacedBet);
            await _database.Save();

            return(true);
        }