source: trunk/grails-app/controllers/dbnp/studycapturing/PersonController.groovy @ 382

Last change on this file since 382 was 382, checked in by roberth, 11 years ago

Updated the fields of person to contain title, gender, prefix and mobile phone. Also updated the views so that the pagination buttons appear beneath the 'add new' button.

File size: 4.5 KB
Line 
1package dbnp.studycapturing
2
3class PersonController {
4
5    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
6    def possibleGenders = [ 'Male', 'Female' ]
7
8    def index = {
9        redirect(action: "list", params: params)
10    }
11
12    def list = {
13        params.max = Math.min(params.max ? params.int('max') : 10, 100)
14        [personInstanceList: Person.list(params), personInstanceTotal: Person.count()]
15    }
16
17    def create = {
18        def personInstance = new Person()
19        personInstance.properties = params
20        return [personInstance: personInstance, possibleGenders:possibleGenders]
21    }
22
23    def save = {
24        def personInstance = new Person(params)
25        if (personInstance.save(flush: true)) {
26            flash.message = "${message(code: 'default.created.message', args: [message(code: 'person.label', default: 'Person'), ( personInstance.firstName ? personInstance.firstName : "" ) + " " + ( personInstance.prefix ? personInstance.prefix : "" ) + " " + ( personInstance.lastName ? personInstance.lastName : "" )])}"
27            redirect(action: "show", id: personInstance.id)
28        }
29        else {
30            render(view: "create", model: [personInstance: personInstance])
31        }
32    }
33
34    def show = {
35        def personInstance = Person.get(params.id)
36        if (!personInstance) {
37            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), params.id])}"
38            redirect(action: "list")
39        }
40        else {
41            [personInstance: personInstance]
42        }
43    }
44
45    def edit = {
46        def personInstance = Person.get(params.id)
47        if (!personInstance) {
48            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), params.id])}"
49            redirect(action: "list")
50        }
51        else {
52            return [personInstance: personInstance,possibleGenders:possibleGenders]
53        }
54    }
55
56    def update = {
57        def personInstance = Person.get(params.id)
58        if (personInstance) {
59            if (params.version) {
60                def version = params.version.toLong()
61                if (personInstance.version > version) {
62                   
63                    personInstance.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'person.label', default: 'Person')] as Object[], "Another user has updated this Person while you were editing")
64                    render(view: "edit", model: [personInstance: personInstance])
65                    return
66                }
67            }
68            personInstance.properties = params
69            if (!personInstance.hasErrors() && personInstance.save(flush: true)) {
70                flash.message = "${message(code: 'default.updated.message', args: [message(code: 'person.label', default: 'Person'), ( personInstance.firstName ? personInstance.firstName : "" ) + " " + ( personInstance.prefix ? personInstance.prefix : "" ) + " " + ( personInstance.lastName ? personInstance.lastName : "" )])}"
71                redirect(action: "show", id: personInstance.id)
72            }
73            else {
74                render(view: "edit", model: [personInstance: personInstance])
75            }
76        }
77        else {
78            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), params.id])}"
79            redirect(action: "list")
80        }
81    }
82
83    def delete = {
84        def personInstance = Person.get(params.id)
85
86        if (personInstance) {
87            def personName = ( personInstance.firstName ? personInstance.firstName : "" ) + " " + ( personInstance.prefix ? personInstance.prefix : "" ) + " " + ( personInstance.lastName ? personInstance.lastName : "" );
88            try {
89                personInstance.delete(flush: true)
90                flash.message = "${message(code: 'default.deleted.message', args: [message(code: 'person.label', default: 'Person'), personName])}"
91                redirect(action: "list")
92            }
93            catch (org.springframework.dao.DataIntegrityViolationException e) {
94                flash.message = "${message(code: 'default.not.deleted.message', args: [message(code: 'person.label', default: 'Person'), personName])}"
95                redirect(action: "show", id: params.id)
96            }
97        }
98        else {
99            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), params.id])}"
100            redirect(action: "list")
101        }
102    }
103}
Note: See TracBrowser for help on using the repository browser.