From 2577e7301ac9b5e991d5638f4d55332c61b90b9f Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 2 May 2021 14:52:11 +0200 Subject: [PATCH 1/5] Add option for webhooks. --- app/Api/V1/Controllers/Models/Transaction/StoreController.php | 4 +++- .../V1/Controllers/Models/Transaction/UpdateController.php | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/Api/V1/Controllers/Models/Transaction/StoreController.php b/app/Api/V1/Controllers/Models/Transaction/StoreController.php index dcec81a1ca..03a866b8d5 100644 --- a/app/Api/V1/Controllers/Models/Transaction/StoreController.php +++ b/app/Api/V1/Controllers/Models/Transaction/StoreController.php @@ -103,7 +103,9 @@ class StoreController extends Controller throw new ValidationException($validator,0, $e); } app('preferences')->mark(); - event(new StoredTransactionGroup($transactionGroup, $data['apply_rules'] ?? true)); + $applyRules = $data['apply_rules'] ?? true; + $fireWebhooks = $data['fire_webhooks'] ?? true; + event(new StoredTransactionGroup($transactionGroup, $applyRules, $fireWebhooks)); $manager = $this->getManager(); /** @var User $admin */ diff --git a/app/Api/V1/Controllers/Models/Transaction/UpdateController.php b/app/Api/V1/Controllers/Models/Transaction/UpdateController.php index 53fc0f7a78..2741dfaccc 100644 --- a/app/Api/V1/Controllers/Models/Transaction/UpdateController.php +++ b/app/Api/V1/Controllers/Models/Transaction/UpdateController.php @@ -80,7 +80,9 @@ class UpdateController extends Controller $manager = $this->getManager(); app('preferences')->mark(); - event(new UpdatedTransactionGroup($transactionGroup, $data['apply_rules'] ?? true)); + $applyRules = $data['apply_rules'] ?? true; + $fireWebhooks = $data['fire_webhooks'] ?? true; + event(new UpdatedTransactionGroup($transactionGroup, $applyRules, $fireWebhooks)); /** @var User $admin */ $admin = auth()->user(); From 2263aa4dbe7d13075d3357844d04929cd4c5a83a Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 2 May 2021 14:52:25 +0200 Subject: [PATCH 2/5] Add info to array. --- app/Api/V1/Requests/Models/Transaction/StoreRequest.php | 1 + app/Api/V1/Requests/Models/Transaction/UpdateRequest.php | 3 +++ 2 files changed, 4 insertions(+) diff --git a/app/Api/V1/Requests/Models/Transaction/StoreRequest.php b/app/Api/V1/Requests/Models/Transaction/StoreRequest.php index 07ffdb674d..33e3c091ab 100644 --- a/app/Api/V1/Requests/Models/Transaction/StoreRequest.php +++ b/app/Api/V1/Requests/Models/Transaction/StoreRequest.php @@ -57,6 +57,7 @@ class StoreRequest extends FormRequest 'group_title' => $this->string('group_title'), 'error_if_duplicate_hash' => $this->boolean('error_if_duplicate_hash'), 'apply_rules' => $this->boolean('apply_rules', true), + 'fire_webhooks' => $this->boolean('fire_webhooks', true), 'transactions' => $this->getTransactionData(), ]; diff --git a/app/Api/V1/Requests/Models/Transaction/UpdateRequest.php b/app/Api/V1/Requests/Models/Transaction/UpdateRequest.php index dc4a0593ce..7214828228 100644 --- a/app/Api/V1/Requests/Models/Transaction/UpdateRequest.php +++ b/app/Api/V1/Requests/Models/Transaction/UpdateRequest.php @@ -129,6 +129,9 @@ class UpdateRequest extends FormRequest if ($this->has('apply_rules')) { $data['apply_rules'] = $this->boolean('apply_rules', true); } + if ($this->has('fire_webhooks')) { + $data['fire_webhooks'] = $this->boolean('fire_webhooks', true); + } if ($this->has('group_title')) { $data['group_title'] = $this->string('group_title'); } From ca1eeed60576a66452646779cae46ac0446fcd1e Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 2 May 2021 14:52:49 +0200 Subject: [PATCH 3/5] Add info to events handler --- app/Events/StoredTransactionGroup.php | 5 ++++- app/Events/UpdatedTransactionGroup.php | 11 ++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/Events/StoredTransactionGroup.php b/app/Events/StoredTransactionGroup.php index 558dc9015d..3c497e37bd 100644 --- a/app/Events/StoredTransactionGroup.php +++ b/app/Events/StoredTransactionGroup.php @@ -37,16 +37,19 @@ class StoredTransactionGroup extends Event use SerializesModels; public bool $applyRules; + public bool $fireWebhooks; public TransactionGroup $transactionGroup; + /** * Create a new event instance. * * @param TransactionGroup $transactionGroup * @param bool $applyRules */ - public function __construct(TransactionGroup $transactionGroup, bool $applyRules = true) + public function __construct(TransactionGroup $transactionGroup, bool $applyRules = true, bool $fireWebhooks = true) { $this->transactionGroup = $transactionGroup; + $this->fireWebhooks = $fireWebhooks; $this->applyRules = $applyRules; } } diff --git a/app/Events/UpdatedTransactionGroup.php b/app/Events/UpdatedTransactionGroup.php index e379251fbd..1fa5abd9ce 100644 --- a/app/Events/UpdatedTransactionGroup.php +++ b/app/Events/UpdatedTransactionGroup.php @@ -36,18 +36,19 @@ class UpdatedTransactionGroup extends Event { use SerializesModels; - /** @var bool */ - public $applyRules; - /** @var TransactionGroup The group that was stored. */ - public $transactionGroup; + public bool $applyRules; + public bool $fireWebhooks; + public TransactionGroup $transactionGroup; + /** * Create a new event instance. * * @param TransactionGroup $transactionGroup */ - public function __construct(TransactionGroup $transactionGroup, bool $applyRules = true) + public function __construct(TransactionGroup $transactionGroup, bool $applyRules = true, bool $fireWebhooks = true) { $this->transactionGroup = $transactionGroup; + $this->fireWebhooks = $fireWebhooks; $this->applyRules = $applyRules; } } From ef3468ef1f974a4e235bc41ff4db7c261519e66d Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 2 May 2021 14:53:13 +0200 Subject: [PATCH 4/5] Do not fire when fireWebhooks = false --- app/Handlers/Events/StoredGroupEventHandler.php | 8 +++++++- app/Handlers/Events/UpdatedGroupEventHandler.php | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/Handlers/Events/StoredGroupEventHandler.php b/app/Handlers/Events/StoredGroupEventHandler.php index 3824d6f499..255ae5bda0 100644 --- a/app/Handlers/Events/StoredGroupEventHandler.php +++ b/app/Handlers/Events/StoredGroupEventHandler.php @@ -85,7 +85,13 @@ class StoredGroupEventHandler { Log::debug(__METHOD__); $group = $storedGroupEvent->transactionGroup; - $user = $group->user; + if (false === $storedGroupEvent->fireWebhooks) { + Log::info(sprintf('Will not fire webhooks for transaction group #%d', $group->id)); + + return; + } + + $user = $group->user; /** @var MessageGeneratorInterface $engine */ $engine = app(MessageGeneratorInterface::class); $engine->setUser($user); diff --git a/app/Handlers/Events/UpdatedGroupEventHandler.php b/app/Handlers/Events/UpdatedGroupEventHandler.php index 5cd7cf4619..4c793fc757 100644 --- a/app/Handlers/Events/UpdatedGroupEventHandler.php +++ b/app/Handlers/Events/UpdatedGroupEventHandler.php @@ -81,9 +81,14 @@ class UpdatedGroupEventHandler */ public function triggerWebhooks(UpdatedTransactionGroup $updatedGroupEvent): void { - Log::debug('UpdatedGroupEventHandler:triggerWebhooks'); + Log::debug(__METHOD__); $group = $updatedGroupEvent->transactionGroup; - $user = $group->user; + if (false === $updatedGroupEvent->fireWebhooks) { + Log::info(sprintf('Will not fire webhooks for transaction group #%d', $group->id)); + + return; + } + $user = $group->user; /** @var MessageGeneratorInterface $engine */ $engine = app(MessageGeneratorInterface::class); $engine->setUser($user); From 4a2f751db3ca21ed4dc8556e190a5e3daaf891a5 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 2 May 2021 14:53:24 +0200 Subject: [PATCH 5/5] Remove defaults --- app/Http/Controllers/Transaction/CreateController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Transaction/CreateController.php b/app/Http/Controllers/Transaction/CreateController.php index dbae963b8d..3ed7ff63c7 100644 --- a/app/Http/Controllers/Transaction/CreateController.php +++ b/app/Http/Controllers/Transaction/CreateController.php @@ -70,7 +70,7 @@ class CreateController extends Controller $newGroup = $service->cloneGroup($group); // event! - event(new StoredTransactionGroup($newGroup, true)); + event(new StoredTransactionGroup($newGroup)); app('preferences')->mark();