Merge pull request #1036 from LeeDumond/fix/fix-basket-update

UpdateAllBasketAsync should use the current basket if it exists
This commit is contained in:
Miguel Veloso 2019-05-24 09:37:56 +01:00 committed by GitHub
commit f87ae19bca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 19 deletions

View File

@ -36,15 +36,9 @@ namespace Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator.Controllers
} }
// Retrieve the current basket // Retrieve the current basket
var currentBasket = await _basket.GetByIdAsync(data.BuyerId); var basket = await _basket.GetByIdAsync(data.BuyerId) ?? new BasketData(data.BuyerId);
if (currentBasket == null)
{
currentBasket = new BasketData(data.BuyerId);
}
var catalogItems = await _catalog.GetCatalogItemsAsync(data.Items.Select(x => x.ProductId)); var catalogItems = await _catalog.GetCatalogItemsAsync(data.Items.Select(x => x.ProductId));
var newBasket = new BasketData(data.BuyerId);
foreach (var bitem in data.Items) foreach (var bitem in data.Items)
{ {
@ -54,7 +48,7 @@ namespace Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator.Controllers
return BadRequest($"Basket refers to a non-existing catalog item ({bitem.ProductId})"); return BadRequest($"Basket refers to a non-existing catalog item ({bitem.ProductId})");
} }
newBasket.Items.Add(new BasketDataItem() basket.Items.Add(new BasketDataItem()
{ {
Id = bitem.Id, Id = bitem.Id,
ProductId = catalogItem.Id.ToString(), ProductId = catalogItem.Id.ToString(),
@ -65,9 +59,9 @@ namespace Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator.Controllers
}); });
} }
await _basket.UpdateAsync(newBasket); await _basket.UpdateAsync(basket);
return newBasket; return basket;
} }
[HttpPut] [HttpPut]

View File

@ -36,14 +36,9 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Controllers
} }
// Retrieve the current basket // Retrieve the current basket
var currentBasket = await _basket.GetByIdAsync(data.BuyerId); var basket = await _basket.GetByIdAsync(data.BuyerId) ?? new BasketData(data.BuyerId);
if (currentBasket == null)
{
currentBasket = new BasketData(data.BuyerId);
}
var catalogItems = await _catalog.GetCatalogItemsAsync(data.Items.Select(x => x.ProductId)); var catalogItems = await _catalog.GetCatalogItemsAsync(data.Items.Select(x => x.ProductId));
var newBasket = new BasketData(data.BuyerId);
foreach (var bitem in data.Items) foreach (var bitem in data.Items)
{ {
@ -53,7 +48,7 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Controllers
return BadRequest($"Basket refers to a non-existing catalog item ({bitem.ProductId})"); return BadRequest($"Basket refers to a non-existing catalog item ({bitem.ProductId})");
} }
newBasket.Items.Add(new BasketDataItem() basket.Items.Add(new BasketDataItem()
{ {
Id = bitem.Id, Id = bitem.Id,
ProductId = catalogItem.Id.ToString(), ProductId = catalogItem.Id.ToString(),
@ -64,9 +59,9 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator.Controllers
}); });
} }
await _basket.UpdateAsync(newBasket); await _basket.UpdateAsync(basket);
return newBasket; return basket;
} }
[HttpPut] [HttpPut]