public async Task <XCart> GetCartAsync(long cartID) { var cart = await mDbContext.Carts .AsNoTracking() .Include(c => c.CartItems) .FirstOrDefaultAsync(c => c.ID == cartID); var xCartItems = new List <XCartItem>(); if (cart.CartItems != null && cart.CartItems.Any()) { xCartItems = cart.CartItems.Select(c => new XCartItem ( id: c.ID, productID: c.ProductID.Value, cartID: c.CartID.Value, quantity: c.Quantity.Value )).ToList(); } var xCart = new XCart ( id: cart.ID, userID: cart.UserID.Value, status: cart.Status.ToEXCartStatus(), cartItems: xCartItems ); return(xCart); }
public async Task <XCart> GetCartByUserIDAsync(long userID) { var cart = await mDbContext.Carts .AsNoTracking() .Include(c => c.CartItems) .FirstOrDefaultAsync(c => c.UserID.Value == userID && c.Status == Models.Entity.ECartStatus.Active); if (cart == null) { cart = new Models.Entity.Cart { UserID = userID, Status = Models.Entity.ECartStatus.Active, }; mDbContext.Carts.Add(cart); await mDbContext.SaveChangesAsync(); } var xCartItems = new List <XCartItem>(); if (cart.CartItems != null && cart.CartItems.Any()) { xCartItems = cart.CartItems.Select(c => new XCartItem ( id: c.ID, productID: c.ProductID.Value, cartID: c.CartID.Value, quantity: c.Quantity.Value )).ToList(); } var xCart = new XCart ( id: cart.ID, userID: cart.UserID.Value, status: cart.Status.ToEXCartStatus(), cartItems: xCartItems ); return(xCart); }