mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
fix: create only if file exists
Signed-off-by: Christopher Ng <chrng8@gmail.com>
This commit is contained in:
parent
777a791e72
commit
d31302e72c
2 changed files with 11 additions and 0 deletions
|
|
@ -30,6 +30,7 @@ use DateTime;
|
|||
use DateTimeInterface;
|
||||
use DateTimeZone;
|
||||
use Exception;
|
||||
use OCA\FilesReminders\Exception\NodeNotFoundException;
|
||||
use OCA\FilesReminders\Service\ReminderService;
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\AppFramework\Http;
|
||||
|
|
@ -95,6 +96,8 @@ class ApiController extends OCSController {
|
|||
try {
|
||||
$this->reminderService->createOrUpdate($user, $fileId, $dueDate);
|
||||
return new JSONResponse([], Http::STATUS_OK);
|
||||
} catch (NodeNotFoundException $e) {
|
||||
return new JSONResponse([], Http::STATUS_NOT_FOUND);
|
||||
} catch (Throwable $th) {
|
||||
$this->logger->error($th->getMessage(), ['exception' => $th]);
|
||||
return new JSONResponse([], Http::STATUS_INTERNAL_SERVER_ERROR);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ use DateTimeZone;
|
|||
use OCA\FilesReminders\AppInfo\Application;
|
||||
use OCA\FilesReminders\Db\Reminder;
|
||||
use OCA\FilesReminders\Db\ReminderMapper;
|
||||
use OCA\FilesReminders\Exception\NodeNotFoundException;
|
||||
use OCA\FilesReminders\Exception\UserNotFoundException;
|
||||
use OCA\FilesReminders\Model\RichReminder;
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
|
|
@ -78,6 +79,9 @@ class ReminderService {
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws NodeNotFoundException
|
||||
*/
|
||||
public function createOrUpdate(IUser $user, int $fileId, DateTime $dueDate): void {
|
||||
$now = new DateTime('now', new DateTimeZone('UTC'));
|
||||
try {
|
||||
|
|
@ -86,6 +90,10 @@ class ReminderService {
|
|||
$reminder->setUpdatedAt($now);
|
||||
$this->reminderMapper->update($reminder);
|
||||
} catch (DoesNotExistException $e) {
|
||||
$nodes = $this->root->getUserFolder($user->getUID())->getById($fileId);
|
||||
if (empty($nodes)) {
|
||||
throw new NodeNotFoundException();
|
||||
}
|
||||
// Create new reminder if no reminder is found
|
||||
$reminder = new Reminder();
|
||||
$reminder->setUserId($user->getUID());
|
||||
|
|
|
|||
Loading…
Reference in a new issue