*/ public array $initializers = [ InitializeGroups::class, InitializeNationalities::class, InitializeFees::class, InitializeActivities::class, InitializeConfessions::class, InitializeCountries::class, InitializeGenders::class, InitializeRegions::class, InitializeCourses::class, InitializeMembers::class, ]; private Api $api; public function handle(): void { foreach ($this->initializers as $initializer) { app($initializer)->handle($this->api); } } /** * @return array */ public function rules(): array { return [ 'mglnr' => 'required|numeric', 'password' => 'required|string', 'group_id' => 'required|numeric', ]; } /** * @return array */ public function getValidationAttributes(): array { return [ 'group_id' => 'Gruppierungsnr', ]; } public function asController(ActionRequest $request): RedirectResponse { $api = Nami::freshLogin($request->input('mglnr'), $request->input('password')); if (!$api->hasGroup($request->input('group_id'))) { throw ValidationException::withMessages(['nami' => 'Gruppierung nicht gefunden.']); } $this->setApi((int) $request->input('mglnr'), $request->input('password'), (int) $request->input('group_id')); $this->handle(); return redirect()->route('home')->success('Initialisierung beauftragt. Wir benachrichtigen dich per Mail wenn alles fertig ist.'); } public function asCommand(Command $command): void { $this->setApi((int) $command->option('mglnr'), $command->option('password'), (int) $command->option('group')); $this->handle(); } private function setApi(int $mglnr, string $password, int $groupId): void { $settings = app(NamiSettings::class); $settings->mglnr = $mglnr; $settings->password = $password; $settings->default_group_id = $groupId; $settings->save(); $this->api = $settings->login(); } }