init commit :rocket

This commit is contained in:
Joel Male
2024-08-14 10:46:23 +10:00
commit 77fa8601b9
39 changed files with 9915 additions and 0 deletions
+137
View File
@@ -0,0 +1,137 @@
<?php
namespace Wearepixel\Cart;
use Illuminate\Support\Collection;
use Wearepixel\Cart\Helpers\Helpers;
class ItemCollection extends Collection
{
/**
* Sets the config parameters.
*/
protected $config;
/**
* ItemCollection constructor.
*
* @param array|mixed $items
*/
public function __construct($items, $config = [])
{
parent::__construct($items);
$this->config = $config;
}
/**
* get the sum of price
*
* @return mixed|null
*/
public function getPriceSum()
{
return Helpers::formatValue($this->price * $this->quantity, $this->config['format_numbers'], $this->config);
}
public function __get($name)
{
if ($this->has($name) || $name == 'model') {
return ! is_null($this->get($name)) ? $this->get($name) : $this->getAssociatedModel();
}
return null;
}
/**
* return the associated model of an item
*
* @return bool
*/
protected function getAssociatedModel()
{
if (! $this->has('associatedModel')) {
return null;
}
$associatedModel = $this->get('associatedModel');
return with(new $associatedModel)->find($this->get('id'));
}
/**
* check if item has conditions
*
* @return bool
*/
public function hasConditions()
{
if (! isset($this['conditions'])) {
return false;
}
if (is_array($this['conditions'])) {
return count($this['conditions']) > 0;
}
$conditionInstance = 'Wearepixel\\Cart\\CartCondition';
if ($this['conditions'] instanceof $conditionInstance) {
return true;
}
return false;
}
/**
* check if item has conditions
*
* @return mixed|null
*/
public function getConditions()
{
if (! $this->hasConditions()) {
return [];
}
return $this['conditions'];
}
/**
* get the single price in which conditions are already applied
*
* @param bool $formatted
* @return mixed|null
*/
public function getPriceWithConditions($formatted = true)
{
$originalPrice = $this->price;
$newPrice = 0.00;
$processed = 0;
if ($this->hasConditions()) {
if (is_array($this->conditions)) {
foreach ($this->conditions as $condition) {
($processed > 0) ? $toBeCalculated = $newPrice : $toBeCalculated = $originalPrice;
$newPrice = $condition->applyCondition($toBeCalculated);
$processed++;
}
} else {
$newPrice = $this['conditions']->applyCondition($originalPrice);
}
return Helpers::formatValue($newPrice, $formatted, $this->config);
}
return Helpers::formatValue($originalPrice, $formatted, $this->config);
}
/**
* get the sum of price in which conditions are already applied
*
* @param bool $formatted
* @return mixed|null
*/
public function getPriceSumWithConditions($formatted = true)
{
return Helpers::formatValue($this->getPriceWithConditions(false) * $this->quantity, $formatted, $this->config);
}
}