Ejemplo n.º 1
0
        public async Task <bool> TryUnboxWaifus(ulong userid, List <Waifu> waifus, uint boxCost)
        {
            return(await _soraTransactor.TryDoInTransactionAsync(async context =>
            {
                var user = await context.Users.FindAsync(userid).ConfigureAwait(false);
                if (user == null)
                {
                    return false;
                }

                // check if enough money
                if (user.Coins < boxCost)
                {
                    return false;
                }
                // Remove money
                user.Coins -= boxCost;
                // Give waifus
                foreach (var waifu in waifus)
                {
                    var userWaifu = user.UserWaifus.FirstOrDefault(x => x.WaifuId == waifu.Id);
                    if (userWaifu != null)
                    {
                        userWaifu.Count++;
                        continue;
                    }
                    // otherwise we have to add it
                    userWaifu = new UserWaifu(userid, waifu.Id, 1);
                    user.UserWaifus.Add(userWaifu);
                }

                await context.SaveChangesAsync().ConfigureAwait(false);
                return true;
            }).ConfigureAwait(false));
        }
Ejemplo n.º 2
0
        private bool RemoveWaifuFromUser(User userdb, UserWaifu waifu)
        {
            userdb.UserWaifus.Remove(waifu);
            if (waifu.WaifuId != userdb.FavoriteWaifu)
            {
                return(false);
            }

            userdb.FavoriteWaifu = -1;
            return(true);
        }