Fix notes in link types.

This commit is contained in:
James Cole 2018-01-17 10:40:44 +01:00
parent 70da38193f
commit 80f96abf08
No known key found for this signature in database
GPG Key ID: C16961E655E74B5E
4 changed files with 43 additions and 21 deletions

View File

@ -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());
}

View File

@ -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');

View File

@ -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
*

View File

@ -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;
}