Ignore:
Timestamp:
Dec 28, 2009, 1:10:24 AM (14 years ago)
Author:
gav
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/services/AssignedPersonService.groovy

    r249 r251  
    11class AssignedPersonService {
     2
    23    boolean transactional = false
     4
     5    def personService
    36
    47    def list(params) {
     
    3740
    3841    def delete(params) {
    39         def result = [:]
    40         def fail = { Map m ->
    41             result.error = [ code: m.code, args: ["AssignedPerson", params.id] ]
    42             return result
    43         }
     42        AssignedPerson.withTransaction { status ->
     43            def result = [:]
    4444
    45         result.assignedPersonInstance = AssignedPerson.get(params.id)
     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            }
    4652
    47         if(!result.assignedPersonInstance)
    48             return fail(code:"default.not.found")
     53            result.assignedPersonInstance = AssignedPerson.get(params.id)
    4954
    50         try {
    51             result.assignedPersonInstance.delete(flush:true)
    52             return result //Success.
    53         }
    54         catch(org.springframework.dao.DataIntegrityViolationException e) {
    55             return fail(code:"default.delete.failure")
    56         }
     55            if(!result.assignedPersonInstance)
     56                return fail(code:"default.not.found")
    5757
    58     }
     58            def taskModification = new TaskModification(person: personService.currentUser,
     59                                                    taskModificationType: TaskModificationType.get(11),
     60                                                    task: result.assignedPersonInstance.task)
     61
     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()
    5975
    6076    def edit(params) {
     
    102118                return fail(code:"default.update.failure")
    103119
     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
    104127            // Success.
    105128            return result
     
    126149
    127150    def save(params) {
    128         def result = [:]
    129         def fail = { Map m ->
    130             if(result.assignedPersonInstance && m.field)
    131                 result.assignedPersonInstance.errors.rejectValue(m.field, m.code)
    132             result.error = [ code: m.code, args: ["AssignedPerson", params.id] ]
     151        AssignedPerson.withTransaction { status ->
     152            def result = [:]
     153
     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            }
     160
     161            result.assignedPersonInstance = new AssignedPerson(params)
     162
     163            if(result.assignedPersonInstance.hasErrors() || !result.assignedPersonInstance.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(11),
     170                                                        task: result.assignedPersonInstance.task)
     171
     172                if(!taskModification.save())
     173                    return fail(field:"taskModifications", code:"task.modifications.failedToSave")
     174            }
     175
     176            // success
    133177            return result
    134         }
    135178
    136         result.assignedPersonInstance = new AssignedPerson(params)
    137 
    138         if(result.assignedPersonInstance.hasErrors() || !result.assignedPersonInstance.save(flush: true))
    139             return fail(code:"default.create.failure")
    140 
    141         // success
    142         return result
    143     }
     179        } //end withTransaction
     180    } // end save()
    144181
    145182} // end class
Note: See TracChangeset for help on using the changeset viewer.