* transfer basket on login

* review page

* unit tests for TransferBasketAsync
This commit is contained in:
yigith
2020-06-25 03:48:23 +03:00
committed by GitHub
parent a4d02d9dad
commit 3b1339787f
12 changed files with 254 additions and 51 deletions

View File

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