**THIS REPO IS BEING CONSIDERED FOR OWNERSHIP TRANSFER, PLEASE SEE HERE: https://github.com/moltin/laravel-cart/issues/62#issuecomment-328447136**

Laravel Shopping Cart Package
============

Laravel Facade and Service Provider for Moltin\Cart

Installation
---
via Composer:
```
$ composer require moltin/laravel-cart
```

Add the following to your app/config/app.php to the service providers array:
```php
'Moltin\Cart\CartServiceProvider',
```

Then add to the aliases array the following:
```php
'Cart' => 'Moltin\Cart\Facade',
```

You should then be good to go and be able to access the cart using the following static interface:

```php
// Format array of required info for item to be added to basket...
$items = array(
	'id' => 1,
	'name' => 'Juicy Picnic Hamper',
	'price' => 120.00,
	'quantity' => 1
);

// Make the insert...
Cart::insert($items);

// Let's see what we have have in there...
dd(Cart::totalItems());
```

###Config settings (Optional)
Publish the config file with `php artisan vendor:publish`
```php

return array(
    'storage' => 'session', //session, cache, file

    // Cache
    // Laravel documentation for more information
    'cache_prefix' => 'moltin_cart_',
    'cache_expire' => '-1', //in minutes, -1  permanent caching

    // Filesystem
    // Folder Name inside the Storage Path
    'storage_folder_name' => 'moltin_cart',

    // Identifier
    // With a requestcookie (choose for storage: cache, the session will be expired), the cart could be reloaded from a http request, example: the customer could save his cart link (email, hyperlink) and reopen this later.
    // If there is no request, the cookie will be loaded.
    'identifier' => 'cookie', //cookie, requestcookie

    //Request Cookie
    'requestid' => 'CartID', //http input request identifier, example: your customer/backoffice could reload the cart in your shop controller, /public/shop?CartID=871f0bc18ca76e68bf7c3adf8f9426ef
);
```


### Setting the tax rate for an item
Another key you can pass to your insert method is 'tax'. This is a percentage which you would like to be added onto
the price of the item.

In the below example we will use 20% for the tax rate.

```php
Cart::insert(array(
    'id'       => 'foo',
    'name'     => 'bar',
    'price'    => 100,
    'quantity' => 1,
    'tax'      => 20
));
```

### Updating items in the cart
You can update items in your cart by updating any property on a cart item. For example, if you were within a
cart loop then you can update a specific item using the below example.
```php
foreach (Cart::contents() as $item) {
    $item->name = 'Foo';
    $item->quantity = 1;
}
```

### Removing cart items
You can remove any items in your cart by using the ```remove()``` method on any cart item.
```php
foreach (Cart::contents() as $item) {
    $item->remove();
}
```

### Destroying/emptying the cart
You can completely empty/destroy the cart by using the ```destroy()``` method.
```php
Cart::destroy()
```

### Retrieve the cart contents
You can loop the cart contents by using the following method
```php
Cart::contents();
```

You can also return the cart items as an array by passing true as the first argument
```php
Cart::contents(true);
```

### Retrieving the total items in the cart
```php
Cart::totalItems();
```

By default this method will return all items in the cart as well as their quantities. You can pass ```true```
as the first argument to get all unique items.
```php
Cart::totalItems(true);
```

### Retrieving the cart total
```php
$cart->total();
```

By default the ```total()``` method will return the total value of the cart as a ```float```, this will include
any item taxes. If you want to retrieve the cart total without tax then you can do so by passing false to the
```total()``` method
```php
Cart::total(false);
```

### Check if the cart has an item
```php
Cart::has($itemIdentifier);
```

### Retreive an item object by identifier
```php
Cart::item($itemIdentifier);
```

## Cart items
There are several features of the cart items that may also help when integrating your cart.

### Retrieving the total value of an item
You can retrieve the total value of a specific cart item (including quantities) using the following method.
```php
$item->total();
```

By default, this method will return the total value of the item plus tax. So if you had a product which costs 100,
with a quantity of 2 and a tax rate of 20% then the total returned by this method would be 240.

You can also get the total minus tax by passing false to the ```total()``` method.
```php
$item->total(false);
```

This would return 200.

### Check if an item has options
You can check if a cart item has options by using the ```hasOptions()``` method.

```php
if ($item->hasOptions()) {
    // We have options
}
```

### Remove an item from the cart
```php
$item->remove();
```

### Output the item data as an array
```php
$item->toArray();
```