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

Last change on this file since 147 was 147, checked in by gav, 14 years ago

Re-install class-diagram from local svn build with patch to allow war deployment.
Class-diagram overrides removed from Config.groovy since these have all been included upstream.
Tidy comments in SecurityConfig?.groovy
Some work on adding assignedPerson work flow and PersonController?.
Add navAlt and filterPane search to Person and TaskProcedure?.

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