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); }