This commit is contained in:
Marek Lenczewski
2026-03-31 08:48:24 +02:00
parent f9a9004fcd
commit 576bfed36d
26 changed files with 203 additions and 253 deletions

View File

@@ -41,8 +41,7 @@ Controller → Service (Manager) → Repository → Entity
- Manager-Services: Geschäftslogik (CRUD, Validierung, Toggle) - Manager-Services: Geschäftslogik (CRUD, Validierung, Toggle)
- DTOs: typisierter Input (Request) und Output (Response) - DTOs: typisierter Input (Request) und Output (Response)
- Validierung: nur auf Request-DTOs (`#[Assert\...]`), nicht auf Entities - Validierung: nur auf Request-DTOs (`#[Assert\...]`), nicht auf Entities
- Exceptions: `ValidationException` (eigener Listener), `HttpException` (Symfony built-in) - Entities: Doctrine-Mapping + Getter/Setter + berechnete Felder via Serializer-Groups
- Entities: nur Doctrine-Mapping + Getter/Setter
## Verzeichnisstruktur (Backend) ## Verzeichnisstruktur (Backend)
@@ -56,8 +55,7 @@ backend/src/
Request/ — CreateSchemaRequest, UpdateSchemaRequest, UpdateTaskRequest, Request/ — CreateSchemaRequest, UpdateSchemaRequest, UpdateTaskRequest,
ToggleRequest, CreateCategoryRequest, UpdateCategoryRequest, ToggleRequest, CreateCategoryRequest, UpdateCategoryRequest,
SchemaValidationTrait SchemaValidationTrait
Response/ — TaskResponse, CategoryResponse, WeekViewResponse, Response/ — WeekViewResponse, DayResponse, ToggleResponse
DayResponse, ToggleResponse
Entity/ Entity/
Category.php, Task.php, TaskSchema.php Category.php, Task.php, TaskSchema.php
Enum/ Enum/
@@ -72,7 +70,6 @@ backend/src/
TaskSynchronizer.php — Sync nach Schema-Update (löschen/erstellen/reset) TaskSynchronizer.php — Sync nach Schema-Update (löschen/erstellen/reset)
DeadlineCalculator.php — Berechnet Fälligkeitsdaten für ein Schema DeadlineCalculator.php — Berechnet Fälligkeitsdaten für ein Schema
TaskViewBuilder.php — Baut Wochenansicht + Alle-Aufgaben-View TaskViewBuilder.php — Baut Wochenansicht + Alle-Aufgaben-View
TaskSerializer.php — Task/Category → Response-DTOs
``` ```
## API-Routen ## API-Routen
@@ -148,7 +145,7 @@ frontend/src/
- **Sprache Code**: Englisch (Klassen, Methoden, Variablen, CSS-Klassen) - **Sprache Code**: Englisch (Klassen, Methoden, Variablen, CSS-Klassen)
- **Sprache UI**: Deutsch (Labels, Fehlermeldungen, Platzhalter) - **Sprache UI**: Deutsch (Labels, Fehlermeldungen, Platzhalter)
- **Enum-Werte**: Deutsch in DB (`aktiv`, `erledigt`, `einzel` etc.), Englisch als PHP-Case-Namen (`Active`, `Completed`, `Single`) - **Enum-Werte**: Deutsch in DB (`aktiv`, `erledigt`, `einzel` etc.), Englisch als PHP-Case-Namen (`Active`, `Completed`, `Single`)
- **API-Serialisierung**: Symfony Serializer-Groups für Schema/Category Entities (`schema:read`, `schema:write`, `category:read`, `category:write`), TaskSerializer-Service für Tasks - **API-Serialisierung**: Symfony Serializer-Groups auf allen Entities (`schema:read`, `task:read`, `category:read`)
- **Validierung**: Auf Request-DTOs, nicht auf Entities - **Validierung**: Auf Request-DTOs, nicht auf Entities
- **Error-Handling**: `HttpException` → Symfony built-in - **Error-Handling**: `HttpException` → Symfony built-in
- **Frontend**: Vue 3 Composition API mit `<script setup>`, fetch-basierter API-Client - **Frontend**: Vue 3 Composition API mit `<script setup>`, fetch-basierter API-Client

View File

