Skip to content

Commit

Permalink
Merge pull request #74 from oc-shopaholic/develop
Browse files Browse the repository at this point in the history
Release version 1.23.0
  • Loading branch information
kharanenka authored Oct 21, 2019
2 parents c4e48bd + ff00c10 commit 16b5973
Show file tree
Hide file tree
Showing 28 changed files with 571 additions and 186 deletions.
12 changes: 12 additions & 0 deletions assets/css/backend.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
.shopaholic-badge {
display: inline-block;
padding: .25em .4em;
font-weight: 700;
line-height: 1;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: .25rem;
color: #fff;
background-color: #ccc;
}
24 changes: 24 additions & 0 deletions classes/collection/PaymentMethodCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,28 @@ public function available($arData = null)

return $this->diff($arExcludeIDList);
}

/**
* Get payment method type item by code
* @param string $sCode
*
* @return PaymentMethodItem
*/
public function getByCode($sCode)
{
if ($this->isEmpty() || empty($sCode)) {
return PaymentMethodItem::make(null);
}

$arPaymentMethodList = $this->all();

/** @var PaymentMethodItem $obPaymentMethodItem */
foreach ($arPaymentMethodList as $obPaymentMethodItem) {
if ($obPaymentMethodItem->code == $sCode) {
return $obPaymentMethodItem;
}
}

return PaymentMethodItem::make(null);
}
}
24 changes: 24 additions & 0 deletions classes/collection/ShippingTypeCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,28 @@ public function available($arData = null)

return $this->diff($arExcludeIDList);
}

/**
* Get shipping type item by code
* @param string $sCode
*
* @return ShippingTypeItem
*/
public function getByCode($sCode)
{
if ($this->isEmpty() || empty($sCode)) {
return ShippingTypeItem::make(null);
}

$arShippingTypeList = $this->all();

/** @var ShippingTypeItem $obShippingTypeItem */
foreach ($arShippingTypeList as $obShippingTypeItem) {
if ($obShippingTypeItem->code == $sCode) {
return $obShippingTypeItem;
}
}

return ShippingTypeItem::make(null);
}
}
24 changes: 24 additions & 0 deletions classes/collection/StatusCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,28 @@ public function isUserShow()

return $this->intersect($arElementIDList);
}

/**
* Get status item by code
* @param string $sCode
*
* @return StatusItem
*/
public function getByCode($sCode)
{
if ($this->isEmpty() || empty($sCode)) {
return StatusItem::make(null);
}

$arStatusList = $this->all();

/** @var StatusItem $obStatusItem */
foreach ($arStatusList as $obStatusItem) {
if ($obStatusItem->code == $sCode) {
return $obStatusItem;
}
}

return StatusItem::make(null);
}
}
54 changes: 36 additions & 18 deletions classes/event/order/OrderModelHandler.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,24 +40,6 @@ public function subscribe($obEvent)
});
}

/**
* Get model class name
* @return string
*/
protected function getModelClass()
{
return Order::class;
}

/**
* Get item class name
* @return string
*/
protected function getItemClass()
{
return OrderItem::class;
}

/**
* After save event handler
*/
Expand Down Expand Up @@ -89,6 +71,24 @@ protected function afterDelete()

OrderListStore::instance()->payment_method->clear($this->obElement->payment_method_id);
OrderListStore::instance()->payment_method->clear($this->obElement->payment_method_id, $this->obElement->user_id);

//Remove order positions
$obPositionList = $this->obElement->order_position;
foreach ($obPositionList as $obPosition) {
$obPosition->delete();
}

//Remove promo mechanisms
$obPromoMechanismList = $this->obElement->order_promo_mechanism;
foreach ($obPromoMechanismList as $obPromoMechanism) {
$obPromoMechanism->delete();
}

//Remove tasks
$obTaskList = $this->obElement->task;
foreach ($obTaskList as $obTask) {
$obTask->delete();
}
}

/**
Expand Down Expand Up @@ -162,4 +162,22 @@ protected function getDefaultEmailData()

return $arResult;
}

/**
* Get model class name
* @return string
*/
protected function getModelClass()
{
return Order::class;
}

/**
* Get item class name
* @return string
*/
protected function getItemClass()
{
return OrderItem::class;
}
}
158 changes: 83 additions & 75 deletions classes/item/OrderPositionItem.php

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions classes/processor/AbstractCartPositionProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,15 @@ public function restore($iPositionID)
$this->obCartPosition->restore();
}

/**
* Get position object
* @return CartPosition
*/
public function getPositionObject()
{
return $this->obCartPosition;
}

/**
* Validate position data, after add/update actions
* @return bool
Expand Down
99 changes: 85 additions & 14 deletions classes/processor/CartProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use Lovata\Shopaholic\Models\Settings;
use Lovata\OrdersShopaholic\Models\Cart;
use Lovata\OrdersShopaholic\Models\CartPosition;
use Lovata\OrdersShopaholic\Classes\Item\ShippingTypeItem;
use Lovata\OrdersShopaholic\Classes\PromoMechanism\ItemPriceContainer;
use Lovata\OrdersShopaholic\Classes\PromoMechanism\TotalPriceContainer;
use Lovata\OrdersShopaholic\Classes\Collection\CartPositionCollection;
Expand Down Expand Up @@ -56,11 +57,12 @@ public function getCartObject()
}

/**
* Init new cart positions and promo processor
* Init new cart positions, shipping type, and promo processor
*/
public function updateCartData()
{
$this->initCartPositionList();
$this->initShippingTypeItem();
$this->initPromoProcessor();
}

