HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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
        ]);
    }
}