FleetCart/Modules/Cart/Storages/Cache.php

49 lines
981 B
PHP
Raw Normal View History

2023-12-03 14:07:47 +00:00
<?php
namespace Modules\Cart\Storages;
use Darryldecode\Cart\CartCollection;
use Illuminate\Support\Facades\Cookie;
class Cache
{
private $data = [];
private $cart_id;
public function __construct()
{
$this->cart_id = Cookie::get('cart');
if ($this->cart_id) {
$this->data = Cache::get('cart_' . $this->cart_id);
} else {
$this->cart_id = uniqid();
}
}
public function get($key)
{
return new CartCollection($this->data[$key] ?? []);
}
public function has($key)
{
return isset($this->data[$key]);
}
public function put($key, $value)
{
$this->data[$key] = $value;
Cache::put('cart_' . $this->cart_id, $this->data);
if (!Cookie::hasQueued('cart')) {
Cookie::queue(
Cookie::make('cart', $this->cart_id, 60 * 24 * 30)
);
}
}
}