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;
}
}