source: trunk/grails-app/services/AssignedPersonService.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
RevLine 
[249]1class AssignedPersonService {
[251]2
[249]3    boolean transactional = false
4
[251]5    def personService
6
[249]7    def list(params) {
8        def result = [:]
9        def fail = { Map m ->
10            result.error = [ code: m.code, args: ["AssignedPerson"] ]
11            return result
12        }
13
14        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
15        result.assignedPersonInstanceList = AssignedPerson.list(params)
16        result.assignedPersonInstanceTotal = AssignedPerson.count()
17
18        if(!result.assignedPersonInstanceList || !result.assignedPersonInstanceTotal)
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: ["AssignedPerson", params.id] ]
29            return result
30        }
31
32        result.assignedPersonInstance = AssignedPerson.get(params.id)
33
34        if(!result.assignedPersonInstance)
35            return fail(code:"default.not.found")
36
37        // Success.
38        return result
39    }
40
41    def delete(params) {
[251]42        AssignedPerson.withTransaction { status ->
43            def result = [:]
[249]44
[251]45            def fail = { Map m ->
46                status.setRollbackOnly()
47                if(result.assignedPersonInstance && m.field)
48                    result.assignedPersonInstance.errors.rejectValue(m.field, m.code)
49                result.error = [ code: m.code, args: ["AssignedPerson", params.id] ]
50                return result
51            }
[249]52
[251]53            result.assignedPersonInstance = AssignedPerson.get(params.id)
[249]54
[251]55            if(!result.assignedPersonInstance)
56                return fail(code:"default.not.found")
[249]57
[251]58            def taskModification = new TaskModification(person: personService.currentUser,
59                                                    taskModificationType: TaskModificationType.get(11),
60                                                    task: result.assignedPersonInstance.task)
[249]61
[251]62            if(!taskModification.save())
63                return fail(field:"taskModifications", code:"task.modifications.failedToSave")
64
65            try {
66                result.assignedPersonInstance.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
[249]76    def edit(params) {
77        def result = [:]
78        def fail = { Map m ->
79            result.error = [ code: m.code, args: ["AssignedPerson", params.id] ]
80            return result
81        }
82
83        result.assignedPersonInstance = AssignedPerson.get(params.id)
84
85        if(!result.assignedPersonInstance)
86            return fail(code:"default.not.found")
87
88        // Success.
89        return result
90    }
91
92    def update(params) {
93        AssignedPerson.withTransaction { status ->
94            def result = [:]
95
96            def fail = { Map m ->
97                status.setRollbackOnly()
98                if(result.assignedPersonInstance && m.field)
99                    result.assignedPersonInstance.errors.rejectValue(m.field, m.code)
100                result.error = [ code: m.code, args: ["AssignedPerson", params.id] ]
101                return result
102            }
103
104            result.assignedPersonInstance = AssignedPerson.get(params.id)
105
106            if(!result.assignedPersonInstance)
107                return fail(code:"default.not.found")
108
109            // Optimistic locking check.
110            if(params.version) {
111                if(result.assignedPersonInstance.version > params.version.toLong())
112                    return fail(field:"version", code:"default.optimistic.locking.failure")
113            }
114
115            result.assignedPersonInstance.properties = params
116
117            if(result.assignedPersonInstance.hasErrors() || !result.assignedPersonInstance.save())
118                return fail(code:"default.update.failure")
119
[251]120            def taskModification = new TaskModification(person: personService.currentUser,
121                                                    taskModificationType: TaskModificationType.get(11),
122                                                    task: result.assignedPersonInstance.task)
123
124            if(!taskModification.save())
125                return fail(field:"taskModifications", code:"task.modifications.failedToSave")
126
[249]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: ["AssignedPerson", params.id] ]
137            return result
138        }
139
140        if(!params.task?.id)
141            fail(code:"assignedPerson.task.not.found")
142
143        result.assignedPersonInstance = new AssignedPerson()
144        result.assignedPersonInstance.properties = params
145
146        // success
147        return result
148    }
149
150    def save(params) {
[251]151        AssignedPerson.withTransaction { status ->
152            def result = [:]
[249]153
[251]154            def fail = { Map m ->
155                if(result.assignedPersonInstance && m.field)
156                    result.assignedPersonInstance.errors.rejectValue(m.field, m.code)
157                result.error = [ code: m.code, args: ["AssignedPerson", params.id] ]
158                return result
159            }
[249]160
[251]161            result.assignedPersonInstance = new AssignedPerson(params)
[249]162
[251]163            if(result.assignedPersonInstance.hasErrors() || !result.assignedPersonInstance.save())
164                return fail(code:"default.create.failure")
[249]165
[251]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(11),
170                                                        task: result.assignedPersonInstance.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
[249]182} // end class
Note: See TracBrowser for help on using the repository browser.