Index: trunk/grails-app/controllers/TaskDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskDetailedController.groovy	(revision 139)
+++ trunk/grails-app/controllers/TaskDetailedController.groovy	(revision 140)
@@ -3,42 +3,178 @@
 class TaskDetailedController extends BaseController {
 
-    def index = { 
-        println "index called"
-        redirect(action:search,params:params) 
-    }
+    def authenticateService
+    def dateUtilService
+    def filterService
 
     // the delete, save and update actions only accept POST requests
     static allowedMethods = [delete:'POST', save:'POST', update:'POST']
 
+    def index = { redirect(action:search,params:params) }
+
     def list = {
         params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
         [ taskInstanceList: Task.list( params ), taskInstanceTotal: Task.count() ]
     }
-
+    
     def search = {
         params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
         
-        if(!params.order) {
-            params.sort = "id"
-            params.order = "desc"
-        }
-        
-        if(params.search == "ShowAll")
-        {
+        if(!params._action_search)
+        {
+            // Default:
             def taskInstanceActivesList = Task.findAllByIsActive(true, params)
             def taskInstanceActivesTotal = Task.countByIsActive(true)
             return [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
         }
-        if(params.search == "ShowDeleted")
-        {
-            def taskInstanceActivesList = Task.findAllByIsActive(false, params)
-            def taskInstanceActivesTotal = Task.countByIsActive(false)
+        render( view:'search', 
+            model:[ taskInstanceList: filterService.filter( params, Task ), 
+            taskInstanceTotal: filterService.count( params, Task ), 
+            filterParams: com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params), 
+            params:params ] )
+    }
+    
+    def advancedSearch = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+
+        if(!params._action_advancedSearch)
+        {
+            // Default:
+            def taskInstanceActivesList = Task.findAllByIsActive(true, params)
+            def taskInstanceActivesTotal = Task.countByIsActive(true)
             return [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
         }
-        // Default:
-        def taskInstanceActivesList = Task.findAllByIsActive(true, params)
-        def taskInstanceActivesTotal = Task.countByIsActive(true)
-        [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
-    }
+        render( view:'advancedSearch', 
+            model:[ taskInstanceList: filterService.filter( params, Task ), 
+            taskInstanceTotal: filterService.count( params, Task ), 
+            filterParams: com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params), 
+            params:params ] )
+    }
+    
+    def searchTodays = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+            
+        def taskInstanceList = Task.createCriteria().list() {
+                eq("targetStartDate", dateUtilService.getToday())
+                eq("isActive", true)
+        }
+            
+        def taskInstanceTotal = Task.createCriteria().count() {
+                eq("targetStartDate", dateUtilService.getToday())
+                eq("isActive", true)
+        }
+        
+        if(taskInstanceTotal > 0)
+        {
+            flash.message = "Today's tasks"
+        }
+        else { flash.message = "No tasks found for today" }
+        
+        render( view:'search', 
+            model:[ taskInstanceList: taskInstanceList, 
+            taskInstanceTotal: taskInstanceTotal])
+    }
+    
+    def searchMyTodays = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+            
+        def taskInstanceList = Task.createCriteria().list() {
+                eq("leadPerson", Person.get(authenticateService.userDomain().id))
+                ge("targetStartDate", dateUtilService.getToday())
+                eq("isActive", true)
+        }
+            
+        def taskInstanceTotal = Task.createCriteria().count() {
+                eq("leadPerson", Person.get(authenticateService.userDomain().id))
+                ge("targetStartDate", dateUtilService.getToday())
+                eq("isActive", true)
+        }
+        
+        if(taskInstanceTotal > 0)
+        {
+            flash.message = "Today's tasks"
+        }
+        else { flash.message = "No tasks found for today" }
+        
+        render( view:'search', 
+            model:[ taskInstanceList: taskInstanceList, 
+            taskInstanceTotal: taskInstanceTotal])
+    }
+    
+    def searchInTheLastWeek = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+            
+        def taskInstanceList = Task.createCriteria().list() {
+                ge("targetStartDate", dateUtilService.getToday()-7)
+                eq("isActive", true)
+        }
+            
+        def taskInstanceTotal = Task.createCriteria().count() {
+                ge("targetStartDate", dateUtilService.getToday()-7)
+                eq("isActive", true)
+        }
+        
+        if(taskInstanceTotal > 0)
+        {
+            flash.message = "Tasks with target start date in the last week."
+        }
+        
+        else {flash.message = "No tasks found with target start date in the last week." }
+        
+        render( view:'search', 
+            model:[ taskInstanceList: taskInstanceList, 
+            taskInstanceTotal: taskInstanceTotal])
+    }
+    
+    def searchMyInTheLastWeek = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+            
+        def taskInstanceList = Task.createCriteria().list() {
+                eq("leadPerson", Person.get(authenticateService.userDomain().id))
+                ge("targetStartDate", dateUtilService.getToday()-7)
+                eq("isActive", true)
+        }
+            
+        def taskInstanceTotal = Task.createCriteria().count() {
+                eq("leadPerson", Person.get(authenticateService.userDomain().id))
+                ge("targetStartDate", dateUtilService.getToday()-7)
+                eq("isActive", true)
+        }
+        
+        if(taskInstanceTotal > 0)
+        {
+            flash.message = "Tasks with target start date in the last week."
+        }
+        else { flash.message = "No tasks found with target start date in the last week." }
+        
+        render( view:'search', 
+            model:[ taskInstanceList: taskInstanceList, 
+            taskInstanceTotal: taskInstanceTotal])
+    }
+
+//     def search = {
+//         params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+//         
+//         if(!params.order) {
+//             params.sort = "id"
+//             params.order = "desc"
+//         }
+//         
+//         if(params.search == "ShowAll")
+//         {
+//             def taskInstanceActivesList = Task.findAllByIsActive(true, params)
+//             def taskInstanceActivesTotal = Task.countByIsActive(true)
+//             return [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
+//         }
+//         if(params.search == "ShowDeleted")
+//         {
+//             def taskInstanceActivesList = Task.findAllByIsActive(false, params)
+//             def taskInstanceActivesTotal = Task.countByIsActive(false)
+//             return [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
+//         }
+//         // Default:
+//         def taskInstanceActivesList = Task.findAllByIsActive(true, params)
+//         def taskInstanceActivesTotal = Task.countByIsActive(true)
+//         [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
+//     }
     
     def searchShowAll = {
