mirror of
https://github.com/wearepixel/laravel-cart.git
synced 2026-11-14 13:51:44 +00:00
feat: add tests and fix item level conditions for database storage
This commit is contained in:
+34
-4
@@ -91,7 +91,37 @@ public function getConditions()
|
||||
return [];
|
||||
}
|
||||
|
||||
return $this['conditions'];
|
||||
$conditionsArray = [];
|
||||
|
||||
$conditions = $this['conditions'];
|
||||
|
||||
// check if we're already an array of CartConditions
|
||||
foreach ($conditions as $key => $condition) {
|
||||
if ($condition instanceof CartCondition) {
|
||||
return $conditions;
|
||||
}
|
||||
}
|
||||
|
||||
$hasSubArray = false;
|
||||
|
||||
foreach ($conditions as $key => $condition) {
|
||||
if (is_array($condition) && ! $condition instanceof CartCondition) {
|
||||
$hasSubArray = true;
|
||||
$conditionsArray[] = new CartCondition($condition);
|
||||
} elseif ($condition instanceof CartCondition) {
|
||||
$conditionsArray[] = $condition;
|
||||
}
|
||||
}
|
||||
|
||||
if (! $hasSubArray) {
|
||||
if ($conditions instanceof CartCondition) {
|
||||
return $conditions;
|
||||
}
|
||||
|
||||
$conditionsArray[] = new CartCondition($conditions);
|
||||
}
|
||||
|
||||
return $conditionsArray;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -108,14 +138,14 @@ public function getPriceWithConditions($formatted = true)
|
||||
$processed = 0;
|
||||
|
||||
if ($this->hasConditions()) {
|
||||
if (is_array($this->conditions)) {
|
||||
foreach ($this->conditions as $condition) {
|
||||
if (is_array($this->getConditions())) {
|
||||
foreach ($this->getConditions() as $condition) {
|
||||
($processed > 0) ? $toBeCalculated = $newPrice : $toBeCalculated = $originalPrice;
|
||||
$newPrice = $condition->applyCondition($toBeCalculated);
|
||||
$processed++;
|
||||
}
|
||||
} else {
|
||||
$newPrice = $this['conditions']->applyCondition($originalPrice);
|
||||
$newPrice = $this->getConditions()->applyCondition($originalPrice);
|
||||
}
|
||||
|
||||
return Helpers::formatValue($newPrice, $formatted, $this->config);
|
||||
|
||||
Reference in New Issue
Block a user