parent
d07f316ab3
commit
63c0efcaa8
|
@ -1,36 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Contribution\Actions;
|
||||
|
||||
use App\Contribution\ContributionFactory;
|
||||
use App\Country;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
use Lorisleiva\Actions\Concerns\AsAction;
|
||||
|
||||
class FormAction
|
||||
{
|
||||
use AsAction;
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function handle(): array
|
||||
{
|
||||
return [
|
||||
'countries' => Country::select('name', 'id')->get(),
|
||||
'data' => [
|
||||
'country' => Country::firstWhere('name', 'Deutschland')->id,
|
||||
],
|
||||
'compilers' => app(ContributionFactory::class)->compilerSelect(),
|
||||
];
|
||||
}
|
||||
|
||||
public function asController(): Response
|
||||
{
|
||||
session()->put('menu', 'contribution');
|
||||
session()->put('title', 'Zuschüsse');
|
||||
|
||||
return Inertia::render('contribution/VIndex', $this->handle());
|
||||
}
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Contribution\Actions;
|
||||
|
||||
use App\Contribution\ContributionFactory;
|
||||
use App\Contribution\Documents\ContributionDocument;
|
||||
use App\Rules\JsonBase64Rule;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Lorisleiva\Actions\ActionRequest;
|
||||
use Lorisleiva\Actions\Concerns\AsAction;
|
||||
use Zoomyboy\Tex\BaseCompiler;
|
||||
use Zoomyboy\Tex\Tex;
|
||||
|
||||
class GenerateAction
|
||||
{
|
||||
use AsAction;
|
||||
|
||||
/**
|
||||
* @param class-string<ContributionDocument> $document
|
||||
* @param array<string, mixed> $payload
|
||||
*/
|
||||
public function handle(string $document, array $payload): BaseCompiler
|
||||
{
|
||||
return Tex::compile($document::fromRequest($payload));
|
||||
}
|
||||
|
||||
public function asController(ActionRequest $request): BaseCompiler
|
||||
{
|
||||
$payload = $this->payload($request);
|
||||
$type = data_get($payload, 'type');
|
||||
ValidateAction::validateType($type);
|
||||
Validator::make($payload, app(ContributionFactory::class)->rules($type))->validate();
|
||||
|
||||
return $this->handle($type, $payload);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'payload' => [new JsonBase64Rule()],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, string>
|
||||
*/
|
||||
private function payload(ActionRequest $request): array
|
||||
{
|
||||
return json_decode(rawurldecode(base64_decode($request->input('payload', ''))), true);
|
||||
}
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Contribution\Actions;
|
||||
|
||||
use App\Contribution\Documents\ContributionDocument;
|
||||
use Lorisleiva\Actions\ActionRequest;
|
||||
use Lorisleiva\Actions\Concerns\AsAction;
|
||||
use Zoomyboy\Tex\BaseCompiler;
|
||||
use Zoomyboy\Tex\Tex;
|
||||
|
||||
class GenerateApiAction
|
||||
{
|
||||
use AsAction;
|
||||
|
||||
/**
|
||||
* @param class-string<ContributionDocument> $document
|
||||
* @param array<string, mixed> $payload
|
||||
*/
|
||||
public function handle(string $document, array $payload): BaseCompiler
|
||||
{
|
||||
return Tex::compile($document::fromApiRequest($payload));
|
||||
}
|
||||
|
||||
public function asController(ActionRequest $request): BaseCompiler
|
||||
{
|
||||
ValidateAction::validateType($request->input('type'));
|
||||
|
||||
return $this->handle($request->input('type'), $request->input());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Contribution\Actions;
|
||||
|
||||
use App\Contribution\ContributionFactory;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Lorisleiva\Actions\ActionRequest;
|
||||
use Lorisleiva\Actions\Concerns\AsAction;
|
||||
|
||||
class ValidateAction
|
||||
{
|
||||
use AsAction;
|
||||
|
||||
public function asController(): JsonResponse
|
||||
{
|
||||
return response()->json(['valid' => true]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return app(ContributionFactory::class)->rules(request()->type);
|
||||
}
|
||||
|
||||
public function prepareForValidation(ActionRequest $request): void
|
||||
{
|
||||
static::validateType($request->input('type'));
|
||||
}
|
||||
|
||||
public static function validateType(?string $type = null): void
|
||||
{
|
||||
Validator::make(['type' => $type], app(ContributionFactory::class)->typeRule())->validate();
|
||||
}
|
||||
}
|
|
@ -10,7 +10,6 @@ use App\Contribution\Documents\CitySolingenDocument;
|
|||
use App\Contribution\Documents\CityFrankfurtMainDocument;
|
||||
use App\Contribution\Documents\WuppertalDocument;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class ContributionFactory
|
||||
{
|
||||
|
@ -36,27 +35,4 @@ class ContributionFactory
|
|||
'id' => $document,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function typeRule(): array
|
||||
{
|
||||
return [
|
||||
'type' => ['required', Rule::in($this->documents)],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param class-string<ContributionDocument> $type
|
||||
*
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function rules(string $type): array
|
||||
{
|
||||
return [
|
||||
...$type::globalRules(),
|
||||
...$type::rules(),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,8 +6,10 @@ use App\Contribution\ContributionFactory;
|
|||
use App\Country;
|
||||
use Illuminate\Support\Collection;
|
||||
use App\Member\Member;
|
||||
use Carbon\Carbon;
|
||||
use Livewire\Attributes\Validate;
|
||||
use Livewire\Component;
|
||||
use Zoomyboy\Tex\Tex;
|
||||
|
||||
class FillList extends Component
|
||||
{
|
||||
|
@ -43,12 +45,14 @@ class FillList extends Component
|
|||
$this->compilers = app(ContributionFactory::class)->compilerSelect();
|
||||
$this->countries = Country::select('name', 'id')->get()->toBase();
|
||||
$this->clearSearch();
|
||||
$this->country = Country::firstWhere('name', 'Deutschland')->id;
|
||||
}
|
||||
|
||||
/** @todo implement compilation of document */
|
||||
public function submit(): void
|
||||
public function submit()
|
||||
{
|
||||
$this->validate();
|
||||
$payload = $this->validate();
|
||||
|
||||
return Tex::compile($this->compiler::fromRequest($payload));
|
||||
}
|
||||
|
||||
public function updatedSearch(): void
|
||||
|
@ -96,7 +100,7 @@ class FillList extends Component
|
|||
<x-form::text name="eventName" wire:model="eventName" class="col-span-2" label="Veranstaltungs-Name" required></x-form::text>
|
||||
<x-form::text name="dateFrom" wire:model="dateFrom" type="date" label="Datum von" required></x-form::text>
|
||||
<x-form::text name="dateUntil" wire:model="dateUntil" type="date" label="Datum bis" required></x-form::text>
|
||||
<x-form::text name="zipLocation" v-model="zipLocation" label="PLZ / Ort" required></x-form::text>
|
||||
<x-form::text name="zipLocation" wire:model="zipLocation" label="PLZ / Ort" required></x-form::text>
|
||||
<x-form::select name="country" wire:model="country" :options="$countries" label="Land" required></x-form::select>
|
||||
<x-form::select name="compiler" wire:model="compiler" :options="$compilers" label="Formular" required></x-form::select>
|
||||
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
<?php
|
||||
|
||||
use App\Contribution\Actions\GenerateApiAction as ContributionGenerateApiAction;
|
||||
use App\Form\Actions\FormApiListAction;
|
||||
use App\Form\Actions\RegisterAction;
|
||||
use App\Group\Actions\GroupApiIndexAction;
|
||||
|
||||
Route::post('/contribution-generate', ContributionGenerateApiAction::class)->name('api.contribution.generate')->middleware('client:contribution-generate');
|
||||
Route::post('/form/{form}/register', RegisterAction::class)->name('form.register');
|
||||
Route::get('/group/{group?}', GroupApiIndexAction::class)->name('api.group');
|
||||
Route::get('/form', FormApiListAction::class)->name('api.form.index');
|
||||
|
|
|
@ -11,7 +11,6 @@ use App\Activity\Api\SubactivityStoreAction;
|
|||
use App\Activity\Api\SubactivityUpdateAction;
|
||||
use App\Contribution\Actions\FormAction as ContributionFormAction;
|
||||
use App\Contribution\Actions\GenerateAction as ContributionGenerateAction;
|
||||
use App\Contribution\Actions\ValidateAction as ContributionValidateAction;
|
||||
use App\Course\Actions\CourseDestroyAction;
|
||||
use App\Course\Actions\CourseIndexAction;
|
||||
use App\Course\Actions\CourseStoreAction;
|
||||
|
@ -102,11 +101,6 @@ Route::group(['middleware' => 'auth:web'], function (): void {
|
|||
Route::get('/subactivity/{subactivity}', SubactivityShowAction::class)->name('api.subactivity.show');
|
||||
Route::post('/api/member/search', SearchAction::class)->name('member.search');
|
||||
|
||||
// ------------------------------- Contributions -------------------------------
|
||||
Route::get('/contribution', ContributionFormAction::class)->name('contribution.form');
|
||||
Route::get('/contribution-generate', ContributionGenerateAction::class)->name('contribution.generate');
|
||||
Route::post('/contribution-validate', ContributionValidateAction::class)->name('contribution.validate');
|
||||
|
||||
// ----------------------------------- mail ------------------------------------
|
||||
Route::get('/maildispatcher', IndexAction::class)->name('maildispatcher.index');
|
||||
Route::get('/maildispatcher/create', CreateAction::class)->name('maildispatcher.create');
|
||||
|
|
Loading…
Reference in New Issue