source: trunk/grails-app/services/AssignedGroupService.groovy @ 251

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

Record a taskModification for changes to assignedGroups and assignedPersons as per ticket #35.

File size: 6.2 KB
Line 
1class AssignedGroupService {
2
3    boolean transactional = false
4
5    def personService
6
7    def list(params) {
8        def result = [:]
9        def fail = { Map m ->
10            result.error = [ code: m.code, args: ["AssignedGroup"] ]
11            return result
12        }
13
14        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
15        result.assignedGroupInstanceList = AssignedGroup.list(params)
16        result.assignedGroupInstanceTotal = AssignedGroup.count()
17
18        if(!result.assignedGroupInstanceList || !result.assignedGroupInstanceTotal)
19            return fail(code:"default.list.failure")
20
21        // Success.
22        return result
23    }
24
25    def show(params) {
26        def result = [:]
27        def fail = { Map m ->
28            result.error = [ code: m.code, args: ["AssignedGroup", params.id] ]
29            return result
30        }
31
32        result.assignedGroupInstance = AssignedGroup.get(params.id)
33
34        if(!result.assignedGroupInstance)
35            return fail(code:"default.not.found")
36
37        // Success.
38        return result
39    }
40
41    def delete(params) {
42        AssignedGroup.withTransaction { status ->
43            def result = [:]
44
45            def fail = { Map m ->
46                status.setRollbackOnly()
47                if(result.assignedGroupInstance && m.field)
48                    result.assignedGroupInstance.errors.rejectValue(m.field, m.code)
49                result.error = [ code: m.code, args: ["AssignedGroup", params.id] ]
50                return result
51            }
52
53            result.assignedGroupInstance = AssignedGroup.get(params.id)
54
55            if(!result.assignedGroupInstance)
56                return fail(code:"default.not.found")
57
58            def taskModification = new TaskModification(person: personService.currentUser,
59                                                    taskModificationType: TaskModificationType.get(10),
60                                                    task: result.assignedGroupInstance.task)
61
62            if(!taskModification.save())
63                return fail(field:"taskModifications", code:"task.modifications.failedToSave")
64
65            try {
66                result.assignedGroupInstance.delete(flush:true)
67                return result //Success.
68            }
69            catch(org.springframework.dao.DataIntegrityViolationException e) {
70                return fail(code:"default.delete.failure")
71            }
72
73        } //end withTransaction
74    } // end delete()
75
76    def edit(params) {
77        def result = [:]
78        def fail = { Map m ->
79            result.error = [ code: m.code, args: ["AssignedGroup", params.id] ]
80            return result
81        }
82
83        result.assignedGroupInstance = AssignedGroup.get(params.id)
84
85        if(!result.assignedGroupInstance)
86            return fail(code:"default.not.found")
87
88        // Success.
89        return result
90    }
91
92    def update(params) {
93        AssignedGroup.withTransaction { status ->
94            def result = [:]
95
96            def fail = { Map m ->
97                status.setRollbackOnly()
98                if(result.assignedGroupInstance && m.field)
99                    result.assignedGroupInstance.errors.rejectValue(m.field, m.code)
100                result.error = [ code: m.code, args: ["AssignedGroup", params.id] ]
101                return result
102            }
103
104            result.assignedGroupInstance = AssignedGroup.get(params.id)
105
106            if(!result.assignedGroupInstance)
107                return fail(code:"default.not.found")
108
109            // Optimistic locking check.
110            if(params.version) {
111                if(result.assignedGroupInstance.version > params.version.toLong())
112                    return fail(field:"version", code:"default.optimistic.locking.failure")
113            }
114
115            result.assignedGroupInstance.properties = params
116
117            if(result.assignedGroupInstance.hasErrors() || !result.assignedGroupInstance.save())
118                return fail(code:"default.update.failure")
119
120            def taskModification = new TaskModification(person: personService.currentUser,
121                                                    taskModificationType: TaskModificationType.get(10),
122                                                    task: result.assignedGroupInstance.task)
123
124            if(!taskModification.save())
125                return fail(field:"taskModifications", code:"task.modifications.failedToSave")
126
127            // Success.
128            return result
129
130        } //end withTransaction
131    }  // end update()
132
133    def create(params) {
134        def result = [:]
135        def fail = { Map m ->
136            result.error = [ code: m.code, args: ["AssignedGroup", params.id] ]
137            return result
138        }
139
140        if(!params.task?.id)
141            fail(code:"assignedGroup.task.not.found")
142
143        result.assignedGroupInstance = new AssignedGroup()
144        result.assignedGroupInstance.properties = params
145
146        // success
147        return result
148    }
149
150    def save(params) {
151        AssignedGroup.withTransaction { status ->
152            def result = [:]
153
154            def fail = { Map m ->
155                if(result.assignedGroupInstance && m.field)
156                    result.assignedGroupInstance.errors.rejectValue(m.field, m.code)
157                result.error = [ code: m.code, args: ["AssignedGroup", params.id] ]
158                return result
159            }
160
161            result.assignedGroupInstance = new AssignedGroup(params)
162
163            if(result.assignedGroupInstance.hasErrors() || !result.assignedGroupInstance.save())
164                return fail(code:"default.create.failure")
165
166            // Record a taskModification for every one except "system".
167            if(personService.currentUser.id != 1) {
168                def taskModification = new TaskModification(person: personService.currentUser,
169                                                        taskModificationType: TaskModificationType.get(10),
170                                                        task: result.assignedGroupInstance.task)
171
172                if(!taskModification.save())
173                    return fail(field:"taskModifications", code:"task.modifications.failedToSave")
174            }
175
176            // success
177            return result
178
179        } //end withTransaction
180    } // end save()
181
182} // end class
Note: See TracBrowser for help on using the repository browser.