setName('dav:absence:set'); $this->addArgument( 'user-id', InputArgument::REQUIRED, 'User ID of the affected account' ); $this->addArgument( 'first-day', InputArgument::REQUIRED, 'Inclusive start day formatted as YYYY-MM-DD' ); $this->addArgument( 'last-day', InputArgument::REQUIRED, 'Inclusive end day formatted as YYYY-MM-DD' ); $this->addArgument( 'short-message', InputArgument::REQUIRED, 'Short message' ); $this->addArgument( 'message', InputArgument::REQUIRED, 'Message' ); $this->addArgument( 'replacement-user-id', InputArgument::OPTIONAL, 'Replacement user id' ); } public function execute(InputInterface $input, OutputInterface $output): int { $userId = $input->getArgument('user-id'); $user = $this->userManager->get($userId); if ($user === null) { $output->writeln('User not found'); return 1; } $replacementUserId = $input->getArgument('replacement-user-id'); if ($replacementUserId === null) { $replacementUser = null; } else { $replacementUser = $this->userManager->get($replacementUserId); if ($replacementUser === null) { $output->writeln('Replacement user not found'); return 2; } } $this->absenceService->createOrUpdateAbsence( $user, $input->getArgument('first-day'), $input->getArgument('last-day'), $input->getArgument('short-message'), $input->getArgument('message'), $replacementUser?->getUID(), $replacementUser?->getDisplayName(), ); return 0; } }