Files
michaelschiemer/src/Application/Admin/ShowImageSlots.php

87 lines
2.2 KiB
PHP

<?php
namespace App\Application\Admin;
use App\Domain\Media\ImageSlot;
use App\Domain\Media\ImageSlotRepository;
use App\Framework\Attributes\Route;
use App\Framework\Auth\Auth;
use App\Framework\Http\Method;
use App\Framework\Http\Request;
use App\Framework\Meta\MetaData;
use App\Framework\Router\Result\ViewResult;
class ShowImageSlots
{
public function __construct(
private ImageSlotRepository $imageSlotRepository,
) {}
#[Auth]
#[Route('/admin/imageslots')]
public function show()
{
$slots = $this->imageSlotRepository->getSlots();
/** @var ImageSlot $slot */
foreach($slots as $slot) {
#echo $slot->slotName . '<br/>';
if($slot->image !== null) {
# echo $slot->image->filename . '<br/>';
}
$slotName = $slot->slotName;
}
return new ViewResult('imageslots', new MetaData('Image Slots', 'Image Slots'), [
'slotName' => $slotName,
'slots' => $slots,
]);
}
#[Auth]
#[Route('/admin/imageslots/{slotName}', method: Method::POST)]
public function update(string $slotName): ViewResult
{
$slot = $this->imageSlotRepository->findBySlotName(urldecode($slotName));
$slotName = $slot->slotName;
#echo "<input type='text' value='$slotName' />";
return new ViewResult('imageslot', new MetaData('Image Slot', 'Image Slots'), [
'slotName' => $slotName,
'id' => $slot->id,
]);
}
#[Auth]
#[Route('/admin/imageslots/create', method: Method::POST)]
public function create(Request $request)
{
$name = $request->parsedBody->get('slotName');
$slot = new ImageSlot(0, $name, '');
$this->imageSlotRepository->save($slot);
debug($name);
}
#[Auth]
#[Route('/admin/imageslots/edit/{id}', method: Method::PUT)]
public function edit(Request $request, string $id)
{
$name = $request->parsedBody->get('slotName');
$slot = $this->imageSlotRepository->findById((int)$id);
$slot = new ImageSlot($slot->id, $name, $slot->imageId);
$this->imageSlotRepository->save($slot);
}
}