Mod.php
3.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?php
namespace app\models;
use yii\web\Session;
class Mod extends \yii\db\ActiveRecord
{ public $count;
public $sum_cost;
public $product_name;
public $image;
public $translit;
public $translit_rubric;
private $data;
public static function tableName()
{
return 'mod';
}
// public function getCost(){
// return (!empty($this->cost)) ? $this->cost : 0;
// }
public function addBasket($mod_id,$count){
$session=new Session;
$session->open();
$data = $session['basket'];
$i = 0;
if(isset($session['basket'])){
foreach($session['basket'] as $key=>$basket){
if($mod_id == $basket['id']){$data[$key]['count'] += $count;$session['basket'] = $data;$i++;}
}}
if($i == 0){$data[] = array('id'=>$mod_id, 'count'=>$count);$session['basket'] = $data;}
//print_r($_SESSION['basket']);
}
public function rowBasket(){
$session=new Session;
$session->open();
$cost = 0;$count = 0;
if(isset($session['basket']) && count($session['basket'])){
foreach($session['basket'] as $product){
$cost += ($this->getModCost($product['id'])*$product['count']);
$count += $product['count'];
}
//$count = count($_SESSION['basket']);
}
return (object) array(
'cost'=>$cost,
'count'=>$count,
);
}
public function getBasketMods(){
$session=new Session;
$session->open();
$products = array();
if(empty($session['basket']))return array();
foreach($session['basket'] as $product){
$row = Mod::find()->select(['mod.*','products.name as product_name','products.image','products.translit','catalog.translit as translit_rubric'])
->where(['mod.id'=>$product['id']])
->leftJoin('products', 'products.id = mod.product_id')
->leftJoin('catalog', 'catalog.id = products.catalog_id')
->one();
$row->count = $product['count'];
$row->sum_cost = $product['count'] * $row->cost;
$products[] = $row;
}
return $products;
}
public function getSumCost(){
$session=new Session;
$session->open();
$cost = 0;
if(empty($session['basket']))return false;
foreach($session['basket'] as $product){
$cost += ($this->getModCost($product['id'])*$product['count']);
}
return $cost;
}
private function getModCost($mod_id){
$mod = Mod::find()->where(['id'=>$mod_id])->one();
return $mod->cost;
}
public function updateBasket($row){
$session=new Session;
$session->open();
//$data = array();
if($row['count']>0) $this->data[] = array('id'=>$row['id'], 'count'=>$row['count']);
$session['basket'] = $this->data;
}
public function clearBasket(){
$session=new Session;
$session->open();
$session['basket'] = null;
}
public function deleteBasketMod($id){
$session=new Session;
$session->open();
$basket = $session['basket'];
foreach($basket as $key=>$product){
if($id == $product['id'])unset($basket[$key]);
}
$session['basket'] = $basket;
}
}