@@ -1,10 +1,10 @@
# Entity # Kategorien
## Entity
Category(id, name, color) — Farbkodierte Kategorie für Aufgaben Category(id, name, color) — Farbkodierte Kategorie für Aufgaben
TaskSchema(id, name, status, taskType, category, deadline, startDate, endDate, weekdays, monthDays, yearDays, createdAt) — Vorlage für wiederkehrende Aufgaben
Task(id, schema, name, category, categoryOverridden, date, status, createdAt) — Einzelne Aufgabe eines Schemas
# Controller ## Controller
CategoryController::index() — Alle Kategorien abrufen CategoryController::index() — Alle Kategorien abrufen
CategoryController::show(id) — Einzelne Kategorie abrufen CategoryController::show(id) — Einzelne Kategorie abrufen
@@ -12,10 +12,43 @@ CategoryController::create() — Neue Kategorie anlegen (201)
CategoryController::update(id) — Kategorie aktualisieren CategoryController::update(id) — Kategorie aktualisieren
CategoryController::delete(id) — Kategorie löschen (204) CategoryController::delete(id) — Kategorie löschen (204)
## Service
CategoryManager::createCategory() — Neue Kategorie anlegen
CategoryManager::updateCategory() — Kategorie aktualisieren
CategoryManager::deleteCategory() — Kategorie löschen
## DTO
CreateCategoryRequest(name, color) — Kategorie anlegen
UpdateCategoryRequest(name, color) — Kategorie ändern
## Repository
CategoryRepository — Standard Doctrine-Repository (keine eigenen Methoden)
---
# Aufgaben
## Entity
Task(id, schema, name, category, categoryOverridden, date, status, createdAt) — Einzelne Aufgabe eines Schemas
## Controller
TaskController::show(id) — Einzelnen Task abrufen TaskController::show(id) — Einzelnen Task abrufen
TaskController::update(id) — Task aktualisieren (Name, Kategorie, Status, Datum) TaskController::update(id) — Task aktualisieren (Name, Kategorie, Status, Datum)
TaskController::delete(id) — Task löschen (204) TaskController::delete(id) — Task löschen (204)
---
# Entity
TaskSchema(id, name, status, taskType, category, deadline, startDate, endDate, weekdays, monthDays, yearDays, createdAt) — Vorlage für wiederkehrende Aufgaben
# Controller
TaskSchemaController::index() — Alle Schemas abrufen TaskSchemaController::index() — Alle Schemas abrufen
TaskSchemaController::week(?start) — Wochenansicht ab Datum (Default: heute) TaskSchemaController::week(?start) — Wochenansicht ab Datum (Default: heute)
TaskSchemaController::allSchemas() — Alle Schemas sortiert nach Erstellung TaskSchemaController::allSchemas() — Alle Schemas sortiert nach Erstellung
@@ -28,10 +61,6 @@ TaskSchemaController::toggle(id) — Task-Status umschalten (aktiv↔erledigt)
# Service # Service
CategoryManager::createCategory() — Neue Kategorie anlegen
CategoryManager::updateCategory() — Kategorie aktualisieren
CategoryManager::deleteCategory() — Kategorie löschen
TaskManager::updateTask() — Task aktualisieren (Name, Kategorie, Status, Datum) TaskManager::updateTask() — Task aktualisieren (Name, Kategorie, Status, Datum)
TaskManager::toggleTaskStatus() — Task-Status umschalten (aktiv↔erledigt) TaskManager::toggleTaskStatus() — Task-Status umschalten (aktiv↔erledigt)
TaskManager::deleteTask() — Task löschen TaskManager::deleteTask() — Task löschen
@@ -50,10 +79,6 @@ DeadlineCalculator::getDeadlinesForRange() — Fälligkeitsdaten anhand Wiederho
TaskViewBuilder::buildWeekView() — Wochenansicht nach Tagen gruppiert TaskViewBuilder::buildWeekView() — Wochenansicht nach Tagen gruppiert
TaskViewBuilder::buildAllTasksView() — Alle Tasks sortiert TaskViewBuilder::buildAllTasksView() — Alle Tasks sortiert
TaskSerializer::serializeTask() — Task-Entity zu Response-DTO
TaskSerializer::serializeTasks() — Mehrere Tasks zu Response-DTOs
TaskSerializer::serializeCategory() — Category-Entity zu Response-DTO
# DTO # DTO
## Request ## Request
@@ -62,13 +87,9 @@ CreateSchemaRequest(name, categoryId, status, taskType, deadline, startDate, end
UpdateSchemaRequest(name, categoryId, hasCategoryId, status, taskType, deadline, startDate, endDate, weekdays, monthDays, yearDays) — Schema ändern UpdateSchemaRequest(name, categoryId, hasCategoryId, status, taskType, deadline, startDate, endDate, weekdays, monthDays, yearDays) — Schema ändern
UpdateTaskRequest(name, categoryId, status, date) — Task ändern UpdateTaskRequest(name, categoryId, status, date) — Task ändern
ToggleRequest(date) — Task-Status umschalten ToggleRequest(date) — Task-Status umschalten
CreateCategoryRequest(name, color) — Kategorie anlegen
UpdateCategoryRequest(name, color) — Kategorie ändern
## Response ## Response
TaskResponse(schemaId, taskId, name, status, taskType, date, deadline, isPast, category) — Task-Darstellung
CategoryResponse(id, name, color) — Kategorie-Darstellung
WeekViewResponse(tasksWithoutDeadline[], days[]) — Wochenansicht WeekViewResponse(tasksWithoutDeadline[], days[]) — Wochenansicht
DayResponse(date, tasks[]) — Tagesansicht mit Tasks DayResponse(date, tasks[]) — Tagesansicht mit Tasks
ToggleResponse(completed) — Toggle-Ergebnis ToggleResponse(completed) — Toggle-Ergebnis
@@ -81,8 +102,6 @@ TaskSchemaType — Wiederholungstyp (einzel, taeglich, multi, woechentlich, mona
# Repository # Repository
CategoryRepository — Standard Doctrine-Repository (keine eigenen Methoden)
TaskRepository::findBySchemaAndDate() — Task anhand Schema und Datum finden TaskRepository::findBySchemaAndDate() — Task anhand Schema und Datum finden
TaskRepository::findInRange() — Alle Tasks in einem Zeitraum (ohne inaktive Schemas) TaskRepository::findInRange() — Alle Tasks in einem Zeitraum (ohne inaktive Schemas)
TaskRepository::getExistingKeys() — Set aus "schemaId-YYYY-MM-DD" Keys für existierende Tasks TaskRepository::getExistingKeys() — Set aus "schemaId-YYYY-MM-DD" Keys für existierende Tasks

View File

@@ -5,7 +5,6 @@ namespace App\Controller\Api;
use App\DTO\Request\UpdateTaskRequest; use App\DTO\Request\UpdateTaskRequest;
use App\Entity\Task; use App\Entity\Task;
use App\Service\TaskManager; use App\Service\TaskManager;
use App\Service\TaskSerializer;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
@@ -17,23 +16,20 @@ class TaskController extends AbstractController
{ {
public function __construct( public function __construct(
private TaskManager $taskManager, private TaskManager $taskManager,
private TaskSerializer $taskSerializer,
) {} ) {}
#[Route('/{id}', name: 'show', methods: ['GET'])] #[Route('/{id}', name: 'show', methods: ['GET'])]
public function show(Task $task): JsonResponse public function show(Task $task): JsonResponse
{ {
$response = $this->taskSerializer->serializeTask($task); return $this->json($task, context: ['groups' => ['task:read', 'category:read']]);
return $this->json($response);
} }
#[Route('/{id}', name: 'update', methods: ['PUT'])] #[Route('/{id}', name: 'update', methods: ['PUT'])]
public function update(#[MapRequestPayload] UpdateTaskRequest $dto, Task $task): JsonResponse public function update(#[MapRequestPayload] UpdateTaskRequest $dto, Task $task): JsonResponse
{ {
$result = $this->taskManager->updateTask($task, $dto); $task = $this->taskManager->updateTask($task, $dto);
return $this->json($result); return $this->json($task, context: ['groups' => ['task:read', 'category:read']]);
} }
#[Route('/{id}', name: 'delete', methods: ['DELETE'])] #[Route('/{id}', name: 'delete', methods: ['DELETE'])]

View File

@@ -41,7 +41,7 @@ class TaskSchemaController extends AbstractController
$startParam = $request->query->get('start'); $startParam = $request->query->get('start');
$start = $startParam ? new \DateTimeImmutable($startParam) : new \DateTimeImmutable('today'); $start = $startParam ? new \DateTimeImmutable($startParam) : new \DateTimeImmutable('today');
return $this->json($this->taskViewBuilder->buildWeekView($start)); return $this->json($this->taskViewBuilder->buildWeekView($start), context: ['groups' => ['task:read', 'category:read']]);
} }
#[Route('/all', name: 'schemas.all', methods: ['GET'])] #[Route('/all', name: 'schemas.all', methods: ['GET'])]
@@ -55,7 +55,7 @@ class TaskSchemaController extends AbstractController
#[Route('/all-tasks', name: 'schemas.allTasks', methods: ['GET'])] #[Route('/all-tasks', name: 'schemas.allTasks', methods: ['GET'])]
public function allTasks(): JsonResponse public function allTasks(): JsonResponse
{ {
return $this->json($this->taskViewBuilder->buildAllTasksView()); return $this->json($this->taskViewBuilder->buildAllTasksView(), context: ['groups' => ['task:read', 'category:read']]);
} }
#[Route('/{id}', name: 'schemas.show', methods: ['GET'])] #[Route('/{id}', name: 'schemas.show', methods: ['GET'])]

View File

@@ -1,12 +0,0 @@
<?php
namespace App\DTO\Response;
class CategoryResponse
{
public function __construct(
public readonly int $id,
public readonly string $name,
public readonly string $color,
) {}
}

View File

@@ -2,11 +2,15 @@
namespace App\DTO\Response; namespace App\DTO\Response;
use Symfony\Component\Serializer\Attribute\Groups;
class DayResponse class DayResponse
{ {
public function __construct( public function __construct(
#[Groups(['task:read'])]
public readonly string $date, public readonly string $date,
/** @var TaskResponse[] */ /** @var \App\Entity\Task[] */
#[Groups(['task:read'])]
public readonly array $tasks, public readonly array $tasks,
) {} ) {}
} }

View File

@@ -1,18 +0,0 @@
<?php
namespace App\DTO\Response;
class TaskResponse
{
public function __construct(
public readonly int $schemaId,
public readonly int $taskId,
public readonly string $name,
public readonly string $status,
public readonly string $taskType,
public readonly ?string $date,
public readonly ?string $deadline,
public readonly bool $isPast,
public readonly ?CategoryResponse $category,
) {}
}

View File

@@ -2,12 +2,16 @@
namespace App\DTO\Response; namespace App\DTO\Response;
use Symfony\Component\Serializer\Attribute\Groups;
class WeekViewResponse class WeekViewResponse
{ {
public function __construct( public function __construct(
/** @var TaskResponse[] */ /** @var \App\Entity\Task[] */
#[Groups(['task:read'])]
public readonly array $tasksWithoutDeadline, public readonly array $tasksWithoutDeadline,
/** @var DayResponse[] */ /** @var DayResponse[] */
#[Groups(['task:read'])]
public readonly array $days, public readonly array $days,
) {} ) {}
} }

View File

@@ -6,6 +6,8 @@ use App\Enum\TaskStatus;
use App\Repository\TaskRepository; use App\Repository\TaskRepository;
use Doctrine\DBAL\Types\Types; use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Attribute\Groups;
use Symfony\Component\Serializer\Attribute\SerializedName;
#[ORM\Entity(repositoryClass: TaskRepository::class)] #[ORM\Entity(repositoryClass: TaskRepository::class)]
#[ORM\UniqueConstraint(columns: ['task_id', 'date'])] #[ORM\UniqueConstraint(columns: ['task_id', 'date'])]
@@ -44,11 +46,20 @@ class Task
#[ORM\Column(type: Types::DATETIME_MUTABLE)] #[ORM\Column(type: Types::DATETIME_MUTABLE)]
private \DateTimeInterface $createdAt; private \DateTimeInterface $createdAt;
#[Groups(['task:read'])]
#[SerializedName('taskId')]
public function getId(): ?int public function getId(): ?int
{ {
return $this->id; return $this->id;
} }
#[Groups(['task:read'])]
#[SerializedName('schemaId')]
public function getSchemaId(): int
{
return $this->schema->getId();
}
public function getSchema(): TaskSchema public function getSchema(): TaskSchema
{ {
return $this->schema; return $this->schema;
@@ -93,27 +104,39 @@ class Task
return $this; return $this;
} }
#[Groups(['task:read'])]
#[SerializedName('name')]
public function getEffectiveName(): string public function getEffectiveName(): string
{ {
return $this->name ?? $this->schema->getName(); return $this->name ?? $this->schema->getName();
} }
#[Groups(['task:read'])]
#[SerializedName('category')]
public function getEffectiveCategory(): ?Category public function getEffectiveCategory(): ?Category
{ {
return $this->categoryOverridden ? $this->category : $this->schema->getCategory(); return $this->categoryOverridden ? $this->category : $this->schema->getCategory();
} }
#[Groups(['task:read'])]
public function getDate(): ?\DateTimeInterface public function getDate(): ?\DateTimeInterface
{ {
return $this->date; return $this->date;
} }
#[Groups(['task:read'])]
public function getDeadline(): ?\DateTimeInterface
{
return $this->date;
}
public function setDate(?\DateTimeInterface $date): static public function setDate(?\DateTimeInterface $date): static
{ {
$this->date = $date; $this->date = $date;
return $this; return $this;
} }
#[Groups(['task:read'])]
public function getStatus(): TaskStatus public function getStatus(): TaskStatus
{ {
return $this->status; return $this->status;
@@ -125,6 +148,20 @@ class Task
return $this; return $this;
} }
#[Groups(['task:read'])]
#[SerializedName('taskType')]
public function getTaskType(): string
{
return $this->schema->getTaskType()->value;
}
#[Groups(['task:read'])]
#[SerializedName('isPast')]
public function isPast(): bool
{
return $this->date !== null && $this->date < new \DateTimeImmutable('today');
}
public function getCreatedAt(): \DateTimeInterface public function getCreatedAt(): \DateTimeInterface
{ {
return $this->createdAt; return $this->createdAt;

View File

@@ -4,12 +4,11 @@ namespace App\Service;
use App\DTO\Request\ToggleRequest; use App\DTO\Request\ToggleRequest;
use App\DTO\Request\UpdateTaskRequest; use App\DTO\Request\UpdateTaskRequest;
use App\DTO\Response\TaskResponse;
use App\DTO\Response\ToggleResponse; use App\DTO\Response\ToggleResponse;
use App\Entity\Task;
use App\Entity\TaskSchema; use App\Entity\TaskSchema;
use App\Enum\TaskSchemaStatus; use App\Enum\TaskSchemaStatus;
use App\Enum\TaskStatus; use App\Enum\TaskStatus;
use App\Entity\Task;
use App\Repository\CategoryRepository; use App\Repository\CategoryRepository;
use App\Repository\TaskRepository; use App\Repository\TaskRepository;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
@@ -21,10 +20,9 @@ class TaskManager
private EntityManagerInterface $em, private EntityManagerInterface $em,
private CategoryRepository $categoryRepository, private CategoryRepository $categoryRepository,
private TaskRepository $taskRepository, private TaskRepository $taskRepository,
private TaskSerializer $taskSerializer,
) {} ) {}
public function updateTask(Task $task, UpdateTaskRequest $request): TaskResponse public function updateTask(Task $task, UpdateTaskRequest $request): Task
{ {
$task->setName($request->name); $task->setName($request->name);
@@ -43,7 +41,7 @@ class TaskManager
$this->em->flush(); $this->em->flush();
return $this->taskSerializer->serializeTask($task, new \DateTimeImmutable('today')); return $task;
} }
public function toggleTaskStatus(TaskSchema $schema, ToggleRequest $request): ToggleResponse public function toggleTaskStatus(TaskSchema $schema, ToggleRequest $request): ToggleResponse

View File

@@ -1,49 +0,0 @@
<?php
namespace App\Service;
use App\DTO\Response\CategoryResponse;
use App\DTO\Response\TaskResponse;
use App\Entity\Category;
use App\Entity\Task;
class TaskSerializer
{
public function serializeTask(Task $task, ?\DateTimeImmutable $today = null): TaskResponse
{
$today ??= new \DateTimeImmutable('today');
$schema = $task->getSchema();
$category = $task->getEffectiveCategory();
$date = $task->getDate();
return new TaskResponse(
schemaId: $schema->getId(),
taskId: $task->getId(),
name: $task->getEffectiveName(),
status: $task->getStatus()->value,
taskType: $schema->getTaskType()->value,
date: $date?->format('Y-m-d'),
deadline: $date?->format('Y-m-d'),
isPast: $date !== null && $date < $today,
category: $category !== null ? $this->serializeCategory($category) : null,
);
}
/**
* @param Task[] $tasks
* @return TaskResponse[]
*/
public function serializeTasks(array $tasks, \DateTimeImmutable $today): array
{
return array_map(fn(Task $task) => $this->serializeTask($task, $today), $tasks);
}
public function serializeCategory(Category $category): CategoryResponse
{
return new CategoryResponse(
id: $category->getId(),
name: $category->getName(),
color: $category->getColor(),
);
}
}

View File

@@ -3,8 +3,8 @@
namespace App\Service; namespace App\Service;
use App\DTO\Response\DayResponse; use App\DTO\Response\DayResponse;
use App\DTO\Response\TaskResponse;
use App\DTO\Response\WeekViewResponse; use App\DTO\Response\WeekViewResponse;
use App\Entity\Task;
use App\Repository\TaskRepository; use App\Repository\TaskRepository;
class TaskViewBuilder class TaskViewBuilder
@@ -12,23 +12,18 @@ class TaskViewBuilder
public function __construct( public function __construct(
private TaskGenerator $taskGenerator, private TaskGenerator $taskGenerator,
private TaskRepository $taskRepository, private TaskRepository $taskRepository,
private TaskSerializer $taskSerializer,
) {} ) {}
public function buildWeekView(?\DateTimeImmutable $start = null): WeekViewResponse public function buildWeekView(?\DateTimeImmutable $start = null): WeekViewResponse
{ {
$start = $start ?? new \DateTimeImmutable('today'); $start = $start ?? new \DateTimeImmutable('today');
$end = $start->modify('+6 days'); $end = $start->modify('+6 days');
$today = new \DateTimeImmutable('today');
// Generate missing tasks
$this->taskGenerator->generateForRange($start, $end); $this->taskGenerator->generateForRange($start, $end);
$this->taskGenerator->generateForTasksWithoutDate(); $this->taskGenerator->generateForTasksWithoutDate();
// Load tasks with dates in range
$tasks = $this->taskRepository->findInRange($start, $end); $tasks = $this->taskRepository->findInRange($start, $end);
// Build days structure
$days = []; $days = [];
$current = $start; $current = $start;
while ($current <= $end) { while ($current <= $end) {
@@ -39,20 +34,15 @@ class TaskViewBuilder
foreach ($tasks as $task) { foreach ($tasks as $task) {
$dateKey = $task->getDate()->format('Y-m-d'); $dateKey = $task->getDate()->format('Y-m-d');
if (isset($days[$dateKey])) { if (isset($days[$dateKey])) {
$days[$dateKey][] = $this->taskSerializer->serializeTask($task, $today); $days[$dateKey][] = $task;
} }
} }
// Tasks without date (einzel without deadline) $tasksWithoutDeadline = $this->taskRepository->findWithoutDate();
$tasksWithoutDeadline = [];
$noDateTasks = $this->taskRepository->findWithoutDate();
foreach ($noDateTasks as $task) {
$tasksWithoutDeadline[] = $this->taskSerializer->serializeTask($task, $today);
}
$dayResponses = []; $dayResponses = [];
foreach ($days as $date => $dayTasks) { foreach ($days as $date => $dayTasks) {
usort($dayTasks, fn(TaskResponse $a, TaskResponse $b) => strcmp($a->name, $b->name)); usort($dayTasks, fn(Task $a, Task $b) => strcmp($a->getEffectiveName(), $b->getEffectiveName()));
$dayResponses[] = new DayResponse( $dayResponses[] = new DayResponse(
date: $date, date: $date,
tasks: $dayTasks, tasks: $dayTasks,
@@ -66,24 +56,21 @@ class TaskViewBuilder
} }
/** /**
* @return TaskResponse[] * @return Task[]
*/ */
public function buildAllTasksView(): array public function buildAllTasksView(): array
{ {
$this->taskGenerator->generateForTasksWithoutDate(); $this->taskGenerator->generateForTasksWithoutDate();
$today = new \DateTimeImmutable('today');
$result = []; $result = [];
// Tasks without date first
$noDate = $this->taskRepository->findWithoutDate(); $noDate = $this->taskRepository->findWithoutDate();
foreach ($noDate as $task) { foreach ($noDate as $task) {
$result[] = $this->taskSerializer->serializeTask($task, $today); $result[] = $task;
} }
// Then all tasks with date
$tasks = $this->taskRepository->findAllSorted(); $tasks = $this->taskRepository->findAllSorted();
foreach ($tasks as $task) { foreach ($tasks as $task) {
$result[] = $this->taskSerializer->serializeTask($task, $today); $result[] = $task;
} }
return $result; return $result;

View File

@@ -2,21 +2,21 @@
// This file has been auto-generated by the Symfony Dependency Injection Component for internal use. // This file has been auto-generated by the Symfony Dependency Injection Component for internal use.
if (\class_exists(\ContainerMVxFJp0\App_KernelDevDebugContainer::class, false)) { if (\class_exists(\Container9vrsx4S\App_KernelDevDebugContainer::class, false)) {
// no-op // no-op
} elseif (!include __DIR__.'/ContainerMVxFJp0/App_KernelDevDebugContainer.php') { } elseif (!include __DIR__.'/Container9vrsx4S/App_KernelDevDebugContainer.php') {
touch(__DIR__.'/ContainerMVxFJp0.legacy'); touch(__DIR__.'/Container9vrsx4S.legacy');
return; return;
} }
if (!\class_exists(App_KernelDevDebugContainer::class, false)) { if (!\class_exists(App_KernelDevDebugContainer::class, false)) {
\class_alias(\ContainerMVxFJp0\App_KernelDevDebugContainer::class, App_KernelDevDebugContainer::class, false); \class_alias(\Container9vrsx4S\App_KernelDevDebugContainer::class, App_KernelDevDebugContainer::class, false);
} }
return new \ContainerMVxFJp0\App_KernelDevDebugContainer([ return new \Container9vrsx4S\App_KernelDevDebugContainer([
'container.build_hash' => 'MVxFJp0', 'container.build_hash' => '9vrsx4S',
'container.build_id' => '84385df2', 'container.build_id' => 'de48fc05',
'container.build_time' => 1774904534, 'container.build_time' => 1774939296,
'container.runtime_mode' => \in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true) ? 'web=0' : 'web=1', 'container.runtime_mode' => \in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true) ? 'web=0' : 'web=1',
], __DIR__.\DIRECTORY_SEPARATOR.'ContainerMVxFJp0'); ], __DIR__.\DIRECTORY_SEPARATOR.'Container9vrsx4S');

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -10,91 +10,91 @@ if (in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
} }
require dirname(__DIR__, 3).'/vendor/autoload.php'; require dirname(__DIR__, 3).'/vendor/autoload.php';
(require __DIR__.'/App_KernelDevDebugContainer.php')->set(\ContainerMVxFJp0\App_KernelDevDebugContainer::class, null); (require __DIR__.'/App_KernelDevDebugContainer.php')->set(\Container9vrsx4S\App_KernelDevDebugContainer::class, null);
require __DIR__.'/ContainerMVxFJp0/UriSignerGhostB68a0a1.php'; require __DIR__.'/Container9vrsx4S/UriSignerGhostB68a0a1.php';
require __DIR__.'/ContainerMVxFJp0/EntityManagerGhost614a58f.php'; require __DIR__.'/Container9vrsx4S/EntityManagerGhost614a58f.php';
require __DIR__.'/ContainerMVxFJp0/RequestPayloadValueResolverGhost01ca9cc.php'; require __DIR__.'/Container9vrsx4S/RequestPayloadValueResolverGhost01ca9cc.php';
require __DIR__.'/ContainerMVxFJp0/getValidator_WhenService.php'; require __DIR__.'/Container9vrsx4S/getValidator_WhenService.php';
require __DIR__.'/ContainerMVxFJp0/getValidator_NotCompromisedPasswordService.php'; require __DIR__.'/Container9vrsx4S/getValidator_NotCompromisedPasswordService.php';
require __DIR__.'/ContainerMVxFJp0/getValidator_NoSuspiciousCharactersService.php'; require __DIR__.'/Container9vrsx4S/getValidator_NoSuspiciousCharactersService.php';
require __DIR__.'/ContainerMVxFJp0/getValidator_ExpressionService.php'; require __DIR__.'/Container9vrsx4S/getValidator_ExpressionService.php';
require __DIR__.'/ContainerMVxFJp0/getValidator_EmailService.php'; require __DIR__.'/Container9vrsx4S/getValidator_EmailService.php';
require __DIR__.'/ContainerMVxFJp0/getSession_Handler_NativeService.php'; require __DIR__.'/Container9vrsx4S/getSession_Handler_NativeService.php';
require __DIR__.'/ContainerMVxFJp0/getSession_FactoryService.php'; require __DIR__.'/Container9vrsx4S/getSession_FactoryService.php';
require __DIR__.'/ContainerMVxFJp0/getServicesResetterService.php'; require __DIR__.'/Container9vrsx4S/getServicesResetterService.php';
require __DIR__.'/ContainerMVxFJp0/getSecrets_VaultService.php'; require __DIR__.'/Container9vrsx4S/getSecrets_VaultService.php';
require __DIR__.'/ContainerMVxFJp0/getSecrets_EnvVarLoaderService.php'; require __DIR__.'/Container9vrsx4S/getSecrets_EnvVarLoaderService.php';
require __DIR__.'/ContainerMVxFJp0/getRouting_LoaderService.php'; require __DIR__.'/Container9vrsx4S/getRouting_LoaderService.php';
require __DIR__.'/ContainerMVxFJp0/getPropertyInfo_SerializerExtractorService.php'; require __DIR__.'/Container9vrsx4S/getPropertyInfo_SerializerExtractorService.php';
require __DIR__.'/ContainerMVxFJp0/getPropertyInfo_ConstructorExtractorService.php'; require __DIR__.'/Container9vrsx4S/getPropertyInfo_ConstructorExtractorService.php';
require __DIR__.'/ContainerMVxFJp0/getErrorHandler_ErrorRenderer_HtmlService.php'; require __DIR__.'/Container9vrsx4S/getErrorHandler_ErrorRenderer_HtmlService.php';
require __DIR__.'/ContainerMVxFJp0/getErrorControllerService.php'; require __DIR__.'/Container9vrsx4S/getErrorControllerService.php';
require __DIR__.'/ContainerMVxFJp0/getDoctrine_UuidGeneratorService.php'; require __DIR__.'/Container9vrsx4S/getDoctrine_UuidGeneratorService.php';
require __DIR__.'/ContainerMVxFJp0/getDoctrine_UlidGeneratorService.php'; require __DIR__.'/Container9vrsx4S/getDoctrine_UlidGeneratorService.php';
require __DIR__.'/ContainerMVxFJp0/getDoctrine_Orm_Validator_UniqueService.php'; require __DIR__.'/Container9vrsx4S/getDoctrine_Orm_Validator_UniqueService.php';
require __DIR__.'/ContainerMVxFJp0/getDoctrine_Orm_Listeners_PdoSessionHandlerSchemaListenerService.php'; require __DIR__.'/Container9vrsx4S/getDoctrine_Orm_Listeners_PdoSessionHandlerSchemaListenerService.php';
require __DIR__.'/ContainerMVxFJp0/getDoctrine_Orm_Listeners_LockStoreSchemaListenerService.php'; require __DIR__.'/Container9vrsx4S/getDoctrine_Orm_Listeners_LockStoreSchemaListenerService.php';
require __DIR__.'/ContainerMVxFJp0/getDoctrine_Orm_Listeners_DoctrineTokenProviderSchemaListenerService.php'; require __DIR__.'/Container9vrsx4S/getDoctrine_Orm_Listeners_DoctrineTokenProviderSchemaListenerService.php';
require __DIR__.'/ContainerMVxFJp0/getDoctrine_Orm_Listeners_DoctrineDbalCacheAdapterSchemaListenerService.php'; require __DIR__.'/Container9vrsx4S/getDoctrine_Orm_Listeners_DoctrineDbalCacheAdapterSchemaListenerService.php';
require __DIR__.'/ContainerMVxFJp0/getDoctrine_Orm_DefaultListeners_AttachEntityListenersService.php'; require __DIR__.'/Container9vrsx4S/getDoctrine_Orm_DefaultListeners_AttachEntityListenersService.php';
require __DIR__.'/ContainerMVxFJp0/getDoctrine_Orm_DefaultEntityManager_PropertyInfoExtractorService.php'; require __DIR__.'/Container9vrsx4S/getDoctrine_Orm_DefaultEntityManager_PropertyInfoExtractorService.php';
require __DIR__.'/ContainerMVxFJp0/getDebug_ErrorHandlerConfiguratorService.php'; require __DIR__.'/Container9vrsx4S/getDebug_ErrorHandlerConfiguratorService.php';
require __DIR__.'/ContainerMVxFJp0/getContainer_GetRoutingConditionServiceService.php'; require __DIR__.'/Container9vrsx4S/getContainer_GetRoutingConditionServiceService.php';
require __DIR__.'/ContainerMVxFJp0/getContainer_EnvVarProcessorsLocatorService.php'; require __DIR__.'/Container9vrsx4S/getContainer_EnvVarProcessorsLocatorService.php';
require __DIR__.'/ContainerMVxFJp0/getContainer_EnvVarProcessorService.php'; require __DIR__.'/Container9vrsx4S/getContainer_EnvVarProcessorService.php';
require __DIR__.'/ContainerMVxFJp0/getCache_ValidatorExpressionLanguageService.php'; require __DIR__.'/Container9vrsx4S/getCache_ValidatorExpressionLanguageService.php';
require __DIR__.'/ContainerMVxFJp0/getCache_SystemClearerService.php'; require __DIR__.'/Container9vrsx4S/getCache_SystemClearerService.php';
require __DIR__.'/ContainerMVxFJp0/getCache_SystemService.php'; require __DIR__.'/Container9vrsx4S/getCache_SystemService.php';
require __DIR__.'/ContainerMVxFJp0/getCache_GlobalClearerService.php'; require __DIR__.'/Container9vrsx4S/getCache_GlobalClearerService.php';
require __DIR__.'/ContainerMVxFJp0/getCache_AppClearerService.php'; require __DIR__.'/Container9vrsx4S/getCache_AppClearerService.php';
require __DIR__.'/ContainerMVxFJp0/getCache_AppService.php'; require __DIR__.'/Container9vrsx4S/getCache_AppService.php';
require __DIR__.'/ContainerMVxFJp0/getTemplateControllerService.php'; require __DIR__.'/Container9vrsx4S/getTemplateControllerService.php';
require __DIR__.'/ContainerMVxFJp0/getRedirectControllerService.php'; require __DIR__.'/Container9vrsx4S/getRedirectControllerService.php';
require __DIR__.'/ContainerMVxFJp0/getTaskManagerService.php'; require __DIR__.'/Container9vrsx4S/getTaskManagerService.php';
require __DIR__.'/ContainerMVxFJp0/getTaskSchemaRepositoryService.php'; require __DIR__.'/Container9vrsx4S/getTaskSchemaRepositoryService.php';
require __DIR__.'/ContainerMVxFJp0/getTaskRepositoryService.php'; require __DIR__.'/Container9vrsx4S/getTaskRepositoryService.php';
require __DIR__.'/ContainerMVxFJp0/getCategoryRepositoryService.php'; require __DIR__.'/Container9vrsx4S/getCategoryRepositoryService.php';
require __DIR__.'/ContainerMVxFJp0/getUpdateTaskRequestService.php'; require __DIR__.'/Container9vrsx4S/getUpdateTaskRequestService.php';
require __DIR__.'/ContainerMVxFJp0/getUpdateSchemaRequestService.php'; require __DIR__.'/Container9vrsx4S/getUpdateSchemaRequestService.php';
require __DIR__.'/ContainerMVxFJp0/getUpdateCategoryRequestService.php'; require __DIR__.'/Container9vrsx4S/getUpdateCategoryRequestService.php';
require __DIR__.'/ContainerMVxFJp0/getToggleRequestService.php'; require __DIR__.'/Container9vrsx4S/getToggleRequestService.php';
require __DIR__.'/ContainerMVxFJp0/getCreateSchemaRequestService.php'; require __DIR__.'/Container9vrsx4S/getCreateSchemaRequestService.php';
require __DIR__.'/ContainerMVxFJp0/getCreateCategoryRequestService.php'; require __DIR__.'/Container9vrsx4S/getCreateCategoryRequestService.php';
require __DIR__.'/ContainerMVxFJp0/getTaskSchemaControllerService.php'; require __DIR__.'/Container9vrsx4S/getTaskSchemaControllerService.php';
require __DIR__.'/ContainerMVxFJp0/getTaskControllerService.php'; require __DIR__.'/Container9vrsx4S/getTaskControllerService.php';
require __DIR__.'/ContainerMVxFJp0/getCategoryControllerService.php'; require __DIR__.'/Container9vrsx4S/getCategoryControllerService.php';
require __DIR__.'/ContainerMVxFJp0/getTaskSchemaControllercreateService.php'; require __DIR__.'/Container9vrsx4S/getTaskSchemaControllercreateService.php';
require __DIR__.'/ContainerMVxFJp0/getTaskSchemaControllerupdateService.php'; require __DIR__.'/Container9vrsx4S/getTaskSchemaControllerupdateService.php';
require __DIR__.'/ContainerMVxFJp0/getTaskControllershowService.php'; require __DIR__.'/Container9vrsx4S/getTaskControllershowService.php';
require __DIR__.'/ContainerMVxFJp0/getTaskControllerdeleteService.php'; require __DIR__.'/Container9vrsx4S/getTaskControllerdeleteService.php';
require __DIR__.'/ContainerMVxFJp0/get_ServiceLocator_XkkbYmService.php'; require __DIR__.'/Container9vrsx4S/get_ServiceLocator_XkkbYmService.php';
require __DIR__.'/ContainerMVxFJp0/getTaskControllerupdateService.php'; require __DIR__.'/Container9vrsx4S/getTaskControllerupdateService.php';
require __DIR__.'/ContainerMVxFJp0/get_ServiceLocator_TJNRSaVService.php'; require __DIR__.'/Container9vrsx4S/get_ServiceLocator_TJNRSaVService.php';
require __DIR__.'/ContainerMVxFJp0/getTaskSchemaControllershowService.php'; require __DIR__.'/Container9vrsx4S/getTaskSchemaControllershowService.php';
require __DIR__.'/ContainerMVxFJp0/getTaskSchemaControllerdeleteService.php'; require __DIR__.'/Container9vrsx4S/getTaskSchemaControllerdeleteService.php';
require __DIR__.'/ContainerMVxFJp0/get_ServiceLocator_R5gwLrSService.php'; require __DIR__.'/Container9vrsx4S/get_ServiceLocator_R5gwLrSService.php';
require __DIR__.'/ContainerMVxFJp0/get_ServiceLocator_LiUCm3nService.php'; require __DIR__.'/Container9vrsx4S/get_ServiceLocator_LiUCm3nService.php';
require __DIR__.'/ContainerMVxFJp0/getCategoryControllercreateService.php'; require __DIR__.'/Container9vrsx4S/getCategoryControllercreateService.php';
require __DIR__.'/ContainerMVxFJp0/getCategoryControllershowService.php'; require __DIR__.'/Container9vrsx4S/getCategoryControllershowService.php';
require __DIR__.'/ContainerMVxFJp0/getCategoryControllerdeleteService.php'; require __DIR__.'/Container9vrsx4S/getCategoryControllerdeleteService.php';
require __DIR__.'/ContainerMVxFJp0/get_ServiceLocator_Cm49tF9Service.php'; require __DIR__.'/Container9vrsx4S/get_ServiceLocator_Cm49tF9Service.php';
require __DIR__.'/ContainerMVxFJp0/getTaskSchemaControllertoggleService.php'; require __DIR__.'/Container9vrsx4S/getTaskSchemaControllertoggleService.php';
require __DIR__.'/ContainerMVxFJp0/getCategoryControllerupdateService.php'; require __DIR__.'/Container9vrsx4S/getCategoryControllerupdateService.php';
require __DIR__.'/ContainerMVxFJp0/get_ServiceLocator_1vYpZ1B_KernelregisterContainerConfigurationService.php'; require __DIR__.'/Container9vrsx4S/get_ServiceLocator_1vYpZ1B_KernelregisterContainerConfigurationService.php';
require __DIR__.'/ContainerMVxFJp0/get_ServiceLocator_1vYpZ1B_KernelloadRoutesService.php'; require __DIR__.'/Container9vrsx4S/get_ServiceLocator_1vYpZ1B_KernelloadRoutesService.php';
require __DIR__.'/ContainerMVxFJp0/get_ServiceLocator_1vYpZ1BService.php'; require __DIR__.'/Container9vrsx4S/get_ServiceLocator_1vYpZ1BService.php';
require __DIR__.'/ContainerMVxFJp0/get_Debug_ValueResolver_Doctrine_Orm_EntityValueResolverService.php'; require __DIR__.'/Container9vrsx4S/get_Debug_ValueResolver_Doctrine_Orm_EntityValueResolverService.php';
require __DIR__.'/ContainerMVxFJp0/get_Debug_ValueResolver_ArgumentResolver_VariadicService.php'; require __DIR__.'/Container9vrsx4S/get_Debug_ValueResolver_ArgumentResolver_VariadicService.php';
require __DIR__.'/ContainerMVxFJp0/get_Debug_ValueResolver_ArgumentResolver_SessionService.php'; require __DIR__.'/Container9vrsx4S/get_Debug_ValueResolver_ArgumentResolver_SessionService.php';
require __DIR__.'/ContainerMVxFJp0/get_Debug_ValueResolver_ArgumentResolver_ServiceService.php'; require __DIR__.'/Container9vrsx4S/get_Debug_ValueResolver_ArgumentResolver_ServiceService.php';
require __DIR__.'/ContainerMVxFJp0/get_Debug_ValueResolver_ArgumentResolver_RequestPayloadService.php'; require __DIR__.'/Container9vrsx4S/get_Debug_ValueResolver_ArgumentResolver_RequestPayloadService.php';
require __DIR__.'/ContainerMVxFJp0/get_Debug_ValueResolver_ArgumentResolver_RequestAttributeService.php'; require __DIR__.'/Container9vrsx4S/get_Debug_ValueResolver_ArgumentResolver_RequestAttributeService.php';
require __DIR__.'/ContainerMVxFJp0/get_Debug_ValueResolver_ArgumentResolver_RequestService.php'; require __DIR__.'/Container9vrsx4S/get_Debug_ValueResolver_ArgumentResolver_RequestService.php';
require __DIR__.'/ContainerMVxFJp0/get_Debug_ValueResolver_ArgumentResolver_QueryParameterValueResolverService.php'; require __DIR__.'/Container9vrsx4S/get_Debug_ValueResolver_ArgumentResolver_QueryParameterValueResolverService.php';
require __DIR__.'/ContainerMVxFJp0/get_Debug_ValueResolver_ArgumentResolver_NotTaggedControllerService.php'; require __DIR__.'/Container9vrsx4S/get_Debug_ValueResolver_ArgumentResolver_NotTaggedControllerService.php';
require __DIR__.'/ContainerMVxFJp0/get_Debug_ValueResolver_ArgumentResolver_DefaultService.php'; require __DIR__.'/Container9vrsx4S/get_Debug_ValueResolver_ArgumentResolver_DefaultService.php';
require __DIR__.'/ContainerMVxFJp0/get_Debug_ValueResolver_ArgumentResolver_DatetimeService.php'; require __DIR__.'/Container9vrsx4S/get_Debug_ValueResolver_ArgumentResolver_DatetimeService.php';
require __DIR__.'/ContainerMVxFJp0/get_Debug_ValueResolver_ArgumentResolver_BackedEnumResolverService.php'; require __DIR__.'/Container9vrsx4S/get_Debug_ValueResolver_ArgumentResolver_BackedEnumResolverService.php';
$classes = []; $classes = [];
$classes[] = 'Symfony\Bundle\FrameworkBundle\FrameworkBundle'; $classes[] = 'Symfony\Bundle\FrameworkBundle\FrameworkBundle';
@@ -135,7 +135,6 @@ $classes[] = 'App\Repository\CategoryRepository';
$classes[] = 'App\Repository\TaskRepository'; $classes[] = 'App\Repository\TaskRepository';
$classes[] = 'App\Repository\TaskSchemaRepository'; $classes[] = 'App\Repository\TaskSchemaRepository';
$classes[] = 'App\Service\TaskManager'; $classes[] = 'App\Service\TaskManager';
$classes[] = 'App\Service\TaskSerializer';
$classes[] = 'Symfony\Bundle\FrameworkBundle\Controller\RedirectController'; $classes[] = 'Symfony\Bundle\FrameworkBundle\Controller\RedirectController';
$classes[] = 'Symfony\Bundle\FrameworkBundle\Controller\TemplateController'; $classes[] = 'Symfony\Bundle\FrameworkBundle\Controller\TemplateController';
$classes[] = 'Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestPayloadValueResolver'; $classes[] = 'Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestPayloadValueResolver';

View File

@@ -245,7 +245,6 @@
<tag name="routing.controller"/> <tag name="routing.controller"/>
<tag name="container.service_subscriber"/> <tag name="container.service_subscriber"/>
<argument type="service" id="App\Service\TaskManager"/> <argument type="service" id="App\Service\TaskManager"/>
<argument type="service" id="App\Service\TaskSerializer"/>
<call method="setContainer"> <call method="setContainer">
<argument type="service" id=".service_locator.TJNRSaV.App\Controller\Api\TaskController"/> <argument type="service" id=".service_locator.TJNRSaV.App\Controller\Api\TaskController"/>
</call> </call>
@@ -268,15 +267,9 @@
<service id="App\DTO\Request\UpdateCategoryRequest" class="App\DTO\Request\UpdateCategoryRequest" autowire="true" autoconfigure="true"/> <service id="App\DTO\Request\UpdateCategoryRequest" class="App\DTO\Request\UpdateCategoryRequest" autowire="true" autoconfigure="true"/>
<service id="App\DTO\Request\UpdateSchemaRequest" class="App\DTO\Request\UpdateSchemaRequest" autowire="true" autoconfigure="true"/> <service id="App\DTO\Request\UpdateSchemaRequest" class="App\DTO\Request\UpdateSchemaRequest" autowire="true" autoconfigure="true"/>
<service id="App\DTO\Request\UpdateTaskRequest" class="App\DTO\Request\UpdateTaskRequest" autowire="true" autoconfigure="true"/> <service id="App\DTO\Request\UpdateTaskRequest" class="App\DTO\Request\UpdateTaskRequest" autowire="true" autoconfigure="true"/>
<service id="App\DTO\Response\CategoryResponse" class="App\DTO\Response\CategoryResponse" autowire="true" autoconfigure="true">
<tag name="container.error" message="Cannot autowire service &quot;App\DTO\Response\CategoryResponse&quot;: argument &quot;$id&quot; of method &quot;__construct()&quot; is type-hinted &quot;int&quot;, you should configure its value explicitly."/>
</service>
<service id="App\DTO\Response\DayResponse" class="App\DTO\Response\DayResponse" autowire="true" autoconfigure="true"> <service id="App\DTO\Response\DayResponse" class="App\DTO\Response\DayResponse" autowire="true" autoconfigure="true">
<tag name="container.error" message="Cannot autowire service &quot;App\DTO\Response\DayResponse&quot;: argument &quot;$date&quot; of method &quot;__construct()&quot; is type-hinted &quot;string&quot;, you should configure its value explicitly."/> <tag name="container.error" message="Cannot autowire service &quot;App\DTO\Response\DayResponse&quot;: argument &quot;$date&quot; of method &quot;__construct()&quot; is type-hinted &quot;string&quot;, you should configure its value explicitly."/>
</service> </service>
<service id="App\DTO\Response\TaskResponse" class="App\DTO\Response\TaskResponse" autowire="true" autoconfigure="true">
<tag name="container.error" message="Cannot autowire service &quot;App\DTO\Response\TaskResponse&quot;: argument &quot;$schemaId&quot; of method &quot;__construct()&quot; is type-hinted &quot;int&quot;, you should configure its value explicitly."/>
</service>
<service id="App\DTO\Response\ToggleResponse" class="App\DTO\Response\ToggleResponse" autowire="true" autoconfigure="true"> <service id="App\DTO\Response\ToggleResponse" class="App\DTO\Response\ToggleResponse" autowire="true" autoconfigure="true">
<tag name="container.error" message="Cannot autowire service &quot;App\DTO\Response\ToggleResponse&quot;: argument &quot;$completed&quot; of method &quot;__construct()&quot; is type-hinted &quot;bool&quot;, you should configure its value explicitly."/> <tag name="container.error" message="Cannot autowire service &quot;App\DTO\Response\ToggleResponse&quot;: argument &quot;$completed&quot; of method &quot;__construct()&quot; is type-hinted &quot;bool&quot;, you should configure its value explicitly."/>
</service> </service>
@@ -330,14 +323,12 @@
<argument type="service" id="doctrine.orm.default_entity_manager"/> <argument type="service" id="doctrine.orm.default_entity_manager"/>
<argument type="service" id="App\Repository\CategoryRepository"/> <argument type="service" id="App\Repository\CategoryRepository"/>
<argument type="service" id="App\Repository\TaskRepository"/> <argument type="service" id="App\Repository\TaskRepository"/>
<argument type="service" id="App\Service\TaskSerializer"/>
</service> </service>
<service id="App\Service\TaskSchemaManager" class="App\Service\TaskSchemaManager" autowire="true" autoconfigure="true"> <service id="App\Service\TaskSchemaManager" class="App\Service\TaskSchemaManager" autowire="true" autoconfigure="true">
<argument type="service" id="doctrine.orm.default_entity_manager"/> <argument type="service" id="doctrine.orm.default_entity_manager"/>
<argument type="service" id="App\Repository\CategoryRepository"/> <argument type="service" id="App\Repository\CategoryRepository"/>
<argument type="service" id="App\Service\TaskSynchronizer"/> <argument type="service" id="App\Service\TaskSynchronizer"/>
</service> </service>
<service id="App\Service\TaskSerializer" class="App\Service\TaskSerializer" autowire="true" autoconfigure="true"/>
<service id="App\Service\TaskSynchronizer" class="App\Service\TaskSynchronizer" autowire="true" autoconfigure="true"> <service id="App\Service\TaskSynchronizer" class="App\Service\TaskSynchronizer" autowire="true" autoconfigure="true">
<argument type="service" id="doctrine.orm.default_entity_manager"/> <argument type="service" id="doctrine.orm.default_entity_manager"/>
<argument type="service" id="App\Repository\TaskRepository"/> <argument type="service" id="App\Repository\TaskRepository"/>
@@ -346,7 +337,6 @@
<service id="App\Service\TaskViewBuilder" class="App\Service\TaskViewBuilder" autowire="true" autoconfigure="true"> <service id="App\Service\TaskViewBuilder" class="App\Service\TaskViewBuilder" autowire="true" autoconfigure="true">
<argument type="service" id="App\Service\TaskGenerator"/> <argument type="service" id="App\Service\TaskGenerator"/>
<argument type="service" id="App\Repository\TaskRepository"/> <argument type="service" id="App\Repository\TaskRepository"/>
<argument type="service" id="App\Service\TaskSerializer"/>
</service> </service>
<service id="argument_metadata_factory" class="Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory"/> <service id="argument_metadata_factory" class="Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory"/>
<service id="argument_resolver.backed_enum_resolver" class="Symfony\Component\HttpKernel\Controller\ArgumentResolver\BackedEnumValueResolver"> <service id="argument_resolver.backed_enum_resolver" class="Symfony\Component\HttpKernel\Controller\ArgumentResolver\BackedEnumValueResolver">

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -306,9 +306,7 @@ Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Re
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service ".abstract.instanceof.App\Repository\TaskRepository"; reason: abstract. Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service ".abstract.instanceof.App\Repository\TaskRepository"; reason: abstract.
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service ".instanceof.Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepositoryInterface.0.App\Repository\TaskSchemaRepository"; reason: abstract. Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service ".instanceof.Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepositoryInterface.0.App\Repository\TaskSchemaRepository"; reason: abstract.
Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service ".abstract.instanceof.App\Repository\TaskSchemaRepository"; reason: abstract. Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service ".abstract.instanceof.App\Repository\TaskSchemaRepository"; reason: abstract.
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "App\DTO\Response\CategoryResponse"; reason: unused.
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "App\DTO\Response\DayResponse"; reason: unused. Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "App\DTO\Response\DayResponse"; reason: unused.
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "App\DTO\Response\TaskResponse"; reason: unused.
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "App\DTO\Response\ToggleResponse"; reason: unused. Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "App\DTO\Response\ToggleResponse"; reason: unused.
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "App\DTO\Response\WeekViewResponse"; reason: unused. Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "App\DTO\Response\WeekViewResponse"; reason: unused.
Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "App\Entity\Category"; reason: unused. Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "App\Entity\Category"; reason: unused.

View File

@@ -1 +1 @@
a:2:{i:0;a:6:{s:4:"type";i:16384;s:7:"message";s:255:"The "use_savepoints" configuration key is deprecated when using DBAL 4 and will be removed in DoctrineBundle 3.0. (Configuration.php:397 called by ExprBuilder.php:271, https://github.com/doctrine/DoctrineBundle/pull/2055, package doctrine/doctrine-bundle)";s:4:"file";s:70:"/var/www/html/backend/vendor/doctrine/deprecations/src/Deprecation.php";s:4:"line";i:208;s:5:"trace";a:1:{i:0;a:5:{s:4:"file";s:70:"/var/www/html/backend/vendor/doctrine/deprecations/src/Deprecation.php";s:4:"line";i:108;s:8:"function";s:24:"delegateTriggerToBackend";s:5:"class";s:33:"Doctrine\Deprecations\Deprecation";s:4:"type";s:2:"::";}}s:5:"count";i:1;}i:1;a:6:{s:4:"type";i:16384;s:7:"message";s:322:"The "report_fields_where_declared" configuration option is deprecated and will be removed in DoctrineBundle 3.0. When using ORM 3, report_fields_where_declared will always be true. (Configuration.php:701 called by ExprBuilder.php:271, https://github.com/doctrine/DoctrineBundle/pull/1962, package doctrine/doctrine-bundle)";s:4:"file";s:70:"/var/www/html/backend/vendor/doctrine/deprecations/src/Deprecation.php";s:4:"line";i:208;s:5:"trace";a:1:{i:0;a:5:{s:4:"file";s:70:"/var/www/html/backend/vendor/doctrine/deprecations/src/Deprecation.php";s:4:"line";i:108;s:8:"function";s:24:"delegateTriggerToBackend";s:5:"class";s:33:"Doctrine\Deprecations\Deprecation";s:4:"type";s:2:"::";}}s:5:"count";i:1;}} a:0:{}

View File

@@ -1 +1 @@
{"resources":[{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/config/routes/framework.yaml"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/vendor/symfony/framework-bundle/Resources/config/routing/errors.php"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/config/routes.yaml"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/service-contracts/ServiceSubscriberInterface.php":null,"/var/www/html/backend/src/Controller/Api/CategoryController.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Controller/AbstractController.php":null},"className":"App\\Controller\\Api\\CategoryController","excludedVendors":[],"hash":"ff810c7f3497a6c45a2a4f095c8951cc"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/service-contracts/ServiceSubscriberInterface.php":null,"/var/www/html/backend/src/Controller/Api/TaskController.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Controller/AbstractController.php":null},"className":"App\\Controller\\Api\\TaskController","excludedVendors":[],"hash":"b64564fb7f405a1ec39c9f7c25005e54"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/service-contracts/ServiceSubscriberInterface.php":null,"/var/www/html/backend/src/Controller/Api/TaskSchemaController.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Controller/AbstractController.php":null},"className":"App\\Controller\\Api\\TaskSchemaController","excludedVendors":[],"hash":"452a43ea95395c01eb30782451939664"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/http-kernel/HttpKernelInterface.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/TerminableInterface.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/RebootableInterface.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/KernelInterface.php":null,"/var/www/html/backend/src/Kernel.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Kernel/MicroKernelTrait.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/Kernel.php":null},"className":"App\\Kernel","excludedVendors":[],"hash":"e99ca94924fc07b15a24e4777153ceff"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/src/Kernel.php"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/vendor/symfony/http-kernel/Kernel.php"},{"@type":"Symfony\\Component\\DependencyInjection\\Config\\ContainerParametersResource","parameters":[]},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/var/cache/dev/App_KernelDevDebugContainer.php"}]} {"resources":[{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/config/routes/framework.yaml"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/vendor/symfony/framework-bundle/Resources/config/routing/errors.php"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/config/routes.yaml"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/service-contracts/ServiceSubscriberInterface.php":null,"/var/www/html/backend/src/Controller/Api/CategoryController.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Controller/AbstractController.php":null},"className":"App\\Controller\\Api\\CategoryController","excludedVendors":[],"hash":"ff810c7f3497a6c45a2a4f095c8951cc"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/service-contracts/ServiceSubscriberInterface.php":null,"/var/www/html/backend/src/Controller/Api/TaskController.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Controller/AbstractController.php":null},"className":"App\\Controller\\Api\\TaskController","excludedVendors":[],"hash":"f427358a49f37ce4ee9ead1099f3900b"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/service-contracts/ServiceSubscriberInterface.php":null,"/var/www/html/backend/src/Controller/Api/TaskSchemaController.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Controller/AbstractController.php":null},"className":"App\\Controller\\Api\\TaskSchemaController","excludedVendors":[],"hash":"452a43ea95395c01eb30782451939664"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/http-kernel/HttpKernelInterface.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/TerminableInterface.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/RebootableInterface.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/KernelInterface.php":null,"/var/www/html/backend/src/Kernel.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Kernel/MicroKernelTrait.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/Kernel.php":null},"className":"App\\Kernel","excludedVendors":[],"hash":"e99ca94924fc07b15a24e4777153ceff"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/src/Kernel.php"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/vendor/symfony/http-kernel/Kernel.php"},{"@type":"Symfony\\Component\\DependencyInjection\\Config\\ContainerParametersResource","parameters":[]},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/var/cache/dev/App_KernelDevDebugContainer.php"}]}

View File

@@ -1 +1 @@
{"resources":[{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/config/routes/framework.yaml"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/vendor/symfony/framework-bundle/Resources/config/routing/errors.php"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/config/routes.yaml"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/service-contracts/ServiceSubscriberInterface.php":null,"/var/www/html/backend/src/Controller/Api/CategoryController.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Controller/AbstractController.php":null},"className":"App\\Controller\\Api\\CategoryController","excludedVendors":[],"hash":"ff810c7f3497a6c45a2a4f095c8951cc"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/service-contracts/ServiceSubscriberInterface.php":null,"/var/www/html/backend/src/Controller/Api/TaskController.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Controller/AbstractController.php":null},"className":"App\\Controller\\Api\\TaskController","excludedVendors":[],"hash":"b64564fb7f405a1ec39c9f7c25005e54"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/service-contracts/ServiceSubscriberInterface.php":null,"/var/www/html/backend/src/Controller/Api/TaskSchemaController.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Controller/AbstractController.php":null},"className":"App\\Controller\\Api\\TaskSchemaController","excludedVendors":[],"hash":"452a43ea95395c01eb30782451939664"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/http-kernel/HttpKernelInterface.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/TerminableInterface.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/RebootableInterface.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/KernelInterface.php":null,"/var/www/html/backend/src/Kernel.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Kernel/MicroKernelTrait.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/Kernel.php":null},"className":"App\\Kernel","excludedVendors":[],"hash":"e99ca94924fc07b15a24e4777153ceff"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/src/Kernel.php"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/vendor/symfony/http-kernel/Kernel.php"},{"@type":"Symfony\\Component\\DependencyInjection\\Config\\ContainerParametersResource","parameters":[]},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/var/cache/dev/App_KernelDevDebugContainer.php"}]} {"resources":[{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/config/routes/framework.yaml"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/vendor/symfony/framework-bundle/Resources/config/routing/errors.php"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/config/routes.yaml"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/service-contracts/ServiceSubscriberInterface.php":null,"/var/www/html/backend/src/Controller/Api/CategoryController.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Controller/AbstractController.php":null},"className":"App\\Controller\\Api\\CategoryController","excludedVendors":[],"hash":"ff810c7f3497a6c45a2a4f095c8951cc"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/service-contracts/ServiceSubscriberInterface.php":null,"/var/www/html/backend/src/Controller/Api/TaskController.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Controller/AbstractController.php":null},"className":"App\\Controller\\Api\\TaskController","excludedVendors":[],"hash":"f427358a49f37ce4ee9ead1099f3900b"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/service-contracts/ServiceSubscriberInterface.php":null,"/var/www/html/backend/src/Controller/Api/TaskSchemaController.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Controller/AbstractController.php":null},"className":"App\\Controller\\Api\\TaskSchemaController","excludedVendors":[],"hash":"452a43ea95395c01eb30782451939664"},{"@type":"Symfony\\Component\\Config\\Resource\\ReflectionClassResource","files":{"/var/www/html/backend/vendor/symfony/http-kernel/HttpKernelInterface.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/TerminableInterface.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/RebootableInterface.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/KernelInterface.php":null,"/var/www/html/backend/src/Kernel.php":null,"/var/www/html/backend/vendor/symfony/framework-bundle/Kernel/MicroKernelTrait.php":null,"/var/www/html/backend/vendor/symfony/http-kernel/Kernel.php":null},"className":"App\\Kernel","excludedVendors":[],"hash":"e99ca94924fc07b15a24e4777153ceff"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/src/Kernel.php"},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/vendor/symfony/http-kernel/Kernel.php"},{"@type":"Symfony\\Component\\DependencyInjection\\Config\\ContainerParametersResource","parameters":[]},{"@type":"Symfony\\Component\\Config\\Resource\\FileResource","resource":"/var/www/html/backend/var/cache/dev/App_KernelDevDebugContainer.php"}]}