id === null) { throw new BadRequestException('id is required'); } $hasNoFields = $request->title === null && $request->description === null && $request->iconImageUrl === null && $request->richText === null && $request->pdfPath === null && $request->youtubeUrl === null && $request->iconImageContents === null && $request->pdfContents === null; if ($hasNoFields) { throw new BadRequestException('nothing to update'); } if ($request->title !== null) { $this->updateTitle->execute(new UpdateTitleRequest( id: $request->id, title: $request->title, )); } if ($request->description !== null) { $this->updateDescription->execute(new UpdateDescriptionRequest( id: $request->id, description: $request->description, )); } if ($request->iconImageUrl !== null) { $this->updateIconImageUrl->execute( new UpdateIconImageUrlRequest( id: $request->id, iconImageUrl: $request->iconImageUrl, ) ); } if ($request->richText !== null) { $this->updateRichText->execute(new UpdateRichTextRequest( id: $request->id, richText: $request->richText, )); } if ($request->pdfPath !== null) { $this->updatePdfPath->execute(new UpdatePdfPathRequest( id: $request->id, pdfPath: $request->pdfPath, )); } if ($request->youtubeUrl !== null) { $this->updateYoutubeUrl->execute(new UpdateYoutubeUrlRequest( id: $request->id, youtubeUrl: $request->youtubeUrl, )); } if ($request->iconImageContents !== null) { $this->updateIconImage->execute( new UpdateIconImageRequest( id: $request->id, iconImageContents: $request->iconImageContents, iconImageOriginalName: $request->iconImageOriginalName, iconImageMimeType: $request->iconImageMimeType, iconImageSizeBytes: $request->iconImageSizeBytes, ) ); } if ($request->pdfContents !== null) { $this->updatePdf->execute( new UpdatePdfRequest( id: $request->id, pdfContents: $request->pdfContents, pdfOriginalName: $request->pdfOriginalName, pdfMimeType: $request->pdfMimeType, pdfSizeBytes: $request->pdfSizeBytes, ) ); } $element = $this->elementRepository->find($request->id); if ($element === null) { throw new NotFoundException('Element not found'); } return $element; } }