*/ readonly class DeleteDownloadHandler implements HandlerInterface { public function __construct( private DownloadRepository $downloadRepository, private DeleteMediaFileHandler $deleteMediaFileHandler, ) {} public function handle(CommandInterface $command): ResultInterface { $download = $this->downloadRepository->find($command->downloadId); if (true === $command->deleteFile) { $deletedFileResult = $this->deleteMediaFileHandler->handle(new DeleteMediaFileCommand( filename: $download->getFilename(), downloadId: $command->downloadId )); } $this->downloadRepository->delete($command->downloadId); return new DeleteDownloadResult( status: 200, message: 'Success', download: $download, deleteMediaFileResult: $deletedFileResult ?? null ); } }