Reputation: 43
As per the below Domain Classes
VisitSchedules{
Visit visit
static hasMany = [users: User]
...
}
Visit{
DateTime startTime
...
}
I want to query VisitSchedules for visits that are scheduled for a future date for the user. something like below
def upcomingVisitSchedules = VisitSchedules.findAll {
visit.startTime >= new DateTime() && users.contains(user)//How do I query if the users list contains the current user?
}
Upvotes: 1
Views: 1464
Reputation: 353
and... Construction VisitSchedules.findAll, VisitSchedules.where and VisitSchedules.withCriteria are not self-sufficient and not reliable. Always use construction VisitSchedules.createCriteria().
class VisitScheduleService {
def springSecurityService
void run{
SecUser currentUser = springSecurityService.currentUser
def upcomingVisitSchedules = VisitSchedules.createCriteria().list() {
and {
visit {
le('startTime', new DateTime())
}
eq('user', currentUser)
}
}
}
}
Upvotes: 1
Reputation: 353
class VisitScheduleService {
def springSecurityService
void run{
SecUser currentUser = springSecurityService.currentUser
def upcomingVisits = VisitScheduleNotification.createCriteria().list(){
and{
visit{
ge('startTime', new DateTime())
}
'in'('users', [currentUser])
}
}
}
}
Upvotes: 0
Reputation: 43
thanks for your response it helped a lot, here is how it looks now.
class VisitScheduleService {
def springSecurityService
void run{
SecUser currentUser = springSecurityService.currentUser
def upcomingVisits = VisitScheduleNotification.createCriteria().list(){
and{
visit{
ge('startTime', new DateTime())
}
users{
eq('id', user.id)
}
}
}
}
}
I have one question though:
Question: I was trying out the 'in'("users",user)
criteria method to look for the user in the property static hasMany = [users: User]
def upcomingVisits = VisitScheduleNotification.createCriteria().list(){
and{
visit{
ge('startTime', new DateTime())
}
'in'('users', user)
}
}
but couldn't achieve what I needed?
Upvotes: 0
Reputation: 353
class VisitScheduleService {
def springSecurityService
void run{
SecUser currentUser = springSecurityService.currentUser
def upcomingVisitSchedules = VisitSchedules.findAll {
visit.startTime >= new DateTime() && users.contains(currentUser)
}
}
}
Upvotes: 0