示例#1
0
        public async Task Save(DomainModels.ShoppingCart shoppingCart)
        {
            using (var conn = new SqlConnection(__connectionString))
            {
                await conn.OpenAsync();

                using (var tx = conn.BeginTransaction())
                {
                    await conn
                    .ExecuteAsync(deleteAllForShoppingCartSql, new { shoppingCart.UserId }, tx)
                    .ConfigureAwait(false);

                    foreach (var item in shoppingCart.Items)
                    {
                        var dbPrice = item.Price?.Amount;
                        await conn
                        .ExecuteAsync(
                            addAllForShoppingCartSql,
                            new {
                            ShoppingCartId = 1, // this is hardcoded so it needs to have a 1 in the corresponding ShoppingCart parent table
                            item.ProductCatalogId,
                            item.ProductName,
                            ProductDescription = item.Description,
                            Amount             = dbPrice.GetValueOrDefault(),
                            Currency           = item.Price?.Currency ?? string.Empty
                        },
                            tx)
                        .ConfigureAwait(false);
                    }

                    tx.Commit();
                }
            }
        }
        public Task <DomainModels.ShoppingCart> Get(int userId)
        {
            if (!__database.ContainsKey(userId))
            {
                __database[userId] = new DomainModels.ShoppingCart(userId);
            }

            return(Task.FromResult(__database[userId]));
        }
 public Task Save(DomainModels.ShoppingCart shoppingCart)
 {
     // Nothing needed. Saving would be needed with a real DB
     __database[shoppingCart.UserId] = shoppingCart;
     return(Task.CompletedTask);
 }