File: D:/HostingSpaces/SBogers10/shop.komma.nl/app/Providers/AppServiceProvider.php
<?php
namespace App\Providers;
use App\Addresses\AddressInterface;
use App\Addresses\AddressService;
use App\Addresses\AddressServiceInterface;
use App\Addresses\Models\Address;
use App\ArtisanCommands\SendcloudParcelStatuses;
use App\ArtisanCommands\SendcloudShipmentMethods;
use App\ArtisanCommands\VatCheck;
use App\Auth\AuthMailService;
use App\Cart\ShoppingCart;
use App\Cart\ShoppingCartInterface;
use App\Discounts\Actions\DiscountActionTypes;
use App\Discounts\Actions\FreeShipping;
use App\Discounts\Actions\ModifyCartItemPricePercentagewiseHandler;
use App\Discounts\Actions\ModifyCartPricePercentagewiseHandler;
use App\Discounts\Actions\ModifyPriceAbsolutelyHandler;
use App\Discounts\Actions\QuantityForPriceOf;
use App\Discounts\Conditions\CartProductCountHandler;
use App\Discounts\Conditions\CartSubtotalHandler;
use App\Discounts\Conditions\DiscountConditionTypes;
use App\Discounts\Conditions\ProductCategoryHandler;
use App\Discounts\Conditions\ProductCountHandler;
use App\Discounts\Conditions\WeatherHandler;
use App\Discounts\DiscountActionService;
use App\Discounts\DiscountConditionService;
use App\Discounts\DiscountService;
use App\Discounts\DiscountServiceInterface;
use App\Products\Product\Transfer\ProductCsvExportService;
use App\Products\Product\Transfer\ProductCsvImportService;
use App\Routes\RouteService;
use App\Site\Site;
use App\Users\SiteUser;
use App\Users\SiteUserInterface;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
use Komma\KMS\Auth\AuthMailServiceInterface;
use Komma\KMS\Core\HouseKeeping\HouseKeeper;
use Komma\KMS\Globalization\RegionInfo;
use Komma\KMS\Globalization\RegionInfoInterface;
use Komma\KMS\Transfer\AbstractCsvExportService;
use Komma\KMS\Transfer\AbstractCsvImportService;
use Komma\KMS\Sites\Models\SiteInterface;
use Laravel\Sanctum\Sanctum;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application authentication / authorization services.
*
* @return void
*/
public function boot()
{
// You can use this to check if the modifier array isset and automatic call the atomic modifiers helper
Blade::directive('modifiers', function ($expression) {
// Strip single or dubble quotes
$baseClass = str_replace('"', "", $expression);
$baseClass = str_replace("'", "", $baseClass);
// We echo the modifiers through the Modifiers helper
// And we burn the defined modifiers
return '<?php if(isset($modifiers)){ \Atomic::modifiers("'.$baseClass.'", $modifiers); } $modifiers = []; ?>';
});
$this->app->bind(SiteInterface::class, Site::class);
$this->app->bind(AddressInterface::class, Address::class);
$this->app->bind(SiteUserInterface::class, SiteUser::class);
$this->app->bind(AddressServiceInterface::class, AddressService::class);
$this->app->singleton(ShoppingCartInterface::class, ShoppingCart::class);
$this->app->bind(DiscountServiceInterface::class, DiscountService::class);
$this->app->bind(AuthMailServiceInterface::class, AuthMailService::class);
$this->app->bind(AbstractCsvExportService::class, ProductCsvExportService::class);
$this->app->bind(AbstractCsvImportService::class, ProductCsvImportService::class);
//Bind globalisation classes
$this->app->bind(RegionInfoInterface::class, function() {
$regionInfo = RegionInfo::getInstance(config('shop.culture'));
return $regionInfo;
});
HouseKeeper::mapHousekeepingService('routes', RouteService::class);
$this->registerCommands();
}
public function register()
{
Sanctum::ignoreMigrations();
$this->registerDiscounts();
}
/**
* Register artisan commands
*/
public function registerCommands()
{
$this->commands([
//Catalog commands
VatCheck::class,
SendcloudParcelStatuses::class,
SendcloudShipmentMethods::class
]);
}
/**
* Register new discount types and actions here.
*/
private function registerDiscounts()
{
DiscountConditionService::registerHandler(DiscountConditionTypes::CART_PRODUCT_COUNT, CartProductCountHandler::class);
DiscountConditionService::registerHandler(DiscountConditionTypes::PRODUCT_COUNT, ProductCountHandler::class);
DiscountConditionService::registerHandler(DiscountConditionTypes::CART_SUBTOTAL, CartSubtotalHandler::class);
DiscountConditionService::registerHandler(DiscountConditionTypes::PRODUCT_CATEGORY, ProductCategoryHandler::class);
DiscountConditionService::registerHandler(DiscountConditionTypes::WEATHER, WeatherHandler::class);
DiscountActionService::registerHandler(DiscountActionTypes::MODIFY_CART_PRICE_ABSOLUTE, ModifyPriceAbsolutelyHandler::class);
DiscountActionService::registerHandler(DiscountActionTypes::MODIFY_CART_PRICE_PERCENTAGE, ModifyCartPricePercentagewiseHandler::class);
DiscountActionService::registerHandler(DiscountActionTypes::MODIFY_CART_ITEM_PRICE_ABSOLUTE, ModifyPriceAbsolutelyHandler::class);
DiscountActionService::registerHandler(DiscountActionTypes::MODIFY_CART_ITEM_PRICE_PERCENTAGE, ModifyCartItemPricePercentagewiseHandler::class);
DiscountActionService::registerHandler(DiscountActionTypes::FREE_SHIPPING, FreeShipping::class);
DiscountActionService::registerHandler(DiscountActionTypes::QUANTITY_FOR_PRICE_OF, QuantityForPriceOf::class);
}
}