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/Eurotools/euro-tools.nl/app/KommaApp/Auth/ProfileController.php
<?php

namespace App\KommaApp\Auth;

use App\Http\Controllers\Controller;
use App\KommaApp\Countries\CountryRepository;
use App\KommaApp\EUCountries;
use App\KommaApp\Pages\Models\Page;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;

class ProfileController extends Controller
{
    public function profile(Request $request)
    {
        $otherLanguageRoutes = (object)
            array(
                'metaTranslationRoutes' => array(
                        '104' => (object) array(
                            "iso" => "nl",
                            "route" => 'nl/'. strtolower( __('site/global.profile', [], 'nl'))
                        ),
                        '50' => (object) array(
                            "iso" => "de",
                            "route" => 'de/'. strtolower( __('site/global.profile', [], 'de'))
                        ),
                        '40' => (object) array(
                            "iso" => "en",
                            "route" => 'en/'. strtolower( __('site/global.profile', [], 'en'))
                        ),
                    ),

                'languageMenuRoutes' => array(
                    '104' => (object) array(
                        "iso" => "nl",
                        "route" => 'nl/'. strtolower( __('site/global.profile', [], 'nl'))
                    ),
                    '50' => (object) array(
                        "iso" => "de",
                        "route" => 'de/'. strtolower( __('site/global.profile', [], 'de'))
                    ),
                    '40' => (object) array(
                        "iso" => "en",
                        "route" => 'en/'. strtolower( __('site/global.profile', [], 'en'))
                    )
                )
            );

        return view('site.auth.edit', [
            'links' => $this->links,
            'categories' => $this->categories,
            'otherLanguages' => $otherLanguageRoutes,
            'countries' => $this->getCountriesForSelect(),
            'user' => Auth::user()
        ]);
    }

    public function editProfile(Request $request)
    {

        $selectableCountries = [];
        foreach (EUCountries::DATA as $euCountry)
        {
            $selectableCountries[$euCountry['iso_code']] = $euCountry['native'];
        }

        asort($selectableCountries);

        if(!$request->has('gender')) {
            $request->request->add(['gender' => 'male']);
        }
        $this->validator($request->all())->validate();

        $requestData = $request->all();
        if($request->has('differentShippingAddress')) {
            $requestData['differentShippingAddress'] = 1;
        } else {
            $requestData['differentShippingAddress'] = 0;
        }

        /** @var $user $user */
        $user = Auth::user();

        $user->fill($requestData);
        $user->save();

        if(\Session::has('referer')) {
            $referer = \Session::get('referer');
            dd("referer", $referer);
            \Session::forget('referer');
            return redirect($referer);
        }

        $otherLanguageRoutes = $this->languageService->getOtherLanguagesRoutes(Page::where('active', '=', 1)->first());

        return view('site.auth.edit', [
            'links' => $this->links,
            'categories' => $this->categories,
            'otherLanguages' => $otherLanguageRoutes,
            'countries' => $selectableCountries,
            'user' => Auth::user(),
            'stored' => true
        ]);
    }

    public function validator($data)
    {
        return Validator::make($data, [
            'email' => [
                'required',
                'email',
                'max:255',
                Rule::unique('users')->ignore(Auth::user()->id),
            ],
            'first_name' => 'required|string|max:255',
            'last_name' => 'required|string|max:255',
            'company_name' => 'required|string|max:255',
            'chamber_of_commerce' => 'required|string|max:255',
            'company_street' => 'required|string|max:255',
            'company_house_number' => 'required|string|max:255',
            'company_zip_code' => 'required|string|max:255',
            'company_city' => 'required|string|max:255',
            'company_country' => 'required|string|max:255',
            'shipping_street' => 'sometimes|required|string|max:255',
            'shipping_house_number' => 'sometimes|required|string|max:255',
            'shipping_zip_code' => 'sometimes|required|string|max:255',
            'shipping_city' => 'sometimes|required|string|max:255',
            'shipping_country' => 'sometimes|required|string|max:255',
            'telephone' => 'required|integer',
        ]);
    }

    private function getCountriesForSelect()
    {
        $countries = \App::make(CountryRepository::class)->allCountries();

        $selectableCountries = [];
        foreach ($countries as $country) {
            if (\Lang::has('countries.' . $country->iso_2)) {
                $selectableCountries[$country->iso_2] = \Lang::get('countries.' . $country->iso_2);
            }
        }
        asort($selectableCountries);

        return $selectableCountries;
    }
}