learning-center/app/Forum/Topic/Controllers/DeleteController.php
2024-09-08 13:48:26 +03:00

44 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Forum\Topic\Controllers;
use App\Access\Models\AccessChecker\Forum\TopicAccessChecker;
use App\Access\Models\Forbidden;
use App\Forum\Category\Models\CategoryWriteRepository;
use App\Forum\Topic\Models\TopicWriteRepository;
final class DeleteController extends \Phalcon\Mvc\Controller
{
public function mainAction(string $id): void
{
$topic = $this->getTopicRepository()->get($id);
$category = $this->getCategoryRepository()->get($topic->category_id);
if (!$this->getTopicAccessChecker()->canDelete($topic->category_id, $topic->created_by)) {
throw new Forbidden();
}
$topic = $this->getTopicRepository()->get($id);
$topic->delete();
$this->response->redirect('/' . $category->slug);
}
private function getTopicAccessChecker(): TopicAccessChecker
{
return new TopicAccessChecker();
}
private function getTopicRepository(): TopicWriteRepository
{
return new TopicWriteRepository();
}
private function getCategoryRepository(): CategoryWriteRepository
{
return new CategoryWriteRepository();
}
}