Expand All @@ -76,11 +78,11 @@ public function add($arPositionList, $sPositionProcessor)
return false;
}

/** @var AbstractCartPositionProcessor $obPositionProcessor */
$obPositionProcessor = app($sPositionProcessor, [$this->obCart, $this->obUser]);

//Process position list and add position to cart
foreach ($arPositionList as $arPositionData) {
/** @var AbstractCartPositionProcessor $obPositionProcessor */
$obPositionProcessor = new $sPositionProcessor($this->obCart, $this->obUser);
$obPositionProcessor->add($arPositionData);
}

Expand All @@ -101,11 +103,10 @@ public function update($arPositionList, $sPositionProcessor)
return false;
}

/** @var AbstractCartPositionProcessor $obPositionProcessor */
$obPositionProcessor = app($sPositionProcessor, [$this->obCart, $this->obUser]);

//Process position list and update position data
foreach ($arPositionList as $arPositionData) {
/** @var AbstractCartPositionProcessor $obPositionProcessor */
$obPositionProcessor = new $sPositionProcessor($this->obCart, $this->obUser);
$obPositionProcessor->update($arPositionData);
}

Expand All @@ -132,7 +133,7 @@ public function remove($arPositionList, $sPositionProcessor, $sType = 'offer')
//Process position list and remove position from cart
foreach ($arPositionList as $iPositionID) {
/** @var AbstractCartPositionProcessor $obPositionProcessor */
$obPositionProcessor = app($sPositionProcessor, [$this->obCart, $this->obUser]);
$obPositionProcessor = new $sPositionProcessor($this->obCart, $this->obUser);
$obPositionProcessor->remove($iPositionID, $sType);
}

Expand All @@ -158,7 +159,7 @@ public function restore($arPositionList, $sPositionProcessor)
//Process position list and restore position
foreach ($arPositionList as $iPositionID) {
/** @var AbstractCartPositionProcessor $obPositionProcessor */
$obPositionProcessor = app($sPositionProcessor, [$this->obCart, $this->obUser]);
$obPositionProcessor = new $sPositionProcessor($this->obCart, $this->obUser);
$obPositionProcessor->restore($iPositionID);
}

Expand All @@ -167,6 +168,61 @@ public function restore($arPositionList, $sPositionProcessor)
return $this->prepareSuccessResponse();
}

/**
* Restore position from current cart
* @param array $arPositionList
* @param string $sPositionProcessor
* @return bool
* @throws
*/
public function sync($arPositionList, $sPositionProcessor)
{
if (empty($this->obCart) || empty($sPositionProcessor)) {
$sMessage = Lang::get('lovata.toolbox::lang.message.e_not_correct_request');
Result::setFalse()->setMessage($sMessage);

return false;
}

if (empty($arPositionList)) {
$this->clear();

return $this->prepareSuccessResponse();
}

$arProcessedCartPositionList = [];

//Process position list and add/update positions
foreach ($arPositionList as $arPositionData) {
/** @var AbstractCartPositionProcessor $obPositionProcessor */
$obPositionProcessor = new $sPositionProcessor($this->obCart, $this->obUser);
$obPositionProcessor->add($arPositionData);
$obCartPosition = $obPositionProcessor->getPositionObject();
if (!empty($obCartPosition)) {
$arProcessedCartPositionList[] = $obCartPosition->id;
}
}

$this->initCartPositionList();

//Remove old positions
if (!empty($this->obCartPositionList)) {
foreach ($this->obCartPositionList as $obCartPosition) {
if (in_array($obCartPosition->id, $arProcessedCartPositionList)) {
continue;
}

/** @var AbstractCartPositionProcessor $obPositionProcessor */
$obPositionProcessor = new $sPositionProcessor($this->obCart, $this->obUser);
$obPositionProcessor->remove($obCartPosition->id, 'position');
}
}

$this->updateCartData();

return $this->prepareSuccessResponse();
}

/**
* Clear cart
*/
Expand Down Expand Up @@ -296,12 +352,12 @@ public function getCartData()
'quantity' => 0,
'total_quantity' => 0,

'payment_method_id' => $this->obCart->payment_method_id,
'shipping_type_id' => !empty($this->obShippingTypeItem) ? $this->obShippingTypeItem->id : $this->obCart->shipping_type_id,
'user_data' => $this->obCart->user_data,
'shipping_address' => $this->obCart->shipping_address,
'billing_address' => $this->obCart->billing_address,
'property' => $this->obCart->property,
'payment_method_id' => $this->obCart->payment_method_id,
'shipping_type_id' => !empty($this->obShippingTypeItem) ? $this->obShippingTypeItem->id : $this->obCart->shipping_type_id,
'user_data' => $this->obCart->user_data,
'shipping_address' => $this->obCart->shipping_address,
'billing_address' => $this->obCart->billing_address,
'property' => $this->obCart->property,
];

if ($obCartPositionList->isEmpty()) {
Expand Down Expand Up @@ -359,6 +415,21 @@ protected function init()
}
}

/**
* Init selected shipping type
*/
protected function initShippingTypeItem()
{
if (empty($this->obCart) || !empty($this->obShippingTypeItem) || empty($this->obCart->shipping_type_id)) {
return;
}

$this->obShippingTypeItem = ShippingTypeItem::make($this->obCart->shipping_type_id);
if ($this->obShippingTypeItem->isEmpty()) {
$this->obShippingTypeItem = null;
}
}

/**
* Init promo processor
*/
Expand Down
Loading

0 comments on commit 16b5973

Please sign in to comment.