File: /home/emblazeone/www/master-template/frontend/models/Cart.php
<?php
namespace frontend\models;
use Yii;
use yii\base\Model;
class Cart extends Model{
public static $inst;
protected $cart;
public $note;
public $email;
public $phone;
public $subscribe;
public $shipping_first_name;
public $shipping_last_name;
public $shipping_address;
public $shipping_address1;
public $shipping_country='US';
public $shipping_state;
public static function getInstance(){
if(!self::$inst){
self::$inst=new self;
}
return self::$inst;
}
public function rules()
{
return [
[[
'note','phone','email','subscribe',
'shipping_first_name','shipping_last_name',
'shipping_address','shipping_address1',
'shipping_country', 'shipping_state'
],'safe'],
[[
'email','phone',
'shipping_first_name','shipping_last_name',
'shipping_address',
'shipping_country', 'shipping_state'
],'required','on'=>'step1']
];
}
protected function __construct()
{
$this->cart=Yii::$app->session->get('cart', []);
}
public function addItem($product, $qty, $variant_1, $variant_2){
if($product){
$item=new CartItem();
$item->load([
'product_id'=>$product->id,
'qty'=>$qty,
'variant_1'=>$variant_1,
'variant_2'=>$variant_2
],'');
$this->cart[]=$item;
Yii::$app->session->set('cart', $this->cart);
}
}
public function removeItem($position){
$this->cart=Yii::$app->session->get('cart', []);
unset($this->cart[$position]);
Yii::$app->session->set('cart', $this->cart);
}
public function changeQty($num, $qty){
$this->cart=Yii::$app->session->get('cart', []);
$this->cart[$num]->qty=$qty;
Yii::$app->session->set('cart', $this->cart);
return $this->cart[$num];
}
public function getCount(){
return count($this->cart);
}
/* @return array of CartItem */
public function getItems(){
return $this->cart;
}
/* @return float */
public function getPrice(){
$total=0;
foreach ($this->getItems() as $item){
$total+=$item->subtotal;
}
return $total;
}
public function getDiscountPrice(){
return 0;
}
public function getShippingPrice(){
return 0.00;
}
public function getTotal(){
$total=$this->getPrice();
$total-=$this->getDiscountPrice();
return $total;
}
public function clean(){
Yii::$app->session->set('discount', false);
Yii::$app->session->set('cart', []);
}
}