Есть ли способ сделать это в Grails? - PullRequest
0 голосов
/ 18 февраля 2012

Считайте, что у меня есть Task класс, подобный этому:

class Task {
     String title
     Date   assignedOn
     User user
}

Теперь у user может быть много tasks. Теперь рассмотрим, что 8 tasks уже присвоено userX. Теперь manager (особый вид user) создает 2 задачи для этого userX, теперь у меня полностью 10 задач из userX. Для этого пользователя легко отобразить все 10 tasks.

Но я хочу, чтобы мне нужен был способ отображать только эти 2 tasks для этого userX, предполагая, что userX уже просмотрел эти 8 tasks.

Примером из реальной жизни был бы сам сайт Stackoverflow. Если человек отвечает на мой вопрос, я получаю уведомление с указанием 1 new answer on the q....., и я его посмотрю. Через некоторое время, если кто-нибудь ответит на тот же вопрос, я получу уведомление с указанием 1 new answer, а не 2 new answer, поскольку я уже просмотрел первый ответ.

Какими способами я могу использовать это? Есть ли плагины для этого в Grails?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 18 февраля 2012

В принципе, я бы добавил логический флаг в классе Task, чтобы указать, был ли он просмотрен пользователем или нет, например:

class Task {
  String title
  Date dateAssigned
  boolean viewStatus  // true indicates a read task

  static belongsTo = [assignedTo: User, assignedBy: User]
}

При создании задачи флаг viewStatus будет установлен в значение false. Всякий раз, когда пользователь просматривает конкретную задачу, ваша программа установит флаг viewStatus в значение true. Следовательно, можно запросить только непрочитанные задачи для отображения вашему пользователю (используя GORM) следующим образом:

def currentUser = // your currently logged in user
Task.findTaskByViewStatusAndAssignedTo(false, currentUser)

Запрос вернет только любые пользовательские задачи, которые не были прочитаны пользователем, при условии, что readStatus правильно установлен всякий раз, когда пользователь читает задачу.

1 голос
/ 18 февраля 2012

Это не имеет ничего общего с плагином, но ваш дизайн класса Task.Не зная больше о ваших требованиях, вы можете сделать что-то вроде этого:

class Task {
    String title
    Date assignedOn
    User user
    Boolean isAssignedByManager
}

Я добавил User user, потому что вы должны быть в состоянии сказать, кому было поручено задание (не знаю, как вызанимаюсь этим на данный момент).Затем просто установите isAssignedByManager на true, когда менеджер назначает задачу, чтобы вы могли выполнить ее поиск позже:

Task.findByUserAndIsAssignedByManager(userInstance, true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...