mivita/app/Http/Middleware/Checkout.php
2025-10-20 17:42:08 +02:00

84 lines
3.3 KiB
PHP

<?php
namespace App\Http\Middleware;
use App\Models\ShoppingInstance;
use App\Models\UserShop;
use Closure;
use Auth;
use phpDocumentor\Reflection\DocBlock\Tags\Uses;
use App\Services\Util;
use Session;
use Yard;
class Checkout
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
\Log::debug('Checkout Middleware: ausgeführt', [
'url' => $request->url(),
'host' => $request->getHost()
]);
$instance = 'checkout';
if ($shopping_instance = ShoppingInstance::where('identifier', $request->route('identifier'))->first()) {
//user shop
//set Lang
\Session::put('locale', $shopping_instance->getLocale());
\App::setLocale($shopping_instance->getLocale());
$user_shop = $shopping_instance->user_shop;
if ($user_shop && $user_shop->active == 1 && $user_shop->user->isActiveShop()) {
Util::setPostRoute('user/');
\Session::put('user_shop', $user_shop);
\Session::put('user_shop_domain', $shopping_instance->subdomain);
\Session::put('user_shop_payment', $shopping_instance->payment);
\Session::put('user_shop_identifier', $shopping_instance->identifier);
if ($shopping_instance->auth_user_id) {
\Session::put('auth_user', $shopping_instance->auth_user);
}
}
if ($shopping_instance->back) {
\Session::put('back_link', $shopping_instance->back);
}
\Session::put('new_session', true);
Yard::instance($instance)->destroy();
//restore yard
if ($shopping_instance->payment !== 6) {
Yard::instance($instance)->restore($request->route('identifier'), [], true, $instance);
} else {
//dont delete shopping instance
Yard::instance($instance)->restore($request->route('identifier'), [], false, $instance);
}
Yard::instance($instance)->putYardExtra('user_shop_payment', $shopping_instance->payment);
Yard::instance($instance)->putYardExtra('shopping_data', $shopping_instance->shopping_data);
$is_for = isset($shopping_instance->shopping_data['is_for']) ? $shopping_instance->shopping_data['is_for'] : 'ot-member';
Yard::instance($instance)->setUserPriceInfos($shopping_instance->shopping_data['user_price_infos']);
Yard::instance($instance)->setShippingCountryWithPrice($shopping_instance->country_id, $is_for);
if ($shopping_instance->payment !== 6) {
//delete shopping instance is not save for restore, payment link
ShoppingInstance::where('identifier', $request->route('identifier'))->delete();
}
$request->route()->forgetParameter('identifier');
return $next($request);
}
// \Session::has('user_shop_identifier')
if (\Session::has('user_shop') && Yard::instance($instance)->count() > 0) {
return $next($request);
}
return redirect(Util::getUserCardBackUrl('/card/show', 'checkout'));
}
}