diff --git a/app/Events/SponsorServices/SummitMediaFileTypeCreatedEventDTO.php b/app/Events/SponsorServices/SummitMediaFileTypeCreatedEventDTO.php new file mode 100644 index 000000000..97a74b253 --- /dev/null +++ b/app/Events/SponsorServices/SummitMediaFileTypeCreatedEventDTO.php @@ -0,0 +1,55 @@ +id = $id; + $this->name = $name; + $this->description = $description; + $this->allowed_extensions = $allowed_extensions; + } + + public static function fromSummitMediaFileType($summit_media_file_type): self + { + return new self( + $summit_media_file_type->getId(), + $summit_media_file_type->getName(), + $summit_media_file_type->getDescription(), + $summit_media_file_type->getAllowedExtensions(), + ); + } + + public function serialize(): array + { + return [ + 'id' => $this->id, + 'name' => $this->name, + 'description' => $this->description, + 'allowed_extensions' => $this->allowed_extensions + ]; + } +} diff --git a/app/Events/SponsorServices/SummitMediaFileTypeDomainEvents.php b/app/Events/SponsorServices/SummitMediaFileTypeDomainEvents.php new file mode 100644 index 000000000..af4ff6500 --- /dev/null +++ b/app/Events/SponsorServices/SummitMediaFileTypeDomainEvents.php @@ -0,0 +1,21 @@ +tx_service->transaction(function() use($payload){ + $media_file_type = $this->tx_service->transaction(function() use($payload){ $type = $this->repository->getByName(trim($payload['name'])); if(!is_null($type)) throw new ValidationException(sprintf("Name %s already exists.", $payload['name'])); @@ -57,6 +61,12 @@ public function add(array $payload): SummitMediaFileType $this->repository->add($type); return $type; }); + + PublishSponsorServiceDomainEventsJob::dispatch( + SummitMediaFileTypeCreatedEventDTO::fromSummitMediaFileType($media_file_type)->serialize(), + SummitMediaFileTypeDomainEvents::SummitMediaFileTypeCreated); + + return $media_file_type; } /** @@ -77,7 +87,13 @@ public function update(int $id, array $payload): SummitMediaFileType throw new ValidationException(sprintf("Name %s already exists.", $payload['name'])); } - return SummitMediaFileTypeFactory::populate($type, $payload); + $media_file_type = SummitMediaFileTypeFactory::populate($type, $payload); + + PublishSponsorServiceDomainEventsJob::dispatch( + SummitMediaFileTypeCreatedEventDTO::fromSummitMediaFileType($media_file_type)->serialize(), + SummitMediaFileTypeDomainEvents::SummitMediaFileTypeUpdated); + + return $media_file_type; }); } @@ -94,6 +110,10 @@ public function delete(int $id): void throw new ValidationException("You can not delete a system defined type."); $this->repository->delete($type); + + PublishSponsorServiceDomainEventsJob::dispatch( + DeletedEventDTO::fromEntity($type)->serialize(), + SummitMediaFileTypeDomainEvents::SummitMediaFileTypeDeleted); }); } -} \ No newline at end of file +} diff --git a/config/queue.php b/config/queue.php index 8c30d888f..b4ef598b6 100644 --- a/config/queue.php +++ b/config/queue.php @@ -184,6 +184,9 @@ * - summit_created ( see app/Events/SponsorServices/SummitDomainEvents.php ) * - summit_updated * - summit_deleted + * - summit_media_file_type_created ( see app/Events/SponsorServices/SummitMediaFileTypeDomainEvents.php ) + * - summit_media_file_type_updated + * - summit_media_file_type_deleted */ 'domain_events_message_broker' => [ 'driver' => 'rabbitmq',