I am watching a tutorial about ECommerce Website with .Net Core - and the project is of type Web Assembly Blazor and I checked the .NET CORE Hosted, so the project spited to Client, Server and Sheared.
And the Cart model is consists of CartId, ProductId and UserId.
public class CartItem
{
public int CartId { get; set; }
public int UserId { get; set; }
public int ProductId { get; set; }
public int Quantity { get; set; } = 1;
}
When the instructor implemented the Cart Model he was using the local storage only on the client side and he gets the Product details with a one server Call
Server service
public interface ICartService
{
Task<ServiceResponse<List<CartProductResponse>>> GetCartProducts(List<CartItem> cartItems);
}
Client service
public interface ICartService
{
event Action OnChange;
Task AddToCart(CartItem cartItem);
Task<List<CartItem>> GetCartItems();
Task<List<CartProductResponse>> GetCartProducts();
Task RemoveProductFromCart(int productId, int productTypeId);
Task UpdateQuantity(CartProductResponse product);
}
So until now every thing make sense in my brian, all CURD operations are mainly on the Client side. But after he did the migration of local storage to the database. The CRUD operations are on both client and server side
Server service
public interface ICartService
{
Task<ServiceResponse<List<CartProductResponse>>> GetCartProducts(List<CartItem> cartItems);
Task<ServiceResponse<List<CartProductResponse>>> StoreCartItems(List<CartItem> cartItems);
Task<ServiceResponse<int>> GetCartItemsCount();
Task<ServiceResponse<List<CartProductResponse>>> GetDbCartProducts();
Task<ServiceResponse<bool>> AddToCart(CartItem cartItem);
Task<ServiceResponse<bool>> UpdateQuantity(CartItem cartItem);
Task<ServiceResponse<bool>> RemoveItemFromCart(int productId, int productTypeId);
}
Client service
public interface ICartService
{
event Action OnChange;
Task AddToCart(CartItem cartItem);
Task<List<CartProductResponse>> GetCartProducts();
Task RemoveProductFromCart(int productId, int productTypeId);
Task UpdateQuantity(CartProductResponse product);
Task StoreCartItems(bool emptyLocalCart);
Task GetCartItemsCount();
}
My questions is:
Is that Ok/practical? having a call to the server on each cart change/update?
My suggestion:
if we could update the server side on section ends or on checkout only, but i have no idea if this possible or not
Aucun commentaire:
Enregistrer un commentaire