Skip to content

Commit

Permalink
Added cart discount (#26)
Browse files Browse the repository at this point in the history
  • Loading branch information
daVitekPL authored May 22, 2023
1 parent c1310c2 commit 347d184
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
6 changes: 5 additions & 1 deletion src/Http/Resources/CartResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use EscolaLms\Cart\Http\Resources\CartResource as BaseCartResource;
use EscolaLms\Cart\Models\Cart as BaseCart;
use EscolaLms\Vouchers\Enums\CouponTypeEnum;
use EscolaLms\Vouchers\Models\Cart;
use Illuminate\Http\Resources\Json\ResourceCollection;

Expand All @@ -27,9 +28,12 @@ protected function getCartItemsResourceCollection(): ResourceCollection
public function toArray($request): array
{
return array_merge(parent::toArray($request), [
'additional_discount' => $this->getCart()->getAdditionalDiscountAttribute(),
'additional_discount' => $this->getCart()->coupon && in_array($this->getCart()->coupon->type, [CouponTypeEnum::CART_FIXED, CouponTypeEnum::CART_PERCENT])
? $this->getCart()->cart_discount
: $this->getCart()->getAdditionalDiscountAttribute(),
'total_prediscount' => $this->getCart()->getTotalPreDiscountAttribute(),
'coupon' => optional($this->getCart()->coupon)->code,
'coupon_type' => optional($this->getCart()->coupon)->type,
]);
}
}
6 changes: 6 additions & 0 deletions src/Models/Cart.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
* @property-read int $total
* @property-read int $total_pre_discount
* @property-read int $total_with_tax
* @property-read int $cart_discount
* @property-read \Treestoneit\ShoppingCart\Models\CartItemCollection|\EscolaLms\Vouchers\Models\CartItem[] $items
* @property-read int|null $items_count
* @property-read \EscolaLms\Cart\Models\User|null $user
Expand Down Expand Up @@ -65,4 +66,9 @@ public function getTotalPreDiscountAttribute(): int
{
return $this->cartManager->totalPreAdditionalDiscount();
}

public function getCartDiscountAttribute(): int
{
return $this->items->sum('discount');
}
}
14 changes: 7 additions & 7 deletions tests/Api/UserVoucherTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public function testApplyCartPercentVoucherAndPurchase()
$cartDataApi = $this->response->json()['data'];

$this->assertEquals('1350', $cartDataApi['total']);
$this->assertEquals('0', $cartDataApi['additional_discount']);
$this->assertEquals('150', $cartDataApi['additional_discount']);
$this->assertEquals('1350', $cartDataApi['total_prediscount']);
$this->assertEquals($coupon->code, $cartDataApi['coupon']);

Expand Down Expand Up @@ -158,7 +158,7 @@ public function testApplyCartFixedVoucherAndPurchase()
$cartDataApi = $this->response->json()['data'];

$this->assertEquals('500', $cartDataApi['total']);
$this->assertEquals('0', $cartDataApi['additional_discount']);
$this->assertEquals('1000', $cartDataApi['additional_discount']);
$this->assertEquals('500', $cartDataApi['total_prediscount']);
$this->assertEquals($coupon->code, $cartDataApi['coupon']);

Expand Down Expand Up @@ -458,7 +458,7 @@ public function testUnapplyVoucher()
$cartDataApi = $this->response->json()['data'];

$this->assertEquals('1350', $cartDataApi['total']);
$this->assertEquals('0', $cartDataApi['additional_discount']);
$this->assertEquals('150', $cartDataApi['additional_discount']);
$this->assertEquals('1350', $cartDataApi['total_prediscount']);
$this->assertEquals($coupon->code, $cartDataApi['coupon']);

Expand Down Expand Up @@ -727,7 +727,7 @@ public function testApplyCouponCart100Percent(): void
$cartDataApi = $this->response->json()['data'];

$this->assertEquals('0', $cartDataApi['total']);
$this->assertEquals('0', $cartDataApi['additional_discount']);
$this->assertEquals('1000', $cartDataApi['additional_discount']);
$this->assertEquals('0', $cartDataApi['total_prediscount']);
$this->assertEquals('0', $cartDataApi['items'][0]['price']);
$this->assertEquals('0', $cartDataApi['items'][0]['total']);
Expand Down Expand Up @@ -802,7 +802,7 @@ public function testApplyCouponGreaterAmountThanCartTotal(): void
$cartDataApi = $this->response->json()['data'];

$this->assertEquals('0', $cartDataApi['total']);
$this->assertEquals('0', $cartDataApi['additional_discount']);
$this->assertEquals('1000', $cartDataApi['additional_discount']);
$this->assertEquals('0', $cartDataApi['total_prediscount']);
$this->assertEquals('0', $cartDataApi['items'][0]['price']);
$this->assertEquals('0', $cartDataApi['items'][0]['total']);
Expand Down Expand Up @@ -838,7 +838,7 @@ public function testApplyCouponGreaterAmountThanCartTotalWithTax(): void
$cartDataApi = $this->response->json()['data'];

$this->assertEquals('0', $cartDataApi['total']);
$this->assertEquals('0', $cartDataApi['additional_discount']);
$this->assertEquals('1000', $cartDataApi['additional_discount']);
$this->assertEquals('0', $cartDataApi['total_prediscount']);
$this->assertEquals('0', $cartDataApi['items'][0]['price']);
$this->assertEquals('0', $cartDataApi['items'][0]['total']);
Expand Down Expand Up @@ -919,7 +919,7 @@ public function testApplyCouponCartFixedWithTax(): void

$this->assertEquals('919', $cartDataApi['total']);
$this->assertEquals('211', $cartDataApi['tax']);
$this->assertEquals('0', $cartDataApi['additional_discount']);
$this->assertEquals('81', $cartDataApi['additional_discount']);
$this->assertEquals('919', $cartDataApi['total_prediscount']);
$this->assertEquals('919', $cartDataApi['items'][0]['price']);
$this->assertEquals('919', $cartDataApi['items'][0]['total']);
Expand Down

0 comments on commit 347d184

Please sign in to comment.