<?php
namespace App\Http\Controllers;
use App\Models\Language;
use Auth;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Session;
class LanguageController extends Controller
{
/**
*
* set localization
*
* @param $locale
*
* @return RedirectResponse
*/
public function swap($locale): RedirectResponse
{
if (config('app.stage') == 'demo') {
return redirect()->back()->with([
'status' => 'error',
'message' => 'Sorry! This option is not available in demo mode',
]);
}
$availLocale = Session::get('availableLocale');
if ( ! isset($availLocale)) {
$availLocale = Language::where('status', 1)->select('code')->cursor()->map(function ($name) {
return $name->code;
})->toArray();
Session::put('availableLocale', $availLocale);
}
$localeCount = Language::where('status', 1)->count();
if ($localeCount != count($availLocale)) {
$availLocale = Language::where('status', 1)->select('code')->cursor()->map(function ($name) {
return $name->code;
})->toArray();
Session::put('availableLocale', $availLocale);
}
// check for existing language
if (in_array($locale, $availLocale)) {
Session::put('locale', $locale);
}
Auth::user()->update([
'locale' => $locale,
]);
if (Auth::user()->active_portal == 'customer' && Auth::user()->is_customer == 1){
return redirect()->route('user.home');
}
return redirect()->route('admin.home');
}
public function languages()
{
$availLocale = Session::get('available_languages');
if ( ! isset($availLocale)) {
$availLocale = Language::where('status', 1)->cursor()->map(function ($lang) {
return [
'name' => $lang->name,
'code' => $lang->code,
];
})->toArray();
Session::put('available_languages', $availLocale);
}
$localeCount = Language::where('status', 1)->count();
if ($localeCount != count($availLocale)) {
$availLocale = Language::where('status', 1)->select('code')->cursor()->map(function ($name) {
return $name->code;
})->toArray();
Session::put('available_languages', $availLocale);
}
return $availLocale;
}
}