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

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

Busy adding TaskSearchService?.

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