/** * Execute the given rulegroup on a set of existing transactions * * @param SelectTransactionsRequest $request * @param AccountRepositoryInterface $repository * @param RuleGroup $ruleGroup * * @return \Illuminate\Http\RedirectResponse */ public function execute(SelectTransactionsRequest $request, AccountRepositoryInterface $repository, RuleGroup $ruleGroup) { // Get parameters specified by the user $accounts = $repository->get($request->get('accounts')); $startDate = new Carbon($request->get('start_date')); $endDate = new Carbon($request->get('end_date')); // Create a job to do the work asynchronously $job = new ExecuteRuleGroupOnExistingTransactions($ruleGroup); // Apply parameters to the job $job->setUser(auth()->user()); $job->setAccounts($accounts); $job->setStartDate($startDate); $job->setEndDate($endDate); // Dispatch a new job to execute it in a queue $this->dispatch($job); // Tell the user that the job is queued Session::flash('success', strval(trans('firefly.executed_group_on_existing_transactions', ['title' => $ruleGroup->title]))); return redirect()->route('rules.index'); }
/** * @param ExportFormRequest $request * @param ARI $repository * * @param EJRI $jobs * * @return string * @throws \FireflyIII\Exceptions\FireflyException */ public function postIndex(ExportFormRequest $request, ARI $repository, EJRI $jobs) { set_time_limit(0); $job = $jobs->findByKey($request->get('job')); $settings = ['accounts' => $repository->get($request->get('accounts')), 'startDate' => new Carbon($request->get('export_start_range')), 'endDate' => new Carbon($request->get('export_end_range')), 'exportFormat' => $request->get('exportFormat'), 'includeAttachments' => intval($request->get('include_attachments')) === 1, 'includeConfig' => intval($request->get('include_config')) === 1, 'includeOldUploads' => intval($request->get('include_old_uploads')) === 1, 'job' => $job]; $job->change('export_status_make_exporter'); $processor = new Processor($settings); /* * Collect journals: */ $job->change('export_status_collecting_journals'); $processor->collectJournals(); $job->change('export_status_collected_journals'); /* * Transform to exportable entries: */ $job->change('export_status_converting_to_export_format'); $processor->convertJournals(); $job->change('export_status_converted_to_export_format'); /* * Transform to (temporary) file: */ $job->change('export_status_creating_journal_file'); $processor->exportJournals(); $job->change('export_status_created_journal_file'); /* * Collect attachments, if applicable. */ if ($settings['includeAttachments']) { $job->change('export_status_collecting_attachments'); $processor->collectAttachments(); $job->change('export_status_collected_attachments'); } /* * Collect old uploads */ if ($settings['includeOldUploads']) { $job->change('export_status_collecting_old_uploads'); $processor->collectOldUploads(); $job->change('export_status_collected_old_uploads'); } /* * Generate / collect config file. */ if ($settings['includeConfig']) { $job->change('export_status_creating_config_file'); $processor->createConfigFile(); $job->change('export_status_created_config_file'); } /* * Create ZIP file: */ $job->change('export_status_creating_zip_file'); $processor->createZipFile(); $job->change('export_status_created_zip_file'); $job->change('export_status_finished'); return Response::json('ok'); }