Rabbi_Gerzi/backend/app/Element/UseCases/UpdateElement/UpdateElement.php
2026-05-28 20:08:36 +03:00

57 lines
1.6 KiB
PHP

<?php
namespace App\Element\UseCases\UpdateElement;
use App\Element\Element;
use App\Element\ElementRepository;
use App\Element\UpdateElementDto;
use App\Exceptions\BadRequestException;
use App\Exceptions\NotFoundException;
class UpdateElement
{
public function __construct(private ElementRepository $elementRepository)
{
}
/**
* @throws BadRequestException
* @throws NotFoundException
*/
public function execute(UpdateElementRequest $request): Element
{
if ($request->id === null) {
throw new BadRequestException('id is required');
}
if ($request->title === null || trim($request->title) === '') {
throw new BadRequestException('title is required');
}
$element = $this->elementRepository->find($request->id);
if ($element === null) {
throw new NotFoundException('Element not found');
}
return $this->elementRepository->update(
$element,
new UpdateElementDto(
title: $request->title,
description: $request->description ?? '',
iconImageUrl: $this->nullableString($request->iconImageUrl),
richText: $request->richText ?? '',
pdfPath: $this->nullableString($request->pdfPath),
youtubeUrl: $this->nullableString($request->youtubeUrl),
),
);
}
private function nullableString(?string $value): ?string
{
if ($value === null || $value === '') {
return null;
}
return $value;
}
}