source: trunk/grails-app/controllers/TaskDetailedController.groovy @ 140

Last change on this file since 140 was 140, checked in by gav, 15 years ago

Install filterPane plugin and configure for Tasks.

File size: 13.0 KB
Line 
1import org.codehaus.groovy.grails.plugins.springsecurity.Secured
2
3class TaskDetailedController extends BaseController {
4
5    def authenticateService
6    def dateUtilService
7    def filterService
8
9    // the delete, save and update actions only accept POST requests
10    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
11
12    def index = { redirect(action:search,params:params) }
13
14    def list = {
15        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
16        [ taskInstanceList: Task.list( params ), taskInstanceTotal: Task.count() ]
17    }
18   
19    def search = {
20        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
21       
22        if(!params._action_search)
23        {
24            // Default:
25            def taskInstanceActivesList = Task.findAllByIsActive(true, params)
26            def taskInstanceActivesTotal = Task.countByIsActive(true)
27            return [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
28        }
29        render( view:'search', 
30            model:[ taskInstanceList: filterService.filter( params, Task ), 
31            taskInstanceTotal: filterService.count( params, Task ), 
32            filterParams: com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params), 
33            params:params ] )
34    }
35   
36    def advancedSearch = {
37        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
38
39        if(!params._action_advancedSearch)
40        {
41            // Default:
42            def taskInstanceActivesList = Task.findAllByIsActive(true, params)
43            def taskInstanceActivesTotal = Task.countByIsActive(true)
44            return [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
45        }
46        render( view:'advancedSearch', 
47            model:[ taskInstanceList: filterService.filter( params, Task ), 
48            taskInstanceTotal: filterService.count( params, Task ), 
49            filterParams: com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params), 
50            params:params ] )
51    }
52   
53    def searchTodays = {
54        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
55           
56        def taskInstanceList = Task.createCriteria().list() {
57                eq("targetStartDate", dateUtilService.getToday())
58                eq("isActive", true)
59        }
60           
61        def taskInstanceTotal = Task.createCriteria().count() {
62                eq("targetStartDate", dateUtilService.getToday())
63                eq("isActive", true)
64        }
65       
66        if(taskInstanceTotal > 0)
67        {
68            flash.message = "Today's tasks"
69        }
70        else { flash.message = "No tasks found for today" }
71       
72        render( view:'search', 
73            model:[ taskInstanceList: taskInstanceList, 
74            taskInstanceTotal: taskInstanceTotal])
75    }
76   
77    def searchMyTodays = {
78        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
79           
80        def taskInstanceList = Task.createCriteria().list() {
81                eq("leadPerson", Person.get(authenticateService.userDomain().id))
82                ge("targetStartDate", dateUtilService.getToday())
83                eq("isActive", true)
84        }
85           
86        def taskInstanceTotal = Task.createCriteria().count() {
87                eq("leadPerson", Person.get(authenticateService.userDomain().id))
88                ge("targetStartDate", dateUtilService.getToday())
89                eq("isActive", true)
90        }
91       
92        if(taskInstanceTotal > 0)
93        {
94            flash.message = "Today's tasks"
95        }
96        else { flash.message = "No tasks found for today" }
97       
98        render( view:'search', 
99            model:[ taskInstanceList: taskInstanceList, 
100            taskInstanceTotal: taskInstanceTotal])
101    }
102   
103    def searchInTheLastWeek = {
104        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
105           
106        def taskInstanceList = Task.createCriteria().list() {
107                ge("targetStartDate", dateUtilService.getToday()-7)
108                eq("isActive", true)
109        }
110           
111        def taskInstanceTotal = Task.createCriteria().count() {
112                ge("targetStartDate", dateUtilService.getToday()-7)
113                eq("isActive", true)
114        }
115       
116        if(taskInstanceTotal > 0)
117        {
118            flash.message = "Tasks with target start date in the last week."
119        }
120       
121        else {flash.message = "No tasks found with target start date in the last week." }
122       
123        render( view:'search', 
124            model:[ taskInstanceList: taskInstanceList, 
125            taskInstanceTotal: taskInstanceTotal])
126    }
127   
128    def searchMyInTheLastWeek = {
129        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
130           
131        def taskInstanceList = Task.createCriteria().list() {
132                eq("leadPerson", Person.get(authenticateService.userDomain().id))
133                ge("targetStartDate", dateUtilService.getToday()-7)
134                eq("isActive", true)
135        }
136           
137        def taskInstanceTotal = Task.createCriteria().count() {
138                eq("leadPerson", Person.get(authenticateService.userDomain().id))
139                ge("targetStartDate", dateUtilService.getToday()-7)
140                eq("isActive", true)
141        }
142       
143        if(taskInstanceTotal > 0)
144        {
145            flash.message = "Tasks with target start date in the last week."
146        }
147        else { flash.message = "No tasks found with target start date in the last week." }
148       
149        render( view:'search', 
150            model:[ taskInstanceList: taskInstanceList, 
151            taskInstanceTotal: taskInstanceTotal])
152    }
153
154//     def search = {
155//         params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
156//         
157//         if(!params.order) {
158//             params.sort = "id"
159//             params.order = "desc"
160//         }
161//         
162//         if(params.search == "ShowAll")
163//         {
164//             def taskInstanceActivesList = Task.findAllByIsActive(true, params)
165//             def taskInstanceActivesTotal = Task.countByIsActive(true)
166//             return [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
167//         }
168//         if(params.search == "ShowDeleted")
169//         {
170//             def taskInstanceActivesList = Task.findAllByIsActive(false, params)
171//             def taskInstanceActivesTotal = Task.countByIsActive(false)
172//             return [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
173//         }
174//         // Default:
175//         def taskInstanceActivesList = Task.findAllByIsActive(true, params)
176//         def taskInstanceActivesTotal = Task.countByIsActive(true)
177//         [taskInstanceList: taskInstanceActivesList, taskInstanceTotal: taskInstanceActivesTotal]
178//     }
179   
180    def searchShowAll = {
181        redirect(action:'search', params:[search:"ShowAll"])
182    }
183   
184    def searchShowDeleted = {
185        redirect(action:'search', params:[search:"ShowDeleted"])
186    }
187
188    def show = {
189       
190        // In the case of an actionSubmit button, rewrite action name from 'index'.
191        if(params._action_Show)
192        { params.action='show' }
193
194        def taskInstance = Task.get( params.id )
195
196        if(!taskInstance) {
197            flash.message = "Task not found with id ${params.id}"
198            redirect(action:search)
199        }
200        else {
201                        params.max = 10
202                        params.order = "desc"
203                        params.sort = "id"
204                       
205                        def entryWorkDoneList = Entry.withCriteria {
206                                                                                                                                def entryType = EntryType.findByName("WorkDone")
207                                                                                                                                eq("entryType", entryType)
208                                                                                                                                eq("task", taskInstance)
209                                                                                                                }
210                       
211                        def entryFaultList = Entry.withCriteria {
212                                                                                                                                def entryType = EntryType.findByName("Fault")
213                                                                                                                                eq("entryType", entryType)
214                                                                                                                                eq("task", taskInstance)
215                                                                                                                }
216
217                        def subTaskInstanceList = Task.findAllByParentTask(taskInstance, params)
218                        def subTaskInstanceTotal = Task.countByParentTask(taskInstance)                                 
219            def showTaskTab = new String("true")
220
221            def taskProcedureInstance = TaskProcedure.get(taskInstance.taskProcedure?.id)
222            def taskProcedureExits = new Boolean("true")
223            if(!taskProcedureInstance) {
224                taskProcedureExits = false
225            }
226//                      else {
227                                params.order = "asc"
228                                params.sort = "procedureStepNumber"
229                                def maintenanceActionList = MaintenanceAction.findAllByTaskProcedure(taskProcedureInstance, params)
230//                      }
231                                               
232            def taskRecurringScheduleInstance = TaskRecurringSchedule.get(taskInstance.taskRecurringSchedule?.id)
233            def taskRecurringScheduleExits= new Boolean("true")
234                        if(!taskRecurringScheduleInstance) {
235                taskRecurringScheduleExits = false
236            }
237                       
238            return [ taskInstance: taskInstance,
239                                                        entryWorkDoneList: entryWorkDoneList,
240                                                        entryFaultList: entryFaultList,
241                            taskProcedureInstance: taskProcedureInstance,
242                            taskProcedureExits: taskProcedureExits,
243                            showTaskTab: showTaskTab,
244                                                        subTaskInstanceList: subTaskInstanceList,
245                                                        subTaskInstanceTotal: subTaskInstanceTotal,
246                                                        subTaskInstanceMax: params.max,
247                                                        maintenanceActionList: maintenanceActionList,
248                                                        taskRecurringScheduleInstance: taskRecurringScheduleInstance,
249                                                        taskRecurringScheduleExits: taskRecurringScheduleExits] 
250        }
251    }
252
253    def delete = {
254        def taskInstance = Task.get( params.id )
255        if(taskInstance) {
256            try {
257                taskInstance.isActive = false
258                flash.message = "Task ${params.id} has been set to inactive."
259                redirect(action:search)
260            }
261            catch(org.springframework.dao.DataIntegrityViolationException e) {
262                flash.message = "Task ${params.id} could not be deleted"
263                redirect(action:show,id:params.id)
264            }
265        }
266        else {
267            flash.message = "Task not found with id ${params.id}"
268            redirect(action:search)
269        }
270    }
271
272    def edit = {
273       
274        // In the case of an actionSubmit button, rewrite action name from 'index'.
275        if(params._action_Edit)
276        { params.action='edit' }
277       
278        def taskInstance = Task.get( params.id )
279
280        if(!taskInstance) {
281            flash.message = "Task not found with id ${params.id}"
282            redirect(action:search)
283        }
284        else {
285            def criteria = taskInstance.createCriteria()
286            def results = criteria {
287                and {
288                    notEqual('id', taskInstance.id)
289                    }
290            }
291            return [ taskInstance : taskInstance, possibleParentList: results ]
292        }
293    }
294
295    def update = {
296        def taskInstance = Task.get( params.id )
297        if(taskInstance) {
298            if(params.version) {
299                def version = params.version.toLong()
300                if(taskInstance.version > version) {
301                   
302                    taskInstance.errors.rejectValue("version", "task.optimistic.locking.failure", "Another user has updated this Task while you were editing.")
303                    render(view:'edit',model:[taskInstance:taskInstance])
304                    return
305                }
306            }
307            taskInstance.properties = params
308            if(!taskInstance.hasErrors() && taskInstance.save()) {
309                flash.message = "Task ${params.id} updated"
310                redirect(action:show,id:taskInstance.id)
311            }
312            else {
313                render(view:'edit',model:[taskInstance:taskInstance])
314            }
315        }
316        else {
317            flash.message = "Task not found with id ${params.id}"
318            redirect(action:edit,id:params.id)
319        }
320    }
321
322    def create = {
323        def taskInstance = new Task()
324        taskInstance.properties = params
325        return ['taskInstance':taskInstance]
326    }
327
328    def save = {
329        def taskInstance = new Task(params)
330        if(!taskInstance.hasErrors() && taskInstance.save()) {
331            flash.message = "Task ${taskInstance.id} created"
332            redirect(action:show,id:taskInstance.id)
333        }
334        else {
335            render(view:'create',model:[taskInstance:taskInstance])
336        }
337    }
338       
339        def listSubTasks = {
340                def parentTaskInstance = Task.get(params.id)
341                               
342        if(!parentTaskInstance) {
343            flash.message = "Task not found with id ${params.id}"
344            redirect(action:search)
345        }
346        else {
347                params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
348                def subTaskInstanceList = Task.findAllByParentTask(parentTaskInstance, params)
349                def subTaskInstanceTotal = Task.countByParentTask(parentTaskInstance)
350                               
351        [ taskInstanceList: subTaskInstanceList,
352                        taskInstanceTotal:  subTaskInstanceTotal,
353                        parentTaskInstance: parentTaskInstance]
354                }
355        }
356       
357}
Note: See TracBrowser for help on using the repository browser.