Newer
Older
<?php
/**
* This file contains QUI\ERP\Discount\Discount
*/
namespace QUI\ERP\Discount;
use QUI;
/**
* Class Discount
* @package QUI\ERP\Discount
*/
class Discount extends QUI\CRUD\Child
{
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
120
121
122
/**
* Is the discount combinable with another discount?
*
* @param Discount $Discount
* @return bool
*/
public function canCombinedWith(Discount $Discount)
{
$combine = $this->getAttribute('combine');
if (empty($combine)) {
return false;
}
$combine = implode($combine, ',');
if (!is_array($combine)) {
return false;
}
foreach ($combine as $combineId) {
if ($Discount->getId() == $combineId) {
return true;
}
}
return false;
}
/**
* is the user allowed to use the discount
*
* @param User $User
* @return boolean
*/
public function canUsedBy(User $User)
{
$userGroups = QUI\UsersGroups\Utils::parseUsersGroupsString(
$this->getAttribute('user_groups')
);
$discountUsers = $userGroups['users'];
$discountGroups = $userGroups['groups'];
// user checking
foreach ($discountUsers as $uid) {
if ($User->getId() == $uid) {
return true;
}
}
// group checking
$groupsOfUser = $User->getGroups();
/* @var $Group QUI\Groups\Group */
foreach ($discountGroups as $gid) {
foreach ($groupsOfUser as $Group) {
if ($Group->getId() == $gid) {
return true;
}
}
}
return false;
}
/**
* Verify the combination between the discounts
*
* @param Discount $Discount
* @throws QUI\Exception
*/
public function verifyCombinationWith(Discount $Discount)
{
if ($this->canCombinedWith($Discount) === false) {
throw new QUI\Exception(array(
'quiqqer/discount',
'exception.discount.not.combinable',
array(
'id' => $this->getId(),
'discountId' => $Discount->getId()
)
));
}
}
/**
* Verify the usage of the discount by the user
*
* @param User $User
* @throws QUI\Exception
*/
public function verifyUser(User $User)
{
if ($this->canUsedBy($User) === false) {
throw new QUI\Exception(array(
'quiqqer/discount',
'exception.discount.user.cant.use.discount',
array(
'id' => $this->getId(),
'userId' => $User->getId()
)
));
}
}