. */ /** @noinspection PhpDynamicAsStaticMethodCallInspection */ declare(strict_types=1); namespace FireflyIII\Http\Requests; use FireflyIII\Models\LinkType; /** * Class JournalLink. */ class JournalLinkRequest extends Request { /** * Verify the request. * * @return bool */ public function authorize(): bool { // Only allow logged in users return auth()->check(); } /** * Returns the data required by the controller. * * @return array */ public function getLinkInfo(): array { $return = []; $linkType = $this->get('link_type'); $parts = explode('_', $linkType); $return['link_type_id'] = (int)$parts[0]; $return['transaction_journal_id'] = $this->integer('opposing'); $return['notes'] = $this->string('notes'); $return['direction'] = $parts[1]; return $return; } /** * Rules for this request. * * @return array */ public function rules(): array { // all possible combinations of link types and inward / outward: $combinations = []; $linkTypes = LinkType::get(['id']); /** @var LinkType $type */ foreach ($linkTypes as $type) { $combinations[] = sprintf('%d_inward', $type->id); $combinations[] = sprintf('%d_outward', $type->id); } $string = implode(',', $combinations); // fixed return [ 'link_type' => sprintf('required|in:%s', $string), 'opposing' => 'belongsToUser:transaction_journals', ]; } }