Lint
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
This commit is contained in:
parent
d14a373a76
commit
52b7e39d4c
|
@ -2,10 +2,8 @@
|
||||||
|
|
||||||
namespace App;
|
namespace App;
|
||||||
|
|
||||||
use App\Http\Views\ActivityFilterScope;
|
|
||||||
use App\Nami\HasNamiField;
|
use App\Nami\HasNamiField;
|
||||||
use Cviebrock\EloquentSluggable\Sluggable;
|
use Cviebrock\EloquentSluggable\Sluggable;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||||
|
@ -33,16 +31,6 @@ class Activity extends Model
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder<self> $query
|
|
||||||
*
|
|
||||||
* @return Builder<self>
|
|
||||||
*/
|
|
||||||
public function scopeWithFilter(Builder $query, ActivityFilterScope $filter): Builder
|
|
||||||
{
|
|
||||||
return $filter->apply($query);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return BelongsToMany<Subactivity>
|
* @return BelongsToMany<Subactivity>
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -4,7 +4,6 @@ namespace App\Activity\Actions;
|
||||||
|
|
||||||
use App\Activity;
|
use App\Activity;
|
||||||
use App\Activity\Resources\ActivityResource;
|
use App\Activity\Resources\ActivityResource;
|
||||||
use App\Http\Views\ActivityFilterScope;
|
|
||||||
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
||||||
use Inertia\Inertia;
|
use Inertia\Inertia;
|
||||||
use Inertia\Response;
|
use Inertia\Response;
|
||||||
|
@ -15,19 +14,18 @@ class IndexAction
|
||||||
{
|
{
|
||||||
use AsAction;
|
use AsAction;
|
||||||
|
|
||||||
public function handle(ActivityFilterScope $filter): AnonymousResourceCollection
|
public function handle(): AnonymousResourceCollection
|
||||||
{
|
{
|
||||||
return ActivityResource::collection(Activity::withFilter($filter)->paginate(20));
|
return ActivityResource::collection(Activity::paginate(20));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function asController(ActionRequest $request): Response
|
public function asController(ActionRequest $request): Response
|
||||||
{
|
{
|
||||||
session()->put('menu', 'activity');
|
session()->put('menu', 'activity');
|
||||||
session()->put('title', 'Tätigkeiten');
|
session()->put('title', 'Tätigkeiten');
|
||||||
$filter = ActivityFilterScope::fromRequest($request->input('filter'));
|
|
||||||
|
|
||||||
return Inertia::render('activity/VIndex', [
|
return Inertia::render('activity/VIndex', [
|
||||||
'data' => $this->handle($filter),
|
'data' => $this->handle(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
namespace App\Activity\Resources;
|
namespace App\Activity\Resources;
|
||||||
|
|
||||||
use App\Activity;
|
use App\Activity;
|
||||||
use App\Http\Views\ActivityFilterScope;
|
|
||||||
use App\Lib\HasMeta;
|
use App\Lib\HasMeta;
|
||||||
use App\Resources\SubactivityResource;
|
use App\Resources\SubactivityResource;
|
||||||
use App\Subactivity;
|
use App\Subactivity;
|
||||||
|
@ -51,7 +50,6 @@ class ActivityResource extends JsonResource
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'subactivities' => SubactivityResource::collectionWithoutMeta(Subactivity::get()),
|
'subactivities' => SubactivityResource::collectionWithoutMeta(Subactivity::get()),
|
||||||
'filter' => ActivityFilterScope::fromRequest(request()->input('filter')),
|
|
||||||
'links' => [
|
'links' => [
|
||||||
'index' => route('activity.index'),
|
'index' => route('activity.index'),
|
||||||
'create' => route('activity.create'),
|
'create' => route('activity.create'),
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Views;
|
|
||||||
|
|
||||||
use App\Activity;
|
|
||||||
use App\Lib\Filter;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use Laravel\Scout\Builder as ScoutBuilder;
|
|
||||||
use Spatie\LaravelData\Attributes\MapInputName;
|
|
||||||
use Spatie\LaravelData\Attributes\MapOutputName;
|
|
||||||
use Spatie\LaravelData\Mappers\SnakeCaseMapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @extends Filter<Activity>
|
|
||||||
*/
|
|
||||||
#[MapInputName(SnakeCaseMapper::class)]
|
|
||||||
#[MapOutputName(SnakeCaseMapper::class)]
|
|
||||||
class ActivityFilterScope extends Filter
|
|
||||||
{
|
|
||||||
public function __construct(
|
|
||||||
public ?int $subactivityId = null,
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getQuery(): ScoutBuilder
|
|
||||||
{
|
|
||||||
return Activity::search('');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Builder<Activity> $query
|
|
||||||
*
|
|
||||||
* @return Builder<Activity>
|
|
||||||
*/
|
|
||||||
public function apply(Builder $query): Builder
|
|
||||||
{
|
|
||||||
if ($this->subactivityId) {
|
|
||||||
$query->whereHas('subactivities', fn ($query) => $query->where('id', $this->subactivityId));
|
|
||||||
}
|
|
||||||
|
|
||||||
return $query;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -14,7 +14,7 @@ abstract class Filter extends Data
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return self<T>
|
* @return Builder
|
||||||
*/
|
*/
|
||||||
abstract public function getQuery(): Builder;
|
abstract public function getQuery(): Builder;
|
||||||
protected Builder $query;
|
protected Builder $query;
|
||||||
|
|
|
@ -499,7 +499,7 @@ class Member extends Model implements Geolocatable
|
||||||
'lastname' => $this->lastname,
|
'lastname' => $this->lastname,
|
||||||
'birthday' => $this->birthday?->format('Y-m-d'),
|
'birthday' => $this->birthday?->format('Y-m-d'),
|
||||||
'ausstand' => $this->getAusstand(),
|
'ausstand' => $this->getAusstand(),
|
||||||
'bill_kind' => $this->bill_kind?->value,
|
'bill_kind' => $this->bill_kind->value,
|
||||||
'group_id' => $this->group->id,
|
'group_id' => $this->group->id,
|
||||||
'memberships' => $this->memberships()->active()->get()
|
'memberships' => $this->memberships()->active()->get()
|
||||||
->map(fn ($membership) => [...$membership->only('activity_id', 'subactivity_id'), 'both' => $membership->activity_id . '|' . $membership->subactivity_id]),
|
->map(fn ($membership) => [...$membership->only('activity_id', 'subactivity_id'), 'both' => $membership->activity_id . '|' . $membership->subactivity_id]),
|
||||||
|
|
|
@ -25,26 +25,4 @@ class IndexTest extends TestCase
|
||||||
$this->assertInertiaHas(route('membership.masslist.index'), $response, 'data.meta.links.membership_masslist');
|
$this->assertInertiaHas(route('membership.masslist.index'), $response, 'data.meta.links.membership_masslist');
|
||||||
$this->assertCount(2, $this->inertia($response, 'data.data'));
|
$this->assertCount(2, $this->inertia($response, 'data.data'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItDisplaysDefaultFilter(): void
|
|
||||||
{
|
|
||||||
$this->login()->loginNami()->withoutExceptionHandling();
|
|
||||||
|
|
||||||
$response = $this->callFilter('activity.index', []);
|
|
||||||
|
|
||||||
$this->assertInertiaHas(null, $response, 'data.meta.filter.subactivity');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testItFiltersActivityBySubactivity(): void
|
|
||||||
{
|
|
||||||
$this->login()->loginNami()->withoutExceptionHandling();
|
|
||||||
$subactivity = Subactivity::factory()->name('jjon')->create();
|
|
||||||
Activity::factory()->name('Local')->hasAttached($subactivity)->create();
|
|
||||||
Activity::factory()->count(2)->name('Local')->create();
|
|
||||||
|
|
||||||
$response = $this->callFilter('activity.index', ['subactivity_id' => $subactivity->id]);
|
|
||||||
|
|
||||||
$this->assertInertiaHas($subactivity->id, $response, 'data.meta.filter.subactivity_id');
|
|
||||||
$this->assertCount(1, $this->inertia($response, 'data.data'));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue