*/ protected function payloada(): array { return json_decode(rawurldecode(base64_decode($this->input('payload', ''))), true); } public function validateContribution(): void { Validator::make($this->payload(), app(ContributionFactory::class)->rules($this->type()))->validate(); } /** * @return string|array */ public function value(string $key): string|array { return data_get($this->payload(), $key); } /** * @return class-string */ public function type(): string { return $this->value('type'); } public function dateFrom(): Carbon { return Carbon::parse($this->value('dateFrom')); } public function dateUntil(): Carbon { return Carbon::parse($this->value('dateUntil')); } public function zipLocation(): string { return $this->value('zipLocation'); } public function eventName(): string { return $this->value('eventName'); } public function members(): Collection { return MemberData::fromModels($this->value('members')); } public function country(): ?Country { return Country::where('id', $this->value('country'))->first(); } }