namespace Grand.Domain.Orders;

/// <summary>
///     Represents a shopping cart
/// </summary>
public static class ShoppingCartExtensions
{
    /// <summary>
    ///     Indicates whether the shopping cart requires shipping
    /// </summary>
    /// <param name="shoppingCart">Shopping cart</param>
    /// <returns>True if the shopping cart requires shipping; otherwise, false.</returns>
    public static bool RequiresShipping(this IList<ShoppingCartItem> shoppingCart)
    {
        foreach (var shoppingCartItem in shoppingCart)
            if (shoppingCartItem.IsShipEnabled)
                return true;
        return false;
    }

    public static IEnumerable<ShoppingCartItem> LimitPerStore(this IEnumerable<ShoppingCartItem> cart,
        bool cartsSharedBetweenStores, string storeId)
    {
        if (cartsSharedBetweenStores)
            return cart;

        return cart.Where(x => x.StoreId == storeId);
    }
}