mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-04 19:53:44 +00:00
This commit is contained in:
@@ -25,11 +25,16 @@ namespace FireflyIII\Api\V1\Controllers\Models\Transaction;
|
|||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Events\DestroyedTransactionGroup;
|
use FireflyIII\Events\DestroyedTransactionGroup;
|
||||||
|
use FireflyIII\Events\UpdatedAccount;
|
||||||
|
use FireflyIII\Models\Account;
|
||||||
|
use FireflyIII\Models\Transaction;
|
||||||
use FireflyIII\Models\TransactionGroup;
|
use FireflyIII\Models\TransactionGroup;
|
||||||
use FireflyIII\Models\TransactionJournal;
|
use FireflyIII\Models\TransactionJournal;
|
||||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||||
|
use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepository;
|
||||||
use FireflyIII\User;
|
use FireflyIII\User;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Log;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class DestroyController
|
* Class DestroyController
|
||||||
@@ -37,6 +42,7 @@ use Illuminate\Http\JsonResponse;
|
|||||||
class DestroyController extends Controller
|
class DestroyController extends Controller
|
||||||
{
|
{
|
||||||
private JournalRepositoryInterface $repository;
|
private JournalRepositoryInterface $repository;
|
||||||
|
private TransactionGroupRepository $groupRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TransactionController constructor.
|
* TransactionController constructor.
|
||||||
@@ -54,6 +60,9 @@ class DestroyController extends Controller
|
|||||||
$this->repository = app(JournalRepositoryInterface::class);
|
$this->repository = app(JournalRepositoryInterface::class);
|
||||||
$this->repository->setUser($admin);
|
$this->repository->setUser($admin);
|
||||||
|
|
||||||
|
$this->groupRepository = app(TransactionGroupRepository::class);
|
||||||
|
$this->groupRepository->setUser($admin);
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -72,11 +81,32 @@ class DestroyController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function destroy(TransactionGroup $transactionGroup): JsonResponse
|
public function destroy(TransactionGroup $transactionGroup): JsonResponse
|
||||||
{
|
{
|
||||||
$this->repository->destroyGroup($transactionGroup);
|
// grab asset account(s) from group:
|
||||||
|
$accounts = [];
|
||||||
|
/** @var TransactionJournal $journal */
|
||||||
|
foreach($transactionGroup->transactionJournals as $journal) {
|
||||||
|
/** @var Transaction $transaction */
|
||||||
|
foreach($journal->transactions as $transaction) {
|
||||||
|
$type = $transaction->account->accountType->type;
|
||||||
|
// if is valid liability, trigger event!
|
||||||
|
if(in_array($type, config('firefly.valid_liabilities'))) {
|
||||||
|
$accounts[] = $transaction->account;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->groupRepository->destroy($transactionGroup);
|
||||||
|
|
||||||
// trigger just after destruction
|
// trigger just after destruction
|
||||||
event(new DestroyedTransactionGroup($transactionGroup));
|
event(new DestroyedTransactionGroup($transactionGroup));
|
||||||
app('preferences')->mark();
|
app('preferences')->mark();
|
||||||
|
|
||||||
|
/** @var Account $account */
|
||||||
|
foreach($accounts as $account) {
|
||||||
|
Log::debug(sprintf('Now going to trigger updated account event for account #%d', $account->id));
|
||||||
|
event(new UpdatedAccount($account));
|
||||||
|
}
|
||||||
|
|
||||||
return response()->json([], 204);
|
return response()->json([], 204);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -23,8 +23,12 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Http\Controllers\Transaction;
|
namespace FireflyIII\Http\Controllers\Transaction;
|
||||||
|
|
||||||
|
use FireflyIII\Events\UpdatedAccount;
|
||||||
use FireflyIII\Http\Controllers\Controller;
|
use FireflyIII\Http\Controllers\Controller;
|
||||||
|
use FireflyIII\Models\Account;
|
||||||
|
use FireflyIII\Models\Transaction;
|
||||||
use FireflyIII\Models\TransactionGroup;
|
use FireflyIII\Models\TransactionGroup;
|
||||||
|
use FireflyIII\Models\TransactionJournal;
|
||||||
use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface;
|
use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface;
|
||||||
use Illuminate\Contracts\View\Factory;
|
use Illuminate\Contracts\View\Factory;
|
||||||
use Illuminate\Contracts\View\View;
|
use Illuminate\Contracts\View\View;
|
||||||
@@ -111,10 +115,32 @@ class DeleteController extends Controller
|
|||||||
$objectType = strtolower($journal->transaction_type_type ?? $journal->transactionType->type);
|
$objectType = strtolower($journal->transaction_type_type ?? $journal->transactionType->type);
|
||||||
session()->flash('success', (string) trans('firefly.deleted_' . strtolower($objectType), ['description' => $group->title ?? $journal->description]));
|
session()->flash('success', (string) trans('firefly.deleted_' . strtolower($objectType), ['description' => $group->title ?? $journal->description]));
|
||||||
|
|
||||||
|
// grab asset account(s) from group:
|
||||||
|
$accounts = [];
|
||||||
|
/** @var TransactionJournal $journal */
|
||||||
|
foreach($group->transactionJournals as $journal) {
|
||||||
|
/** @var Transaction $transaction */
|
||||||
|
foreach($journal->transactions as $transaction) {
|
||||||
|
$type = $transaction->account->accountType->type;
|
||||||
|
// if is valid liability, trigger event!
|
||||||
|
if(in_array($type, config('firefly.valid_liabilities'))) {
|
||||||
|
$accounts[] = $transaction->account;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$this->repository->destroy($group);
|
$this->repository->destroy($group);
|
||||||
|
|
||||||
app('preferences')->mark();
|
app('preferences')->mark();
|
||||||
|
|
||||||
|
|
||||||
|
/** @var Account $account */
|
||||||
|
foreach($accounts as $account) {
|
||||||
|
Log::debug(sprintf('Now going to trigger updated account event for account #%d', $account->id));
|
||||||
|
event(new UpdatedAccount($account));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return redirect($this->getPreviousUrl('transactions.delete.url'));
|
return redirect($this->getPreviousUrl('transactions.delete.url'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user