diff --git a/app/Bus/Events/Component/ComponentStatusWasUpdatedEvent.php b/app/Bus/Events/Component/ComponentStatusWasUpdatedEvent.php new file mode 100644 index 00000000..446463a5 --- /dev/null +++ b/app/Bus/Events/Component/ComponentStatusWasUpdatedEvent.php @@ -0,0 +1,59 @@ + + */ +final class ComponentStatusWasUpdatedEvent implements ComponentEventInterface +{ + /** + * The component that was updated. + * + * @var \CachetHQ\Cachet\Models\Component + */ + public $component; + + /** + * The original status of the component. + * + * @var int + */ + public $original_status; + + /** + * The new status of the component. + * + * @var int + */ + public $new_status; + + /** + * Create a new component was updated event instance. + * + * @param \CachetHQ\Cachet\Models\Component $component + * @param int $original_status + * @param int $new_status + * + * @return void + */ + public function __construct(Component $component, $original_status, $new_status) + { + $this->component = $component; + $this->original_status = $original_status; + $this->new_status = $new_status; + } +} diff --git a/app/Bus/Handlers/Commands/Component/UpdateComponentCommandHandler.php b/app/Bus/Handlers/Commands/Component/UpdateComponentCommandHandler.php index 1660f41f..bdead38f 100644 --- a/app/Bus/Handlers/Commands/Component/UpdateComponentCommandHandler.php +++ b/app/Bus/Handlers/Commands/Component/UpdateComponentCommandHandler.php @@ -12,6 +12,7 @@ namespace CachetHQ\Cachet\Bus\Handlers\Commands\Component; use CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand; +use CachetHQ\Cachet\Bus\Events\Component\ComponentStatusWasUpdatedEvent; use CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent; use CachetHQ\Cachet\Models\Component; @@ -28,6 +29,10 @@ class UpdateComponentCommandHandler { $component = $command->component; + if ($command->status && $component->status !== $command->status) { + event(new ComponentStatusWasUpdatedEvent($component, $component->status, $command->status)); + } + $component->update($this->filter($command)); event(new ComponentWasUpdatedEvent($component)); diff --git a/app/Foundation/Providers/EventServiceProvider.php b/app/Foundation/Providers/EventServiceProvider.php index bd0784b7..5575b6b5 100644 --- a/app/Foundation/Providers/EventServiceProvider.php +++ b/app/Foundation/Providers/EventServiceProvider.php @@ -36,6 +36,9 @@ class EventServiceProvider extends ServiceProvider 'CachetHQ\Cachet\Bus\Events\ComponentGroup\ComponentGroupWasUpdatedEvent' => [ // ], + 'CachetHQ\Cachet\Bus\Events\Component\ComponentStatusWasUpdatedEvent' => [ + 'CachetHQ\Cachet\Bus\Handlers\Events\Component\SendComponentUpdateEmailNotificationHandler', + ], 'CachetHQ\Cachet\Bus\Events\Component\ComponentWasAddedEvent' => [ // ], @@ -43,7 +46,7 @@ class EventServiceProvider extends ServiceProvider 'CachetHQ\Cachet\Bus\Handlers\Events\Component\CleanupComponentSubscriptionsHandler', ], 'CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent' => [ - 'CachetHQ\Cachet\Bus\Handlers\Events\Component\SendComponentUpdateEmailNotificationHandler', + // ], 'CachetHQ\Cachet\Bus\Events\Incident\IncidentWasRemovedEvent' => [ // diff --git a/tests/Bus/Events/Component/ComponentStatusWasUpdatedEventTest.php b/tests/Bus/Events/Component/ComponentStatusWasUpdatedEventTest.php new file mode 100644 index 00000000..652de98a --- /dev/null +++ b/tests/Bus/Events/Component/ComponentStatusWasUpdatedEventTest.php @@ -0,0 +1,36 @@ + + */ +class ComponentStatusWasUpdatedEventTest extends AbstractComponentEventTestCase +{ + protected function objectHasHandlers() + { + return true; + } + + protected function getObjectAndParams() + { + $params = ['component' => new Component(), 'original_status' => 1, 'new_status' => 1]; + $object = new ComponentStatusWasUpdatedEvent($params['component'], $params['original_status'], $params['new_status']); + + return compact('params', 'object'); + } +} diff --git a/tests/Bus/Events/Component/ComponentWasUpdatedEventTest.php b/tests/Bus/Events/Component/ComponentWasUpdatedEventTest.php index 44f88864..54d6a0fd 100644 --- a/tests/Bus/Events/Component/ComponentWasUpdatedEventTest.php +++ b/tests/Bus/Events/Component/ComponentWasUpdatedEventTest.php @@ -18,7 +18,7 @@ class ComponentWasUpdatedEventTest extends AbstractComponentEventTestCase { protected function objectHasHandlers() { - return true; + return false; } protected function getObjectAndParams()