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

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

Add attentionFlag to Task domain along with views and logic to suite.
Add entry type 'cause', refactor as required.
Refactor task types.
Move createBreakin to createImmediateCallout.

File size: 26.0 KB
RevLine 
[69]1import org.codehaus.groovy.grails.plugins.springsecurity.Secured
[165]2import org.codehaus.groovy.grails.commons.ConfigurationHolder
[209]3import com.zeddware.grails.plugins.filterpane.FilterUtils
[69]4
[298]5@Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager'])
[85]6class TaskDetailedController extends BaseController {
[66]7
[291]8    def authService
[180]9    def taskService
[143]10    def taskSearchService
[140]11    def filterService
[165]12    def exportService
[214]13    def dateUtilService
[139]14
[181]15    // these actions only accept POST requests
[418]16    static allowedMethods = [save:'POST',update:'POST',restore:'POST', trash:'POST',
17                                                approve:'POST', renegeApproval:'POST', complete:'POST',
18                                                reopen:'POST', setAttentionFlag:'POST', clearAttentionFlag:'POST']
[66]19
[298]20    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[196]21    def index = { redirect(action: 'search', params: params) }
[140]22
[298]23    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[326]24    def setSearchParamsMax = {
[262]25        def max = 1000
26        if(params.newMax.isInteger()) {
[260]27            def i = params.newMax.toInteger()
[262]28            if(i > 0 && i <= max)
29                session.taskSearchParamsMax = params.newMax
30            if(i > max)
31                session.taskSearchParamsMax = max
32        }
[260]33        forward(action: 'search', params: params)
34    }
35
[298]36    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[139]37    def search = {
[143]38
[260]39        if(session.taskSearchParamsMax)
40            params.max = session.taskSearchParamsMax
41
42        // TaskSearchService protects itself but filterPane does not.
[262]43        params.max = Math.min( params.max ? params.max.toInteger() : 10,  1000 )
[260]44
45        def taskInstanceList = []
46        def taskInstanceTotal
47        def filterParams = [:]
[291]48        def personInstance = authService.currentUser
[260]49
[155]50        // Quick Search:
[209]51        if(!FilterUtils.isFilterApplied(params)) {
[143]52
[155]53            if(params.quickSearch == "searchMyTodays") {
[144]54                taskInstanceList = taskSearchService.getMyTodays(params)
55                if(taskInstanceList.totalCount > 0) { params.message = "Today's tasks for ${personInstance.firstName} ${personInstance.lastName}." }
56                else { params.message = "No tasks found for today." }
57            }
[155]58            else if(params.quickSearch == "searchInTheLastWeek") {
[144]59                taskInstanceList = taskSearchService.getInTheLastWeek(params)
60                if(taskInstanceList.totalCount > 0) { params.message = "Tasks with Target Start Date in the last week." }
[185]61                else { params.message = "No tasks found for the last week." }
[144]62            }
[155]63            else if(params.quickSearch == "searchMyInTheLastWeek") {
[144]64                taskInstanceList = taskSearchService.getMyInTheLastWeek(params)
65                if(taskInstanceList.totalCount > 0) { params.message = "Tasks with Target Start Date in the last week for ${personInstance.firstName} ${personInstance.lastName}." }
[185]66                else { params.message = "No tasks found for the last week." }
[144]67            }
68            else {
69                //Default:
70                taskInstanceList = taskSearchService.getTodays(params)
71                if(taskInstanceList.totalCount > 0) { params.message = "Today's tasks." }
72                else { params.message = "No tasks found for today." }
[155]73                params.quickSearch = "searchTodays"
[144]74            }
[260]75
76            taskInstanceTotal = taskInstanceList.totalCount
77            filterParams.quickSearch = params.quickSearch
[139]78        }
[260]79        else {
80            // filterPane:
81            taskInstanceList = filterService.filter( params, Task )
82            taskInstanceTotal = filterService.count( params, Task )
83            filterParams = com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params)
84        }
[143]85
[260]86        // export plugin:
87        if(params?.format && params.format != "html") {
88
89            def dateFmt = { date ->
90                formatDate(format: "EEE, dd-MMM-yyyy", date: date)
91            }
92
93            String title
94            if(params.quickSearch)
95                title = "${params.quickSearch} tasks."
96            else
97                title = "Filtered tasks."
98
99            response.contentType = ConfigurationHolder.config.grails.mime.types[params.format]
[390]100            response.setHeader("Content-disposition", "attachment; filename=Tasks.${params.extension}")
[260]101            List fields = ["id", "targetStartDate", "description", "leadPerson", "taskPriority", "taskStatus"]
102            Map labels = ["id": "ID", "targetStartDate": "Target Start Date", "description": "Description",
103                                    "leadPerson": "Lead Person", "taskPriority": "Task Priority", "taskStatus": "Task Status"]
104            Map formatters = [ targetStartDate: dateFmt]
105            Map parameters = [title: title, separator: ","]
106
107            exportService.export(params.format, response.outputStream, taskInstanceList, fields, labels, formatters, parameters)
108        }
109
110        // Add some basic params to filterParams.
111        filterParams.max = params.max
112        filterParams.offset = params.offset?.toInteger() ?: 0
[418]113        filterParams.sort = params.sort ?: "attentionFlag"
[260]114        filterParams.order = params.order ?: "desc"
115
116        return[ taskInstanceList: taskInstanceList,
117                taskInstanceTotal: taskInstanceTotal,
118                filterParams: filterParams ]
119
120    } // end search()
121
[298]122    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[155]123    def searchCalendar = {
124        params.max = 30
[140]125
[155]126        // Quick Search:
[209]127        if(!FilterUtils.isFilterApplied(params)) {
[155]128            def taskInstanceList = []
[291]129            def personInstance = authService.currentUser
[155]130
131            if(params.quickSearch == "searchMyTodays") {
132                taskInstanceList = taskSearchService.getMyTodays(params)
133                if(taskInstanceList.totalCount > 0) { params.message = "Today's tasks for ${personInstance.firstName} ${personInstance.lastName}." }
134                else { params.message = "No tasks found for today." }
135                if(taskInstanceList.totalCount > params.max) { params.message = "Too many results, only the first ${params.max} shown" }
136            }
137            else if(params.quickSearch == "searchInTheLastWeek") {
138                taskInstanceList = taskSearchService.getInTheLastWeek(params)
139                if(taskInstanceList.totalCount > 0) { params.message = "Tasks with Target Start Date in the last week." }
[185]140                else { params.message = "No tasks found for the last week." }
[155]141                if(taskInstanceList.totalCount > params.max) { params.message = "Too many results, only the first ${params.max} shown" }
142            }
143            else if(params.quickSearch == "searchMyInTheLastWeek") {
144                taskInstanceList = taskSearchService.getMyInTheLastWeek(params)
145                if(taskInstanceList.totalCount > 0) { params.message = "Tasks with Target Start Date in the last week for ${personInstance.firstName} ${personInstance.lastName}." }
[185]146                else { params.message = "No tasks found for the last week." }
[155]147                if(taskInstanceList.totalCount > params.max) { params.message = "Too many results, only the first ${params.max} shown" }
148            }
149            else {
150                //Default:
151                taskInstanceList = taskSearchService.getTodays(params)
152                if(taskInstanceList.totalCount > 0) { params.message = "Today's tasks." }
153                else { params.message = "No tasks found for today." }
154                if(taskInstanceList.totalCount > params.max) { params.message = "Too many results, only the first ${params.max} shown" }
155                params.quickSearch = "searchTodays"
156            }
157            return[taskInstanceList: taskInstanceList, taskInstanceTotal: taskInstanceList.totalCount, filterParams: params]
[139]158        }
[155]159        // filterPane:
160        def taskInstanceTotal = filterService.count( params, Task )
161        if(taskInstanceTotal > params.max) { params.message = "Too many results, only the first ${params.max} shown" }
162        return[ taskInstanceList: filterService.filter( params, Task ),
163            taskInstanceTotal: taskInstanceTotal,
164            filterParams: com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params),
165            params:params ]
[139]166    }
[140]167
[298]168    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[165]169    def budget = {
170        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100 )
171
172        // Quick Search:
[209]173        if(!FilterUtils.isFilterApplied(params)) {
[165]174            def taskInstanceList = []
[291]175            def personInstance = authService.currentUser
[165]176
177            if(params.quickSearch == "budgetUnplanned") {
178                taskInstanceList = taskSearchService.getBudgetUnplanned(params)
179                if(taskInstanceList.totalCount > 0) { params.message = "Budget unplanned tasks in the last week." }
180                else { params.message = "No tasks found." }
181            }
182            //else if(params.quickSearch == "budgetPlanned") {
183            else {
184                //Default:
185                taskInstanceList = taskSearchService.getBudgetPlanned(params)
186                if(taskInstanceList.totalCount > 0) { params.message = "Budget planned Tasks in the last week." }
187                else { params.message = "No tasks found.." }
188            }
189            // export plugin:
190            if(params?.format && params.format != "html") {
[260]191
192                def dateFmt = { date ->
193                    formatDate(format: "EEE, dd-MMM-yyyy", date: date)
194                }
[165]195                response.contentType = ConfigurationHolder.config.grails.mime.types[params.format]
196                response.setHeader("Content-disposition", "attachment; filename=tasks.${params.extension}")
197                List fields = ["id", "targetStartDate", "description", "leadPerson", "taskStatus", "taskType"]
198                Map labels = ["id": "ID", "targetStartDate": "Target Start Date", "description": "Description",
199                                        "leadPerson": "Lead Person", "taskStatus": "Task Status", "taskType": "Task Type"]
[260]200                Map formatters = [ targetStartDate: dateFmt]
[165]201                String title = "${params.quickSearch} tasks in the last week."
[260]202                Map parameters = [title: title, separator: ","]
[165]203
204                exportService.export(params.format, response.outputStream, taskInstanceList, fields, labels, formatters, parameters) 
205            }
206            return[taskInstanceList: taskInstanceList, taskInstanceTotal: taskInstanceList.totalCount, filterParams: params]
207        }
208        // filterPane:
209        return[ taskInstanceList: filterService.filter( params, Task ),
210            taskInstanceTotal: filterService.count( params, Task ),
211            filterParams: com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params),
212            params:params ]
213    }
214
[298]215    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[66]216    def show = {
[147]217
[139]218        // In the case of an actionSubmit button, rewrite action name from 'index'.
219        if(params._action_Show)
[375]220            params.action='show'
[139]221
[225]222        def showTab = [:]
223        switch (params.showTab) {
224            case "showProcedureTab":
225                showTab.procedure =  new String("true")
226                break
227            case "showRecurrenceTab":
228                showTab.recurrence =  new String("true")
229                break
230            case "showInventoryTab":
231                showTab.inventory = new String("true")
232                break
233            case "showSubTasksTab":
234                showTab.subTasks = new String("true")
235                break
236            default:
237                showTab.task = new String("true")
238        }
239
[66]240        def taskInstance = Task.get( params.id )
241
242        if(!taskInstance) {
243            flash.message = "Task not found with id ${params.id}"
[196]244            redirect(action: 'search')
[66]245        }
[133]246        else {
[179]247            params.max = 10
248            params.order = "desc"
249            params.sort = "id"
[134]250
[418]251            def entryFaultList = Entry.withCriteria {
252                                                                eq("entryType", EntryType.get(1))
253                                                                eq("task", taskInstance)
254                                                        }
255
256            def entryCauseList = Entry.withCriteria {
[190]257                                                                eq("entryType", EntryType.get(2))
[179]258                                                                eq("task", taskInstance)
259                                                        }
260
[418]261            def entryWorkDoneList = Entry.withCriteria {
262                                                                eq("entryType", EntryType.get(3))
[179]263                                                                eq("task", taskInstance)
264                                                        }
265
[196]266            def subTaskInstanceList = Task.findAllByParentTaskAndTrash(taskInstance, false, params)
267            def subTaskInstanceTotal = Task.countByParentTaskAndTrash(taskInstance, false)
[134]268
[175]269            def inventoryMovementList = InventoryMovement.findAllByTask(taskInstance, [max:100, sort:"id", order:"desc", offset:0])
270
[180]271            def taskModificationList = TaskModification.findAllByTask(taskInstance, [max:100, sort:"id", order:"asc", offset:0])
272
[253]273            def assignedGroupList = taskInstance.assignedGroups.sort { p1, p2 -> p1.personGroup.name.compareToIgnoreCase(p2.personGroup.name) }
274            def assignedPersonList = taskInstance.assignedPersons.sort { p1, p2 -> p1.person.firstName.compareToIgnoreCase(p2.person.firstName) }
275
[133]276            def taskProcedureInstance = TaskProcedure.get(taskInstance.taskProcedure?.id)
277            def taskProcedureExits = new Boolean("true")
278            if(!taskProcedureInstance) {
279                taskProcedureExits = false
280            }
[175]281
282            params.order = "asc"
283            params.sort = "procedureStepNumber"
284            def maintenanceActionList = MaintenanceAction.findAllByTaskProcedure(taskProcedureInstance, params)
285
[134]286            def taskRecurringScheduleInstance = TaskRecurringSchedule.get(taskInstance.taskRecurringSchedule?.id)
287            def taskRecurringScheduleExits= new Boolean("true")
[175]288            if(!taskRecurringScheduleInstance) {
[134]289                taskRecurringScheduleExits = false
290            }
[179]291
[137]292            return [ taskInstance: taskInstance,
[418]293                            entryFaultList: entryFaultList,
294                            entryCauseList: entryCauseList,
[179]295                            entryWorkDoneList: entryWorkDoneList,
[133]296                            taskProcedureInstance: taskProcedureInstance,
297                            taskProcedureExits: taskProcedureExits,
[225]298                            showTab: showTab,
[179]299                            subTaskInstanceList: subTaskInstanceList,
300                            subTaskInstanceTotal: subTaskInstanceTotal,
301                            subTaskInstanceMax: params.max,
302                            maintenanceActionList: maintenanceActionList,
303                            taskRecurringScheduleInstance: taskRecurringScheduleInstance,
304                            taskRecurringScheduleExits: taskRecurringScheduleExits,
[180]305                            inventoryMovementList: inventoryMovementList,
[253]306                            taskModificationList: taskModificationList,
307                            assignedGroupList: assignedGroupList,
308                            assignedPersonList: assignedPersonList]
[131]309        }
[66]310    }
311
[418]312    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[181]313    def restore = {
314
315        def result = taskService.restore(params)
316
317        if(!result.error) {
318                flash.message = "Task ${params.id} has been restored."
[418]319                redirect(action: show, id: params.id)
320                return
[181]321        }
322
[418]323        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
324
325        if(result.taskInstance)
326            redirect(action: show, id: params.id)
327        else
328            redirect(action: 'search')
329
[181]330    }
331
[418]332    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[181]333    def trash = {
334
335        def result = taskService.trash(params)
336
337        if(!result.error) {
338                flash.message = "Task ${params.id} has been moved to trash."
[196]339                redirect(action: 'search')
[418]340                return
[181]341        }
342
[418]343        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
344
345        if(result.taskInstance)
346            redirect(action: show, id: params.id)
347        else
348            redirect(action: 'search')
349
[66]350    }
351
[418]352    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager'])
[181]353    def approve = {
354
355        def result = taskService.approve(params)
356
357        if(!result.error) {
358                flash.message = "Task ${params.id} has been approved."
[418]359                redirect(action: show, id: params.id)
360                return
[181]361        }
362
[418]363        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
364
365        if(result.taskInstance)
366            redirect(action: show, id: params.id)
367        else
368            redirect(action: 'search')
369
[181]370    }
371
[418]372    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[181]373    def renegeApproval = {
374
375        def result = taskService.renegeApproval(params)
376
377        if(!result.error) {
378                flash.message = "Task ${params.id} has had approval removed."
[418]379                redirect(action: show, id: params.id)
380                return
[181]381        }
382
[418]383        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
384
385        if(result.taskInstance)
386            redirect(action: show, id: params.id)
387        else
388            redirect(action: 'search')
389
[181]390    }
391
[298]392    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[181]393    def complete = {
394
395        def result = taskService.complete(params)
396
397        if(!result.error) {
398                flash.message = "Task ${params.id} has been completed."
[418]399                redirect(action: show, id: params.id)
400                return
[181]401        }
[418]402
403        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
404
405        if(result.taskInstance)
406            redirect(action: show, id: params.id)
407        else
408            redirect(action: 'search')
409
410    }
411
412    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
413    def setAttentionFlag = {
414
415        def result = taskService.setAttentionFlag(params)
416
417        if(!result.error) {
418                flash.message = "Task ${params.id} has been flagged for attention."
419                redirect(action: show, id: params.id)
420                return
[181]421        }
422
[418]423        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
424
425        if(result.taskInstance)
426            redirect(action: show, id: params.id)
427        else
428            redirect(action: 'search')
429
[181]430    }
431
[298]432    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[418]433    def clearAttentionFlag = {
[181]434
[418]435        def result = taskService.clearAttentionFlag(params)
436
437        if(!result.error) {
438                flash.message = "Task ${params.id} attention flag cleared."
439                redirect(action: show, id: params.id)
440                return
[181]441        }
442
[418]443        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
444
445        if(result.taskInstance)
446            redirect(action: show, id: params.id)
447        else
448            redirect(action: 'search')
449
450    }
451
452    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
453    def reopen = {
454
[181]455        def result = taskService.reopen(params)
456
457        if(!result.error) {
458                flash.message = "Task ${params.id} has been reopened."
[418]459                redirect(action: show, id: params.id)
460                return
[181]461        }
462
[418]463        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
464
465        if(result.taskInstance)
466            redirect(action: show, id: params.id)
467        else
468            redirect(action: 'search')
469
[181]470    }
471
[298]472    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[66]473    def edit = {
[147]474
[139]475        // In the case of an actionSubmit button, rewrite action name from 'index'.
476        if(params._action_Edit)
[375]477            params.action='edit'
[169]478
[66]479        def taskInstance = Task.get( params.id )
480
481        if(!taskInstance) {
482            flash.message = "Task not found with id ${params.id}"
[196]483            redirect(action: 'search')
[66]484        }
485        else {
[181]486            if(taskInstance.trash) {
[196]487                flash.message = "You may not edit tasks that are in the trash."
488                redirect(action: 'show', id: taskInstance.id)
489                return
[181]490            }
[246]491//             def possibleParentList = taskService.possibleParentList(taskInstance)
492//             return [ taskInstance : taskInstance, possibleParentList: possibleParentList ]
493            return [ taskInstance : taskInstance ]
[84]494        }
495    }
496
[298]497    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[66]498    def update = {
[179]499
[180]500        def result = taskService.update(params)
501
502        if(!result.error) {
[66]503                flash.message = "Task ${params.id} updated"
[418]504                redirect(action: show, id: params.id)
505                return
[180]506        }
507
[418]508        if(result.error.code == "task.modifications.failedToSave")
509            flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
510
511        render(view:'edit',model:[taskInstance:result.taskInstance.attach()])
512
[66]513    }
514
[298]515    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[66]516    def create = {
517        def taskInstance = new Task()
[214]518
519        // Set the targetStartDate if specified, used by searchCalendar view.
520        if(params.year && params.month && params.day)
521            taskInstance.targetStartDate = dateUtilService.makeDate(params.year, params.month, params.day)
522
[196]523        // Default leadPerson to current user, unless supplied in params.
[291]524        taskInstance.leadPerson = authService.currentUser
[66]525        taskInstance.properties = params
[196]526        return ['taskInstance': taskInstance]
[66]527    }
528
[298]529    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[66]530    def save = {
[394]531        def result = taskService.save(params)
[180]532
533        if(!result.error) {
534            flash.message = "Task ${result.taskInstance.id} created."
[196]535            redirect(action: 'show', id: result.taskInstance.id)
[418]536            return
[66]537        }
[180]538
[418]539        if(result.error.code == "task.modifications.failedToSave")
540            flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
541
542        render(view:'create', model:[taskInstance:result.taskInstance])
[66]543    }
[179]544
[298]545    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[179]546    def listSubTasks = {
547        def parentTaskInstance = Task.get(params.id)
548
[134]549        if(!parentTaskInstance) {
550            flash.message = "Task not found with id ${params.id}"
[196]551            redirect(action: 'search')
[133]552        }
553        else {
[179]554        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
[196]555        def subTaskInstanceList = Task.findAllByParentTaskAndTrash(parentTaskInstance, false, params)
556        def subTaskInstanceTotal = Task.countByParentTaskAndTrash(parentTaskInstance, false)
[179]557
[134]558        [ taskInstanceList: subTaskInstanceList,
[179]559            taskInstanceTotal:  subTaskInstanceTotal,
560            parentTaskInstance: parentTaskInstance]
561        }
562    }
563
[298]564    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[196]565    def createSubTask = {
566        def parentTaskInstance = Task.get(params.id)
567
568        if(parentTaskInstance) {
569
570            def result = taskService.createSubTask(parentTaskInstance)
571            if(!result.error) {
572                flash.message = "Sub Task ${result.taskInstance.id} created, please edit and update to your requirements."
573                redirect(action: 'edit', id: result.taskInstance.id)
574            }
575            else {
576                if(result.taskInstance.errors.hasFieldErrors("parentTask")) {
[418]577                    flash.errorMessage = g.message(code:"task.operationNotPermittedOnTaskInTrash")
[196]578                    redirect(action: 'show', id:  parentTaskInstance.id)
579                }
580                else {
581                    render(view: 'create', model:[taskInstance: result.taskInstance])
582                }
583            }
584        }
585
586        else {
587            flash.message = "Task not found with id ${params.id}"
588            redirect(action: 'search')
589        }
590    }
591
[395]592    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[418]593    def createImmediateCallout = {
[395]594        def taskInstance = new Task()
595
596        def entryFaultInstance = new Entry(entryType: EntryType.get(1))  // Fault.
[418]597        def entryCauseInstance = new Entry(entryType: EntryType.get(2))  // Cause.
598        def entryWorkDoneInstance = new Entry(entryType: EntryType.get(3))  // Work Done.
[395]599
600        return ['taskInstance': taskInstance,
601                        'entryFaultInstance': entryFaultInstance,
[418]602                        'entryCauseInstance': entryCauseInstance,
[395]603                        'entryWorkDoneInstance': entryWorkDoneInstance]
604    }
605
606    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
[418]607    def saveImmediateCallout = {
608        def result = taskService.saveImmediateCallout(params)
[395]609
610        if(!result.error) {
611            flash.message = "Task ${result.taskInstance.id} created."
612            redirect(action: 'show', id: result.taskInstance.id)
613            return
614        }
615
616        if(result.error.code == "task.modifications.failedToSave")
617            flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
618
[418]619        render(view:'createImmediateCallout',
[395]620                    model: ['taskInstance': result.taskInstance,
621                                'entryFaultInstance': result.entryFaultInstance,
[418]622                                'entryCauseInstance': result.entryCauseInstance,
[395]623                                'entryWorkDoneInstance': result.entryWorkDoneInstance])
624
625    }
626
[196]627} // end of class.
Note: See TracBrowser for help on using the repository browser.