first upload all files

This commit is contained in:
NW
2023-06-11 13:14:03 +01:00
parent f14dbc52b5
commit c08b36d1b6
1705 changed files with 106852 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
<?php
namespace Modules\Coupon\Checkers;
use Closure;
use Modules\Cart\Facades\Cart;
use Modules\Coupon\Exceptions\CouponAlreadyAppliedException;
class AlreadyApplied
{
public function handle($coupon, Closure $next)
{
if (Cart::couponAlreadyApplied($coupon)) {
throw new CouponAlreadyAppliedException;
}
return $next($coupon);
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Modules\Coupon\Checkers;
use Closure;
use Modules\Cart\Facades\Cart;
use Modules\Coupon\Exceptions\InapplicableCouponException;
class ApplicableCategories
{
public function handle($coupon, Closure $next)
{
$coupon->load('categories');
if ($coupon->categories->isEmpty()) {
return $next($coupon);
}
$cartItems = Cart::items()->filter(function ($cartItem) use ($coupon) {
return $coupon->categories->intersect($cartItem->product->categories)->isNotEmpty();
});
if ($cartItems->isEmpty()) {
throw new InapplicableCouponException;
}
return $next($coupon);
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Modules\Coupon\Checkers;
use Closure;
use Modules\Cart\Facades\Cart;
use Modules\Coupon\Exceptions\InapplicableCouponException;
class ApplicableProducts
{
public function handle($coupon, Closure $next)
{
$coupon->load('products');
if ($coupon->products->isEmpty()) {
return $next($coupon);
}
$cartItems = Cart::items()->filter(function ($cartItem) use ($coupon) {
return $coupon->products->contains($cartItem->product);
});
if ($cartItems->isEmpty()) {
throw new InapplicableCouponException;
}
return $next($coupon);
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Modules\Coupon\Checkers;
use Closure;
use Modules\Coupon\Exceptions\CouponNotExistsException;
class CouponExists
{
public function handle($coupon, Closure $next)
{
if (is_null($coupon)) {
throw new CouponNotExistsException;
}
return $next($coupon);
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Modules\Coupon\Checkers;
use Closure;
use Modules\Cart\Facades\Cart;
use Modules\Coupon\Exceptions\InapplicableCouponException;
class ExcludedCategories
{
public function handle($coupon, Closure $next)
{
$coupon->load('excludeCategories');
if ($coupon->excludeCategories->isEmpty()) {
return $next($coupon);
}
foreach (Cart::items() as $cartItem) {
if ($this->inExcludedCategories($coupon, $cartItem)) {
throw new InapplicableCouponException;
}
}
return $next($coupon);
}
private function inExcludedCategories($coupon, $cartItem)
{
return $coupon->excludeCategories->intersect($cartItem->product->categories)->isNotEmpty();
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Modules\Coupon\Checkers;
use Closure;
use Modules\Cart\Facades\Cart;
use Modules\Coupon\Exceptions\InapplicableCouponException;
class ExcludedProducts
{
public function handle($coupon, Closure $next)
{
$coupon->load('excludeProducts');
if ($coupon->excludeProducts->isEmpty()) {
return $next($coupon);
}
foreach (Cart::items() as $cartItem) {
if ($this->inExcludedProducts($coupon, $cartItem)) {
throw new InapplicableCouponException;
}
}
return $next($coupon);
}
private function inExcludedProducts($coupon, $cartItem)
{
return $coupon->excludeProducts->contains($cartItem->product);
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Modules\Coupon\Checkers;
use Closure;
use Modules\Coupon\Exceptions\MaximumSpendException;
class MaximumSpend
{
public function handle($coupon, Closure $next)
{
if ($coupon->spentMoreThanMaximumAmount()) {
throw new MaximumSpendException($coupon->maximum_spend);
}
return $next($coupon);
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Modules\Coupon\Checkers;
use Closure;
use Modules\Coupon\Exceptions\MinimumSpendException;
class MinimumSpend
{
public function handle($coupon, Closure $next)
{
if ($coupon->didNotSpendTheRequiredAmount()) {
throw new MinimumSpendException($coupon->minimum_spend);
}
return $next($coupon);
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Modules\Coupon\Checkers;
use Closure;
use Modules\Coupon\Exceptions\CouponUsageLimitReachedException;
class UsageLimitPerCoupon
{
public function handle($coupon, Closure $next)
{
if ($coupon->usageLimitReached()) {
throw new CouponUsageLimitReachedException;
}
return $next($coupon);
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Modules\Coupon\Checkers;
use Closure;
use Modules\Coupon\Exceptions\CouponUsageLimitReachedException;
class UsageLimitPerCustomer
{
public function handle($coupon, Closure $next)
{
if ($coupon->perCustomerUsageLimitReached()) {
throw new CouponUsageLimitReachedException;
}
return $next($coupon);
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Modules\Coupon\Checkers;
use Closure;
use Modules\Coupon\Exceptions\InvalidCouponException;
class ValidCoupon
{
public function handle($coupon, Closure $next)
{
if ($coupon->invalid()) {
throw new InvalidCouponException;
}
return $next($coupon);
}
}