/// <summary>
 /// Initialize repositories
 /// </summary>
 /// <param name="httpContextAccessor"></param>
 /// <param name="cartRepository"></param>
 /// <param name="cartItemRepository"></param>
 /// <param name="productRepository"></param>
 public CartService(IHttpContextAccessor httpContextAccessor,
                    ICartRepository cartRepository,
                    ICartDetailsRepository cartItemRepository,
                    IProductRepository productRepository)
 {
     _httpContext        = httpContextAccessor.HttpContext;
     _cartRepository     = cartRepository;
     _cartItemRepository = cartItemRepository;
     _productRepository  = productRepository;
 }
 /// <summary>
 /// Initialize repositories and cart service
 /// </summary>
 /// <param name="customerRepository"></param>
 /// <param name="addressRepository"></param>
 /// <param name="orderRepository"></param>
 /// <param name="orderItemRepository"></param>
 /// <param name="cartRepository"></param>
 /// <param name="cartItemRepository"></param>
 /// <param name="cartService"></param>
 public CheckoutService(ICustomerRepository customerRepository,
                        IShipmentRepository addressRepository,
                        IOrderRepository orderRepository,
                        IOrderDetailsRepository orderItemRepository,
                        ICartRepository cartRepository,
                        ICartDetailsRepository cartItemRepository,
                        ICartService cartService)
 {
     _customerRepository  = customerRepository;
     _shipmentRepository  = addressRepository;
     _orderRepository     = orderRepository;
     _orderItemRepository = orderItemRepository;
     _cartRepository      = cartRepository;
     _cartItemRepository  = cartItemRepository;
     _cartService         = cartService;
 }
        // GET: api/<ShoppingCartController>

        public ShoppingCartController(ICartDetailsRepository cartRepository)
        {
            _cartRepository = cartRepository;//why doing this inside a constructor ? the dependency provided inside startup.cs file sends instance of class that needs to be implented which gets assigned to interface reference.
        }
 public CustomerService(ICustomerRepository context, IProductRepository product, ICartDetailsRepository cartDetailsRepository)
 {
     _customerRepository     = context;
     this._productRepository = product;
     _cartDetailsRepository  = cartDetailsRepository;
 }