From dd56c7df9bce47126f65b316e8cfb260b63b70d8 Mon Sep 17 00:00:00 2001 From: romanetar Date: Tue, 3 Feb 2026 16:25:35 +0100 Subject: [PATCH] feat: publish media file type lifecycle events to sponsor services Signed-off-by: romanetar --- .../SummitMediaFileTypeCreatedEventDTO.php | 55 +++++++++++++++++++ .../SummitMediaFileTypeDomainEvents.php | 21 +++++++ .../Model/Imp/SummitMediaFileTypeService.php | 26 ++++++++- config/queue.php | 3 + 4 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 app/Events/SponsorServices/SummitMediaFileTypeCreatedEventDTO.php create mode 100644 app/Events/SponsorServices/SummitMediaFileTypeDomainEvents.php diff --git a/app/Events/SponsorServices/SummitMediaFileTypeCreatedEventDTO.php b/app/Events/SponsorServices/SummitMediaFileTypeCreatedEventDTO.php new file mode 100644 index 0000000000..97a74b2531 --- /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 0000000000..af4ff65000 --- /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 8c30d888f2..b4ef598b6d 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',