add languages

This commit is contained in:
Benjamin Takats
2022-12-18 22:03:13 +01:00
parent 2f531cbb85
commit 271cc0a4e8

View File

@@ -12,40 +12,45 @@ class LanguageController extends Controller
{ {
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* @return \Illuminate\Http\Response * @return \Illuminate\Http\JsonResponse
*/ */
public function index(Request $request) public function index(Request $request)
{ {
return Language::query() $array = Language::query()
->select('id', 'name', 'language') ->select('id', 'name', 'language')
->orderBy('name') ->orderBy('name')
->with([ ->when(
'translations:value,language_id', $request->search,
]) fn(Builder $query) => $query
->when( ->where('name', 'ilike', "%{$request->search}%")
$request->search, ->orWhere('language', 'ilike', "%{$request->search}%")
fn(Builder $query) => $query )
->where('name', 'ilike', "%{$request->search}%") ->when(
->orWhere('language', 'ilike', "%{$request->search}%") $request->exists('selected'),
) fn(Builder $query) => $query->whereIn('language', $request->input('selected', [])),
->when( fn(Builder $query) => $query->limit(10)
$request->exists('selected'), )
fn(Builder $query) => $query->whereIn('language', $request->input('selected', [])), ->get()
fn(Builder $query) => $query->limit(10) ->map(function ($language) {
) $language->translatedCount = Translation::query()
->get() ->where('language_id', $language['id'])
->map(function (Language $language) { ->whereNotNull('value')
$translated = $language->translations->whereNotNull('value')
->where('value', '<>', '') ->where('value', '<>', '')
->count(); ->count();
$toTranslate = Translation::query() $language->toTranslate = Translation::query()
->where('language_id', $language->id) ->where('language_id', $language['id'])
->count(); ->count();
$language->name = $language->name ? trans($language->name) : $language->language; return $language;
$language->description = $language->language === 'en' ? '100% translated' : round($translated / $toTranslate * 100).'% translated'; })
->toArray();
foreach ($array as &$item) {
$item['translated'] = __($item['name']);
$item['description'] = $item['language'] === 'en'
? __('100% translated')
: round($item['translatedCount'] / $item['toTranslate'] * 100).__('% translated');
}
return $language; return response()->json($array);
});
} }
/** /**