middleware( function ($request, $next) { View::share('title', trans('firefly.transactions')); View::share('mainTitleIcon', 'fa-repeat'); return $next($request); } ); } /** * @param TransactionJournalLink $link * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function delete(TransactionJournalLink $link) { $subTitleIcon = 'fa-link'; $subTitle = trans('breadcrumbs.delete_journal_link'); $this->rememberPreviousUri('journal_links.delete.uri'); return view('transactions.links.delete', compact('link', 'subTitle', 'subTitleIcon')); } /** * @param LinkTypeRepositoryInterface $repository * @param TransactionJournalLink $link * * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function destroy(LinkTypeRepositoryInterface $repository, TransactionJournalLink $link) { $repository->destroyLink($link); Session::flash('success', strval(trans('firefly.deleted_link'))); Preferences::mark(); return redirect(strval(session('journal_links.delete.uri'))); } /** * @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 ) { $linkType = $request->get('link_type'); $parts = explode('_', $linkType); if (count($parts) !== 2) { Session::flash('error', trans('firefly.invalid_link_data')); return redirect(route('transactions.show', $journal->id)); } if (!in_array($parts[1], ['inward', 'outward'])) { Session::flash('error', trans('firefly.invalid_link_data')); return redirect(route('transactions.show', $journal->id)); } $linkTypeId = intval($parts[0]); $linkType = $repository->find($linkTypeId); if ($linkType->id !== $linkTypeId) { Session::flash('error', trans('firefly.invalid_link_data')); return redirect(route('transactions.show', $journal->id)); } Log::debug('Will link using linktype', $linkType->toArray()); $linkJournalId = intval($request->get('link_journal_id')); if ($linkJournalId === 0 && ctype_digit($request->string('link_other'))) { $linkJournalId = intval($request->string('link_other')); } $opposing = $journalRepository->find($linkJournalId); if (is_null($opposing->id)) { Session::flash('error', trans('firefly.invalid_link_data')); return redirect(route('transactions.show', $journal->id)); } $result = $repository->findLink($journal, $opposing); if ($result) { 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, $opposing->id)); $journalLink = new TransactionJournalLink; $journalLink->linkType()->associate($linkType); if ($parts[1] === 'inward') { Log::debug(sprintf('Link type is inwards ("%s"), so %d is source and %d is destination.', $linkType->inward, $opposing->id, $journal->id)); $journalLink->source()->associate($opposing); $journalLink->destination()->associate($journal); } if ($parts[1] === 'outward') { Log::debug(sprintf('Link type is inwards ("%s"), so %d is source and %d is destination.', $linkType->outward, $journal->id, $opposing->id)); $journalLink->source()->associate($journal); $journalLink->destination()->associate($opposing); } $journalLink->comment = strlen($request->string('comments')) > 0 ? $request->string('comments') : null; $journalLink->save(); Session::flash('success', trans('firefly.journals_linked')); return redirect(route('transactions.show', $journal->id)); } public function switch(LinkTypeRepositoryInterface $repository, TransactionJournalLink $link) { $repository->switchLink($link); return redirect(URL::previous()); } }