/**
  * @param JournalFormRequest         $request
  * @param JournalRepositoryInterface $repository
  *
  * @param AttachmentHelperInterface  $att
  *
  * @return \Illuminate\Http\RedirectResponse
  */
 public function store(JournalFormRequest $request, JournalRepositoryInterface $repository, AttachmentHelperInterface $att)
 {
     $journalData = $request->getJournalData();
     // if not withdrawal, unset budgetid.
     if ($journalData['what'] != strtolower(TransactionType::WITHDRAWAL)) {
         $journalData['budget_id'] = 0;
     }
     $journal = $repository->store($journalData);
     $att->saveAttachmentsForModel($journal);
     // flash errors
     if (count($att->getErrors()->get('attachments')) > 0) {
         Session::flash('error', $att->getErrors()->get('attachments'));
     }
     // flash messages
     if (count($att->getMessages()->get('attachments')) > 0) {
         Session::flash('info', $att->getMessages()->get('attachments'));
     }
     Log::debug('Before event. From account name is: ' . $journal->source_account->name);
     event(new TransactionJournalStored($journal, intval($request->get('piggy_bank_id'))));
     Session::flash('success', 'New transaction "' . $journal->description . '" stored!');
     Preferences::mark();
     if (intval(Input::get('create_another')) === 1) {
         // set value so create routine will not overwrite URL:
         Session::put('transactions.create.fromStore', true);
         return redirect(route('transactions.create', [$request->input('what')]))->withInput();
     }
     // redirect to previous URL.
     return redirect(Session::get('transactions.create.url'));
 }
 /**
  * @param JournalFormRequest         $request
  * @param JournalRepositoryInterface $repository
  * @param AttachmentHelperInterface  $att
  * @param TransactionJournal         $journal
  *
  * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
  */
 public function update(JournalFormRequest $request, JournalRepositoryInterface $repository, AttachmentHelperInterface $att, TransactionJournal $journal)
 {
     $journalData = $request->getJournalData();
     $repository->update($journal, $journalData);
     // save attachments:
     $att->saveAttachmentsForModel($journal);
     // flash errors
     if (count($att->getErrors()->get('attachments')) > 0) {
         Session::flash('error', $att->getErrors()->get('attachments'));
     }
     // flash messages
     if (count($att->getMessages()->get('attachments')) > 0) {
         Session::flash('info', $att->getMessages()->get('attachments'));
     }
     event(new TransactionJournalUpdated($journal));
     // update, get events by date and sort DESC
     $type = strtolower($journal->transaction_type_type ?? TransactionJournal::transactionTypeStr($journal));
     Session::flash('success', strval(trans('firefly.updated_' . $type, ['description' => e($journalData['description'])])));
     Preferences::mark();
     if (intval($request->get('return_to_edit')) === 1) {
         // set value so edit routine will not overwrite URL:
         Session::put('transactions.edit.fromUpdate', true);
         return redirect(route('transactions.edit', [$journal->id]))->withInput(['return_to_edit' => 1]);
     }
     // redirect to previous URL.
     return redirect(session('transactions.edit.url'));
 }
 /**
  * @param JournalFormRequest         $request
  * @param JournalRepositoryInterface $repository
  *
  * @return \Illuminate\Http\RedirectResponse
  */
 public function store(JournalFormRequest $request, JournalRepositoryInterface $repository, AttachmentHelperInterface $att)
 {
     $journalData = $request->getJournalData();
     // if not withdrawal, unset budgetid.
     if ($journalData['what'] != 'withdrawal') {
         $journalData['budget_id'] = 0;
     }
     $journal = $repository->store($journalData);
     // save attachments:
     $att->saveAttachmentsForModel($journal);
     // flash errors
     if (count($att->getErrors()->get('attachments')) > 0) {
         Session::flash('error', $att->getErrors()->get('attachments'));
     }
     // flash messages
     if (count($att->getMessages()->get('attachments')) > 0) {
         Session::flash('info', $att->getMessages()->get('attachments'));
     }
     // rescan journal, UpdateJournalConnection
     event(new JournalSaved($journal));
     if ($journal->transactionType->type == 'Transfer' && intval($request->get('piggy_bank_id')) > 0) {
         event(new JournalCreated($journal, intval($request->get('piggy_bank_id'))));
     }
     Session::flash('success', 'New transaction "' . $journal->description . '" stored!');
     Preferences::mark();
     if (intval(Input::get('create_another')) === 1) {
         // set value so create routine will not overwrite URL:
         Session::put('transactions.create.fromStore', true);
         return redirect(route('transactions.create', [$request->input('what')]))->withInput();
     }
     // redirect to previous URL.
     return redirect(Session::get('transactions.create.url'));
 }
 /**
  * @param JournalFormRequest         $request
  * @param JournalRepositoryInterface $repository
  *
  * @return \Illuminate\Http\RedirectResponse
  */
 public function store(JournalFormRequest $request, JournalRepositoryInterface $repository)
 {
     $journalData = $request->getJournalData();
     $journal = $repository->store($journalData);
     // rescan journal, UpdateJournalConnection
     event(new JournalSaved($journal));
     // ConnectJournalToPiggyBank
     if ($journal->transactionType->type == 'Transfer' && intval($request->get('piggy_bank_id')) > 0) {
         event(new JournalCreated($journal, intval($request->get('piggy_bank_id'))));
     }
     Session::flash('success', 'New transaction "' . $journal->description . '" stored!');
     Preferences::mark();
     if (intval(Input::get('create_another')) === 1) {
         // set value so create routine will not overwrite URL:
         Session::put('transactions.create.fromStore', true);
         return Redirect::route('transactions.create', [$request->input('what')])->withInput();
     }
     // redirect to previous URL.
     return Redirect::to(Session::get('transactions.create.url'));
 }