diff --git a/appinfo/controller/SettingsController.php b/appinfo/controller/SettingsController.php new file mode 100644 index 0000000..e69de29 diff --git a/appinfo/info.xml b/appinfo/info.xml index c7b055f..942bb53 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -11,4 +11,4 @@ workflow deck - + \ No newline at end of file diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 3b42e54..24679e9 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -17,7 +17,8 @@ class Application extends App { return new SettingsController( $c->query('OCP\IRequest'), $c->query('OCP\IUserSession'), - $c->query('OCA\Deckflow\Service\WorkflowService') + $c->query('OCA\Deckflow\Service\WorkflowService'), + $c->query('OCP\IDBConnection') ); }); diff --git a/lib/AppInfo/DB/migration.php b/lib/AppInfo/DB/migration.php new file mode 100644 index 0000000..e0a3a85 --- /dev/null +++ b/lib/AppInfo/DB/migration.php @@ -0,0 +1,21 @@ +query("CREATE TABLE IF NOT EXISTS *PREFIX*deckflow_workflows ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id TEXT NOT NULL, + deck_id TEXT NOT NULL, + source_stack_id TEXT NOT NULL, + target_stack_id TEXT NOT NULL + )"); + } +} diff --git a/lib/Service/WorkflowService.php b/lib/Service/WorkflowService.php index 0def7d2..83bff0b 100644 --- a/lib/Service/WorkflowService.php +++ b/lib/Service/WorkflowService.php @@ -4,32 +4,51 @@ namespace OCA\Deckflow\Service; use OCP\IUserSession; use OCA\Deck\Service\DeckService; use OCP\ILogger; +use OCA\Deckflow\DB\Migration; class WorkflowService { private $userSession; private $deckService; private $logger; + private $db; - public function __construct(IUserSession $userSession, DeckService $deckService, ILogger $logger) { + public function __construct(IUserSession $userSession, DeckService $deckService, ILogger $logger, \OCP\IDBConnection $db) { $this->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; } - // Hole alle Decks für den User - $decks = $this->deckService->getDecksByUser($user->getUID()); + $workflows = $this->getUserWorkflows(); - foreach ($decks as $deck) { - // Hole die Quell- und Zielstapel - $sourceStack = $deck->getStackById('sourceStackId'); // Ersetze durch die Konfiguration - $targetStack = $deck->getStackById('targetStackId'); // Ersetze durch die Konfiguration + 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) {