401 fix (#408)
* transfer basket on login * review page * unit tests for TransferBasketAsync
This commit is contained in:
@@ -59,11 +59,22 @@ namespace Microsoft.eShopWeb.ApplicationCore.Services
|
||||
{
|
||||
Guard.Against.NullOrEmpty(anonymousId, nameof(anonymousId));
|
||||
Guard.Against.NullOrEmpty(userName, nameof(userName));
|
||||
var basketSpec = new BasketWithItemsSpecification(anonymousId);
|
||||
var basket = (await _basketRepository.FirstOrDefaultAsync(basketSpec));
|
||||
if (basket == null) return;
|
||||
basket.SetNewBuyerId(userName);
|
||||
await _basketRepository.UpdateAsync(basket);
|
||||
var anonymousBasketSpec = new BasketWithItemsSpecification(anonymousId);
|
||||
var anonymousBasket = await _basketRepository.FirstOrDefaultAsync(anonymousBasketSpec);
|
||||
if (anonymousBasket == null) return;
|
||||
var userBasketSpec = new BasketWithItemsSpecification(userName);
|
||||
var userBasket = await _basketRepository.FirstOrDefaultAsync(userBasketSpec);
|
||||
if (userBasket == null)
|
||||
{
|
||||
userBasket = new Basket(userName);
|
||||
await _basketRepository.AddAsync(userBasket);
|
||||
}
|
||||
foreach (var item in anonymousBasket.Items)
|
||||
{
|
||||
userBasket.AddItem(item.CatalogItemId, item.UnitPrice, item.Quantity);
|
||||
}
|
||||
await _basketRepository.UpdateAsync(userBasket);
|
||||
await _basketRepository.DeleteAsync(anonymousBasket);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user