File: D:/HostingSpaces/SBogers10/shop.komma.nl/app/MyAccount/MyAccountController.php
<?php declare(strict_types=1);
namespace App\MyAccount;
use App\Base\Controller;
use App\Users\Requests\UpdateSiteUserRequest;
use App\Users\SiteUser;
use App\Users\SiteUserInterface;
use App\Users\SiteUserService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Addresses\AddressServiceInterface;
use Illuminate\Support\Facades\Hash;
use Illuminate\View\View;
use Komma\KMS\Globalization\RegionInfo;
class MyAccountController extends Controller
{
private AddressServiceInterface $addressService;
private SiteUserService $userService;
public function __construct()
{
$this->addressService = app(AddressServiceInterface::class);
$this->userService = new SiteUserService();
parent::__construct();
}
/**
* @param Request $request
*/
public function index(Request $request) {
return $this->render();
}
/**
* @return View
*/
public function ordersIndex() {
return $this->renderOrder();
}
/**
* @return View
*/
protected function renderOrder() {
$perPage = request()->get('perPage') ?? 10;
/** @var SiteUser $user */
$user = Auth::user();
$orders = $user->orders()->with('shipments')->latest()->paginate($perPage);
return view('organisms.my_account.orders', [
'orders' => $orders,
'links' => $this->links
]);
}
/**
* @param Request $request
*/
public function update(UpdateSiteUserRequest $request) {
/** @var SiteUserInterface $siteUser */
$siteUser = Auth::user();
$address = $this->addressService->getAddressFromInput();
$siteUser->accountAddress()->update($address->getAttributes());
$siteUser = $this->userService->fillUserWithInput($siteUser);
if($request->get('password')) $siteUser->password = Hash::make($request->get('password'));
$siteUser->save();
return redirect(localized_route('my_account'))->with(['status' => __('my_account.saved')]);
}
/**
* @return View
*/
protected function render() {
$neutralCulturesByIso3 = RegionInfo::getNeutralCultures()->map(function(RegionInfo $regionInfo) {
return [$regionInfo->getThreeLetterISORegionName() => $regionInfo->getNativeName() !== '' ? $regionInfo->getNativeName() : $regionInfo->getDisplayName()];
})->collapse()->sort();
$neutralCulturesHotList = RegionInfo::getNeutralCultures()->filter(function(RegionInfo $regionInfo) {
return in_array($regionInfo->getThreeLetterISORegionName(), config('shop.country_hotlist', []), true);
})->map(function(RegionInfo $regionInfo) use(&$neutralCulturesByIso3) {
if(isset($neutralCulturesByIso3[$regionInfo->getThreeLetterISORegionName()])) unset($neutralCulturesByIso3[$regionInfo->getThreeLetterISORegionName()]); //Remove the item from the regular cultures list
return [$regionInfo->getThreeLetterISORegionName() => $regionInfo->getNativeName() !== '' ? $regionInfo->getNativeName() : $regionInfo->getDisplayName()];
})->collapse()->sort();
/** @var SiteUserInterface $authUser */
$authUser = Auth::user();
return view('organisms/my_account/data', [
'accountAddress' => $authUser->accountAddress()->first(),
'user' => Auth::user(),
'links' => $this->links
]);
}
}