country selector changed

This commit is contained in:
Benjamin Takats
2022-12-17 18:37:14 +01:00
parent a932ecc3f0
commit 45355b42bb
4 changed files with 109 additions and 14 deletions

View File

@@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Country;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
class CountryController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
return Country::query()
->select('id', 'name', 'code')
->orderBy('name')
->when(
$request->search,
fn (Builder $query) => $query
->where('name', 'ilike', "%{$request->search}%")
->orWhere('code', 'ilike', "%{$request->search}%")
)
->when(
$request->exists('selected'),
fn (Builder $query) => $query->whereIn('code', $request->input('selected', [])),
fn (Builder $query) => $query->limit(10)
)
->get()
->map(function (Country $country) {
$country->flag = asset('vendor/blade-country-flags/4x3-'.$country->code.'.svg');
return $country;
});
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\Country $country
* @return \Illuminate\Http\Response
*/
public function show(Country $country)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Country $country
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Country $country)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Country $country
* @return \Illuminate\Http\Response
*/
public function destroy(Country $country)
{
//
}
}

View File

@@ -89,13 +89,15 @@
placeholder="Land wechseln"
wire:model="c"
:clearable="false"
>
@foreach($countries as $country)
<x-select.user-option
src="{{ asset('vendor/blade-country-flags/4x3-'.$country->code.'.svg') }}"
label="{{ $country->name }}" value="{{ $country->code }}"/>
@endforeach
</x-select>
:searchable="true"
:async-data="route('api.countries.index')"
option-label="name"
option-value="code"
:template="[
'name' => 'user-option',
'config' => ['src' => 'flag']
]"
/>
</div>
@auth
<div></div>

View File

@@ -17,13 +17,15 @@
placeholder="Land wechseln"
wire:model="c"
:clearable="false"
>
@foreach($countries as $country)
<x-select.user-option
src="{{ asset('vendor/blade-country-flags/4x3-'.$country->code.'.svg') }}"
label="{{ $country->name }}" value="{{ $country->code }}"/>
@endforeach
</x-select>
:searchable="true"
:async-data="route('api.countries.index')"
option-label="name"
option-value="code"
:template="[
'name' => 'user-option',
'config' => ['src' => 'flag']
]"
/>
</div>
</div>
<div class="grid w-full grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4">

View File

@@ -23,6 +23,12 @@ Route::middleware('auth:sanctum')
return $request->user();
});
Route::middleware([])
->as('api.')
->group(function () {
Route::resource('countries', \App\Http\Controllers\Api\CountryController::class);
});
Route::get('/lnurl-auth-callback', function (\Illuminate\Http\Request $request) {
if (lnurl\auth($request->k1, $request->sig, $request->key)) {
// find User by $wallet_public_key