Skip to content
This repository has been archived by the owner on Mar 17, 2023. It is now read-only.

Commit

Permalink
Merge pull request #12 from ph-ash/add-delete-button
Browse files Browse the repository at this point in the history
add delete button
  • Loading branch information
cHeeSaW committed Mar 15, 2019
2 parents caa9bac + e0f5b87 commit 9929e01
Show file tree
Hide file tree
Showing 7 changed files with 86 additions and 3 deletions.
9 changes: 9 additions & 0 deletions src/Command/PhashBoardClientCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
namespace App\Command;

use App\Repository\MonitoringDataRepository;
use App\Service\DeleteMonitoringDataFromBoardDispatcher;
use App\ValueObject\Channel;
use Exception;
use Psr\Log\NullLogger;
Expand Down Expand Up @@ -42,17 +43,20 @@ class PhashBoardClientCommand extends ContainerAwareCommand
private $serializer;
private $monitoringDataRepository;
private $voryxConfig;
private $deleteMonitoringDataFromBoardDispatcher;


public function __construct(
SerializerInterface $serializer,
MonitoringDataRepository $monitoringDataRepository,
DeleteMonitoringDataFromBoardDispatcher $deleteMonitoringDataFromBoardDispatcher,
array $voryxConfig
) {
parent::__construct();
$this->serializer = $serializer;
$this->monitoringDataRepository = $monitoringDataRepository;
$this->voryxConfig = $voryxConfig;
$this->deleteMonitoringDataFromBoardDispatcher = $deleteMonitoringDataFromBoardDispatcher;
}

/**
Expand Down Expand Up @@ -148,6 +152,11 @@ function ($payload) {
if ($firstPayload === 'boardAvailable') {
$this->consoleLogger->info(self::THRUWAY_PREFIX . 'a new board connected');
$this->thruwayClient->emit('resendMonitoringData');
} elseif ($firstPayload === 'deleteMonitoring') {
$monitoringIdToDelete = \json_decode($payload[1]);
$this->consoleLogger->info(self::THRUWAY_PREFIX . 'deleting monitoring from board: ' . $monitoringIdToDelete);
$this->deleteMonitoringDataFromBoardDispatcher->invoke($monitoringIdToDelete);
$this->thruwayClient->emit('deleteMonitoringData', [\json_encode($monitoringIdToDelete)]);
} else {
$this->consoleLogger->critical(
self::THRUWAY_PREFIX . 'unknown payload {payload}',
Expand Down
2 changes: 1 addition & 1 deletion src/Event/DeleteMonitoringDataEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

use Symfony\Component\EventDispatcher\Event;

class DeleteMonitoringDataEvent extends Event
class DeleteMonitoringDataEvent extends Event implements DeleteMonitoringDataInterface
{
public const EVENT_DELETE_MONITORING_DATA = 'monitoring.delete_data';

Expand Down
24 changes: 24 additions & 0 deletions src/Event/DeleteMonitoringDataFromBoardEvent.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

declare(strict_types=1);

namespace App\Event;

use Symfony\Component\EventDispatcher\Event;

class DeleteMonitoringDataFromBoardEvent extends Event implements DeleteMonitoringDataInterface
{
public const EVENT_DELETE_MONITORING_FROM_BOARD_DATA = 'monitoring.delete_data.from_board';

private $monitoringDataId;

public function __construct(string $monitoringDataId)
{
$this->monitoringDataId = $monitoringDataId;
}

public function getMonitoringDataId(): string
{
return $this->monitoringDataId;
}
}
10 changes: 10 additions & 0 deletions src/Event/DeleteMonitoringDataInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

declare(strict_types=1);

namespace App\Event;

interface DeleteMonitoringDataInterface
{
public function getMonitoringDataId(): string;
}
7 changes: 5 additions & 2 deletions src/EventSubscriber/PersistanceSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
namespace App\EventSubscriber;

use App\Event\DeleteMonitoringDataEvent;
use App\Event\DeleteMonitoringDataFromBoardEvent;
use App\Event\DeleteMonitoringDataInterface;
use App\Event\IncomingMonitoringDataEvent;
use App\Exception\PersistenceLayerException;
use App\Factory\MonitoringDataDocument;
Expand Down Expand Up @@ -36,14 +38,15 @@ public static function getSubscribedEvents(): array
{
return [
IncomingMonitoringDataEvent::EVENT_INCOMING_MONITORING_DATA => ['persistMonitoringData', -10],
DeleteMonitoringDataEvent::EVENT_DELETE_MONITORING_DATA => ['onDeleteMonitoringData', -10]
DeleteMonitoringDataEvent::EVENT_DELETE_MONITORING_DATA => ['onDeleteMonitoringData', -10],
DeleteMonitoringDataFromBoardEvent::EVENT_DELETE_MONITORING_FROM_BOARD_DATA => ['onDeleteMonitoringData', -10]
];
}

/**
* @throws PersistenceLayerException
*/
public function onDeleteMonitoringData(DeleteMonitoringDataEvent $deleteMonitoringDataEvent): void
public function onDeleteMonitoringData(DeleteMonitoringDataInterface $deleteMonitoringDataEvent): void
{
$monitoringDataId = $deleteMonitoringDataEvent->getMonitoringDataId();
$this->monitoringDataRepository->delete($monitoringDataId);
Expand Down
10 changes: 10 additions & 0 deletions src/Service/DeleteMonitoringDataFromBoardDispatcher.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

declare(strict_types=1);

namespace App\Service;

interface DeleteMonitoringDataFromBoardDispatcher
{
public function invoke(string $monitoringDataId): void;
}
27 changes: 27 additions & 0 deletions src/Service/DeleteMonitoringDataFromBoardDispatcherService.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

declare(strict_types=1);

namespace App\Service;

use App\Event\DeleteMonitoringDataFromBoardEvent as Event;
use App\Factory\DeleteMonitoringDataEvent;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;

class DeleteMonitoringDataFromBoardDispatcherService implements DeleteMonitoringDataFromBoardDispatcher
{
private $eventDispatcher;
private $deleteMonitoringDataEvent;

public function __construct(EventDispatcherInterface $eventDispatcher, DeleteMonitoringDataEvent $deleteMonitoringDataEvent)
{
$this->eventDispatcher = $eventDispatcher;
$this->deleteMonitoringDataEvent = $deleteMonitoringDataEvent;
}

public function invoke(string $monitoringDataId): void
{
$deleteMonitoringDataEvent = $this->deleteMonitoringDataEvent->createFrom($monitoringDataId);
$this->eventDispatcher->dispatch(Event::EVENT_DELETE_MONITORING_FROM_BOARD_DATA, $deleteMonitoringDataEvent);
}
}

0 comments on commit 9929e01

Please sign in to comment.