public async Task RemoveCoinAsync(Guid userId, TypeCoin typeCoin) { var purse = await FirstOrDefaultAsync(x => x.ApplicationUserId == userId, include : sourse => sourse.Include(m => m.PurseCoins)); PurseCoin findCoins = purse.PurseCoins.FirstOrDefault(x => x.TypeCoin == typeCoin); if (findCoins == null || findCoins.Count == 0) { throw new ApplicationException("This coin is not found"); } findCoins.Count--; await Update(purse); }
public async Task AddCoinsAsync(Guid userId, IEnumerable <Coin> coins) { var purse = await FirstOrDefaultAsync(x => x.ApplicationUserId == userId, include : sourse => sourse.Include(m => m.PurseCoins)); foreach (var coinsGroup in coins.GroupBy(x => x.TypeCoin)) { var findCoin = purse.PurseCoins.FirstOrDefault(x => x.TypeCoin == coinsGroup.Key); if (findCoin == null) { findCoin = new PurseCoin { TypeCoin = coinsGroup.Key }; purse.PurseCoins.Add(findCoin); } findCoin.Count += coinsGroup.Count(); } await Update(purse); }