userSession = $userSession; $this->deckService = $deckService; $this->logger = $logger; $this->db = $db; } /** * Holt alle Workflows des aktuellen Benutzers * @return array */ private function getUserWorkflows() { $user = $this->userSession->getUser(); $userId = $user ? $user->getUID() : null; // Hole alle Workflow-Konfigurationen des Benutzers aus der DB $result = $this->db->executeQuery("SELECT * FROM *PREFIX*deckflow_workflows WHERE user_id = ?", [$userId]); return $result->fetchAll(); } /** * Verschiebt überfällige Karten für alle Workflows */ public function moveOverdueCards() { $user = $this->userSession->getUser(); if ($user === null) { return; } $workflows = $this->getUserWorkflows(); foreach ($workflows as $workflow) { // Hole das Deck und die Stacks aus der Konfiguration $deck = $this->deckService->getDeckById($workflow['deck_id']); $sourceStack = $deck->getStackById($workflow['source_stack_id']); $targetStack = $deck->getStackById($workflow['target_stack_id']); // Überprüfe alle Karten im Quellstapel auf Überfälligkeit foreach ($sourceStack->getCards() as $card) { if ($this->isCardOverdue($card)) { $this->moveCardToTargetStack($card, $targetStack); } } } } private function isCardOverdue($card) { $dueDate = $card->getDueDate(); return $dueDate && $dueDate < time(); } private function moveCardToTargetStack($card, $targetStack) { $this->deckService->moveCardToStack($card, $targetStack); $this->logger->info("Card moved to target stack."); } }