11 changed files with 107 additions and 11 deletions
@ -0,0 +1,10 @@ |
|||||
|
using System.Security.Claims; |
||||
|
|
||||
|
namespace ApplicationCore.Entities |
||||
|
{ |
||||
|
public class ApplicationUser : ClaimsIdentity |
||||
|
{ |
||||
|
public string UserId { get; set; } |
||||
|
public string UserName { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -1,7 +1,7 @@ |
|||||
namespace Microsoft.eShopWeb.ApplicationCore.Entities |
namespace Microsoft.eShopWeb.ApplicationCore.Entities |
||||
{ |
{ |
||||
public class BaseEntity |
public class BaseEntity<T> |
||||
{ |
{ |
||||
public int Id { get; set; } |
public T Id { get; set; } |
||||
} |
} |
||||
} |
} |
||||
|
|||||
@ -0,0 +1,10 @@ |
|||||
|
using System.Collections.Generic; |
||||
|
|
||||
|
namespace Microsoft.eShopWeb.ApplicationCore.Entities |
||||
|
{ |
||||
|
public class Basket : BaseEntity<string> |
||||
|
{ |
||||
|
public string BuyerId { get; set; } |
||||
|
public List<BasketItem> Items { get; set; } = new List<BasketItem>(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
namespace Microsoft.eShopWeb.ApplicationCore.Entities |
||||
|
{ |
||||
|
public class BasketItem : BaseEntity<string> |
||||
|
{ |
||||
|
public int ProductId { get; set; } |
||||
|
public decimal UnitPrice { get; set; } |
||||
|
public int Quantity { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,18 @@ |
|||||
|
using ApplicationCore.Entities; |
||||
|
using Microsoft.eShopWeb.ApplicationCore.Entities; |
||||
|
using System.Security.Principal; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace ApplicationCore.Interfaces |
||||
|
{ |
||||
|
public interface IBasketService |
||||
|
{ |
||||
|
Task<Basket> GetBasket(ApplicationUser user); |
||||
|
} |
||||
|
|
||||
|
public interface IIdentityParser<T> |
||||
|
{ |
||||
|
T Parse(IPrincipal principal); |
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,53 @@ |
|||||
|
using Microsoft.eShopWeb.Services; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using System.Threading.Tasks; |
||||
|
using ApplicationCore.Interfaces; |
||||
|
using ApplicationCore.Entities; |
||||
|
using Microsoft.eShopWeb.ApplicationCore.Entities; |
||||
|
using System; |
||||
|
|
||||
|
namespace Microsoft.eShopWeb.Controllers |
||||
|
{ |
||||
|
public class CartController : Controller |
||||
|
{ |
||||
|
private readonly ICatalogService _catalogSvc; |
||||
|
private readonly IBasketService _basketSvc; |
||||
|
private readonly IIdentityParser<ApplicationUser> _appUserParser; |
||||
|
|
||||
|
public CartController(IBasketService basketSvc, |
||||
|
IIdentityParser<ApplicationUser> appUserParser) |
||||
|
{ |
||||
|
//_catalogSvc = catalogSvc;
|
||||
|
_basketSvc = basketSvc; |
||||
|
_appUserParser = appUserParser; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// GET: /<controller>/
|
||||
|
public async Task<IActionResult> Index() |
||||
|
{ |
||||
|
var user = _appUserParser.Parse(HttpContext.User); |
||||
|
var viewmodel = await _basketSvc.GetBasket(user); |
||||
|
|
||||
|
return View(viewmodel); |
||||
|
} |
||||
|
|
||||
|
public async Task<IActionResult> AddToCart(CatalogItem productDetails) |
||||
|
{ |
||||
|
if (productDetails.Id != null) |
||||
|
{ |
||||
|
var user = _appUserParser.Parse(HttpContext.User); |
||||
|
var product = new BasketItem() |
||||
|
{ |
||||
|
Id = Guid.NewGuid().ToString(), |
||||
|
Quantity = 1, |
||||
|
UnitPrice = productDetails.Price, |
||||
|
ProductId = productDetails.Id |
||||
|
}; |
||||
|
//await _basketSvc.AddItemToBasket(user, product);
|
||||
|
} |
||||
|
return RedirectToAction("Index", "Catalog"); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue