From 80f96abf08fcc4eef548d59dcdf3e399023aef65 Mon Sep 17 00:00:00 2001 From: James Cole Date: Wed, 17 Jan 2018 10:40:44 +0100 Subject: [PATCH] Fix notes in link types. --- .../Transaction/LinkController.php | 36 +++++++++---------- app/Http/Requests/JournalLinkRequest.php | 2 +- app/Models/TransactionJournalLink.php | 9 +++++ .../LinkType/LinkTypeRepository.php | 17 +++++++-- 4 files changed, 43 insertions(+), 21 deletions(-) diff --git a/app/Http/Controllers/Transaction/LinkController.php b/app/Http/Controllers/Transaction/LinkController.php index 28b7b78719..e1fe464f18 100644 --- a/app/Http/Controllers/Transaction/LinkController.php +++ b/app/Http/Controllers/Transaction/LinkController.php @@ -38,6 +38,11 @@ use URL; */ class LinkController extends Controller { + /** @var JournalRepositoryInterface */ + private $journalRepository; + /** @var LinkTypeRepositoryInterface */ + private $repository; + /** * */ @@ -50,6 +55,9 @@ class LinkController extends Controller app('view')->share('title', trans('firefly.transactions')); app('view')->share('mainTitleIcon', 'fa-repeat'); + $this->journalRepository = app(JournalRepositoryInterface::class); + $this->repository = app(LinkTypeRepositoryInterface::class); + return $next($request); } ); @@ -70,14 +78,13 @@ class LinkController extends Controller } /** - * @param LinkTypeRepositoryInterface $repository * @param TransactionJournalLink $link * * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ - public function destroy(LinkTypeRepositoryInterface $repository, TransactionJournalLink $link) + public function destroy(TransactionJournalLink $link) { - $repository->destroyLink($link); + $this->repository->destroyLink($link); Session::flash('success', strval(trans('firefly.deleted_link'))); Preferences::mark(); @@ -87,18 +94,13 @@ class LinkController extends Controller /** * @param JournalLinkRequest $request - * @param LinkTypeRepositoryInterface $repository - * @param JournalRepositoryInterface $journalRepository * @param TransactionJournal $journal * * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ - public function store( - JournalLinkRequest $request, - LinkTypeRepositoryInterface $repository, - JournalRepositoryInterface $journalRepository, - TransactionJournal $journal - ) { + public function store(JournalLinkRequest $request, TransactionJournal $journal) + { + Log::debug('We are here (store)'); $linkInfo = $request->getLinkInfo(); if (0 === $linkInfo['transaction_journal_id']) { @@ -106,30 +108,28 @@ class LinkController extends Controller return redirect(route('transactions.show', [$journal->id])); } - $other = $journalRepository->find($linkInfo['transaction_journal_id']); - $alreadyLinked = $repository->findLink($journal, $other); + $other = $this->journalRepository->find($linkInfo['transaction_journal_id']); + $alreadyLinked = $this->repository->findLink($journal, $other); if ($alreadyLinked) { Session::flash('error', trans('firefly.journals_error_linked')); return redirect(route('transactions.show', [$journal->id])); } Log::debug(sprintf('Journal is %d, opposing is %d', $journal->id, $other->id)); - - $repository->storeLink($linkInfo, $other, $journal); + $this->repository->storeLink($linkInfo, $other, $journal); Session::flash('success', trans('firefly.journals_linked')); return redirect(route('transactions.show', [$journal->id])); } /** - * @param LinkTypeRepositoryInterface $repository * @param TransactionJournalLink $link * * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ - public function switchLink(LinkTypeRepositoryInterface $repository, TransactionJournalLink $link) + public function switchLink(TransactionJournalLink $link) { - $repository->switchLink($link); + $this->repository->switchLink($link); return redirect(URL::previous()); } diff --git a/app/Http/Requests/JournalLinkRequest.php b/app/Http/Requests/JournalLinkRequest.php index 5544706986..725f71e40c 100644 --- a/app/Http/Requests/JournalLinkRequest.php +++ b/app/Http/Requests/JournalLinkRequest.php @@ -48,7 +48,7 @@ class JournalLinkRequest extends Request $parts = explode('_', $linkType); $return['link_type_id'] = intval($parts[0]); $return['transaction_journal_id'] = $this->integer('link_journal_id'); - $return['comments'] = strlen($this->string('comments')) > 0 ? $this->string('comments') : null; + $return['notes'] = strlen($this->string('notes')) > 0 ? $this->string('notes') : ''; $return['direction'] = $parts[1]; if (0 === $return['transaction_journal_id'] && ctype_digit($this->string('link_other'))) { $return['transaction_journal_id'] = $this->integer('link_other'); diff --git a/app/Models/TransactionJournalLink.php b/app/Models/TransactionJournalLink.php index 36ec286341..8d216cc8ae 100644 --- a/app/Models/TransactionJournalLink.php +++ b/app/Models/TransactionJournalLink.php @@ -95,6 +95,15 @@ class TransactionJournalLink extends Model return $this->belongsTo(LinkType::class); } + /** + * @codeCoverageIgnore + * Get all of the notes. + */ + public function notes() + { + return $this->morphMany(Note::class, 'noteable'); + } + /** * @codeCoverageIgnore * diff --git a/app/Repositories/LinkType/LinkTypeRepository.php b/app/Repositories/LinkType/LinkTypeRepository.php index 0e9c7acf8e..eda9a6272b 100644 --- a/app/Repositories/LinkType/LinkTypeRepository.php +++ b/app/Repositories/LinkType/LinkTypeRepository.php @@ -24,6 +24,7 @@ namespace FireflyIII\Repositories\LinkType; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Models\LinkType; +use FireflyIII\Models\Note; use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournalLink; use FireflyIII\User; @@ -188,10 +189,22 @@ class LinkTypeRepository implements LinkTypeRepositoryInterface $link->source()->associate($right); $link->destination()->associate($left); } - - $link->comment = $link['comments'] ?? null; $link->save(); + // make note in noteable: + if (strlen($information['notes']) > 0) { + $dbNote = $link->notes()->first(); + if (null === $dbNote) { + $dbNote = new Note(); + $dbNote->noteable()->associate($link); + } + $dbNote->text = trim($information['notes']); + $dbNote->save(); + } + + //$link->comment = $link['notes'] ?? null; + + return $link; }