mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2026-05-03 20:56:21 +00:00
Code for #1324
This commit is contained in:
@@ -119,9 +119,11 @@ class UpgradeDatabase extends Command
|
||||
}
|
||||
|
||||
// loop bills.
|
||||
$order = 1;
|
||||
$order = 1;
|
||||
/** @var Collection $collection */
|
||||
$collection = $user->bills()->where('active', 1)->get();
|
||||
/** @var Bill $bill */
|
||||
foreach ($user->bills()->get() as $bill) {
|
||||
foreach ($collection as $bill) {
|
||||
if ($bill->match !== 'MIGRATED_TO_RULES') {
|
||||
$rule = Rule::create(
|
||||
[
|
||||
|
||||
@@ -199,6 +199,16 @@ class BillController extends Controller
|
||||
}
|
||||
);
|
||||
|
||||
// add info about rules:
|
||||
$rules = $repository->getRulesForBills($paginator->getCollection());
|
||||
$bills = $bills->map(
|
||||
function (array $bill) use ($rules) {
|
||||
$bill['rules'] = $rules[$bill['id']] ?? [];
|
||||
|
||||
return $bill;
|
||||
}
|
||||
);
|
||||
|
||||
$paginator->setPath(route('bills.index'));
|
||||
|
||||
return view('bills.index', compact('bills', 'paginator'));
|
||||
|
||||
@@ -369,7 +369,7 @@ class RuleController extends Controller
|
||||
|
||||
// redirect to new bill creation.
|
||||
if ((int)$request->get('bill_id') > 0) {
|
||||
return redirect(route('bills.create'));
|
||||
return redirect($this->getPreviousUri('bills.create.uri'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -367,6 +367,35 @@ class BillRepository implements BillRepositoryInterface
|
||||
return $journals;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return all rules related to the bills in the collection, in an associative array:
|
||||
* 5= billid
|
||||
*
|
||||
* 5 => [['id' => 1, 'title' => 'Some rule'],['id' => 2, 'title' => 'Some other rule']]
|
||||
*
|
||||
* @param Collection $collection
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getRulesForBills(Collection $collection): array
|
||||
{
|
||||
$rules = $this->user->rules()
|
||||
->leftJoin('rule_actions', 'rule_actions.rule_id', '=', 'rules.id')
|
||||
->where('rule_actions.action_type', 'link_to_bill')
|
||||
->get(['rules.id', 'rules.title', 'rule_actions.action_value']);
|
||||
$array = [];
|
||||
foreach ($rules as $rule) {
|
||||
$array[$rule->action_value] = $array[$rule->action_value] ?? [];
|
||||
$array[$rule->action_value][] = ['id' => $rule->id, 'title' => $rule->title];
|
||||
}
|
||||
$return = [];
|
||||
foreach ($collection as $bill) {
|
||||
$return[$bill->id] = $array[$bill->name] ?? [];
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Bill $bill
|
||||
* @param Carbon $date
|
||||
|
||||
@@ -140,6 +140,18 @@ interface BillRepositoryInterface
|
||||
*/
|
||||
public function getPossiblyRelatedJournals(Bill $bill): Collection;
|
||||
|
||||
/**
|
||||
* Return all rules related to the bills in the collection, in an associative array:
|
||||
* 5= billid
|
||||
*
|
||||
* 5 => [['id' => 1, 'title' => 'Some rule'],['id' => 2, 'title' => 'Some other rule']]
|
||||
*
|
||||
* @param Collection $collection
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getRulesForBills(Collection $collection): array;
|
||||
|
||||
/**
|
||||
* @param Bill $bill
|
||||
* @param Carbon $date
|
||||
|
||||
Reference in New Issue
Block a user