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

Last change on this file since 527 was 527, checked in by roberth, 14 years ago

Adding of contacts is made possible in the study creation wizard.

  • Property svn:keywords set to Date Author Rev
File size: 7.5 KB
Line 
1package dbnp.studycapturing
2/**
3 * 888       888 888    888 8888888888 8888888b.  8888888888
4 * 888   o   888 888    888 888        888   Y88b 888
5 * 888  d8b  888 888    888 888        888    888 888
6 * 888 d888b 888 8888888888 8888888    888   d88P 8888888
7 * 888d88888b888 888    888 888        8888888P"  888
8 * 88888P Y88888 888    888 888        888 T88b   888
9 * 8888P   Y8888 888    888 888        888  T88b  888
10 * 888P     Y888 888    888 8888888888 888   T88b 8888888888
11 *
12 * 8888888 .d8888b.     88888888888 888    888 8888888888
13 *   888  d88P  Y88b        888     888    888 888
14 *   888  Y88b.             888     888    888 888
15 *   888   "Y888b.          888     8888888888 8888888
16 *   888      "Y88b.        888     888    888 888
17 *   888        "888        888     888    888 888
18 *   888  Y88b  d88P        888     888    888 888
19 * 8888888 "Y8888P"         888     888    888 8888888888
20 *
21 *   888888        d8888 888     888     d8888 8888888b.   .d88888b.   .d8888b.
22 *     "88b       d88888 888     888    d88888 888  "Y88b d88P" "Y88b d88P  Y88b
23 *      888      d88P888 888     888   d88P888 888    888 888     888 888    888
24 *      888     d88P 888 Y88b   d88P  d88P 888 888    888 888     888 888
25 *      888    d88P  888  Y88b d88P  d88P  888 888    888 888     888 888
26 *      888   d88P   888   Y88o88P  d88P   888 888    888 888     888 888    888
27 *      88P  d8888888888    Y888P  d8888888888 888  .d88P Y88b. .d88P Y88b  d88P
28 *      888 d88P     888     Y8P  d88P     888 8888888P"   "Y88888P"   "Y8888P"
29 *    .d88P
30 *  .d88P"
31 * 888P"
32 *
33 *  .d8888b.  888  .d8888b.  888  .d8888b.  888
34 * d88P  Y88b 888 d88P  Y88b 888 d88P  Y88b 888
35 *      .d88P 888      .d88P 888      .d88P 888
36 *    .d88P"  888    .d88P"  888    .d88P"  888
37 *    888"    888    888"    888    888"    888
38 *    888     Y8P    888     Y8P    888     Y8P
39 *             "              "              "
40 *    888     888    888     888    888     888
41 *
42 *
43 * TODO: add PROPER class and method documentation, just like have
44 *       agreed upon hundreds of times!!!!
45 */
46class PersonController {
47
48    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
49    def possibleGenders = [ 'Male', 'Female' ]
50
51    /**
52     * Fires after every action and determines the layout of the page
53     */
54    def afterInterceptor = { model, modelAndView ->
55      println( params );
56     
57      if ( params['dialog'] ) {
58        model.layout = 'dialog';
59        model.extraparams = [ 'dialog': 'true' ] ;
60      } else {
61        model.layout = 'main';
62        model.extraparams = [] ;
63      }
64    }
65
66    def index = {
67        redirect(action: "list", params: params)
68    }
69
70    def list = {
71        params.max = Math.min(params.max ? params.int('max') : 10, 100)
72        [personInstanceList: Person.list(params), personInstanceTotal: Person.count()]
73    }
74
75    def create = {
76        def personInstance = new Person()
77        personInstance.properties = params
78        return [personInstance: personInstance, possibleGenders:possibleGenders]
79    }
80
81    def save = {
82        def personInstance = new Person(params)
83        def extraparams = new LinkedHashMap();
84
85        if( params[ 'dialog' ] ) {
86          extraparams[ 'dialog' ] = params[ 'dialog' ]
87        }
88
89        if (personInstance.save(flush: true)) {
90            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 : "" )])}"
91           
92            redirect(action: "show", id: personInstance.id, params: extraparams )
93        }
94        else {
95            render(view: "create", model: [personInstance: personInstance])
96        }
97    }
98
99    def show = {
100        def personInstance = Person.get(params.id)
101        if (!personInstance) {
102            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), params.id])}"
103            redirect(action: "list")
104        }
105        else {
106            [personInstance: personInstance]
107        }
108    }
109
110    def edit = {
111        def personInstance = Person.get(params.id)
112        if (!personInstance) {
113            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), params.id])}"
114            redirect(action: "list")
115        }
116        else {
117            return [personInstance: personInstance,possibleGenders:possibleGenders]
118        }
119    }
120
121    def update = {
122        def personInstance = Person.get(params.id)
123
124        def extraparams = new LinkedHashMap();
125
126        if( params[ 'dialog' ] ) {
127          extraparams[ 'dialog' ] = params[ 'dialog' ]
128        }
129
130        if (personInstance) {
131            if (params.version) {
132                def version = params.version.toLong()
133                if (personInstance.version > version) {
134                   
135                    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")
136                    render(view: "edit", model: [personInstance: personInstance])
137                    return
138                }
139            }
140            personInstance.properties = params
141            if (!personInstance.hasErrors() && personInstance.save(flush: true)) {
142                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 : "" )])}"
143                redirect(action: "show", id: personInstance.id, params: extraparams)
144            }
145            else {
146                render(view: "edit", model: [personInstance: personInstance])
147            }
148        }
149        else {
150            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), params.id])}"
151            redirect(action: "list", params: extraparams)
152        }
153    }
154
155    def delete = {
156        def personInstance = Person.get(params.id)
157
158        def extraparams = new LinkedHashMap();
159
160        if( params[ 'dialog' ] ) {
161          extraparams[ 'dialog' ] = params[ 'dialog' ]
162        }
163
164        if (personInstance) {
165            def personName = ( personInstance.firstName ? personInstance.firstName : "" ) + " " + ( personInstance.prefix ? personInstance.prefix : "" ) + " " + ( personInstance.lastName ? personInstance.lastName : "" );
166            try {
167                personInstance.delete(flush: true)
168                flash.message = "${message(code: 'default.deleted.message', args: [message(code: 'person.label', default: 'Person'), personName])}"
169                redirect(action: "list", params: extraparams)
170            }
171            catch (org.springframework.dao.DataIntegrityViolationException e) {
172                flash.message = "${message(code: 'default.not.deleted.message', args: [message(code: 'person.label', default: 'Person'), personName])}"
173                redirect(action: "show", id: params.id, params: extraparams)
174            }
175        }
176        else {
177            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), params.id])}"
178            redirect(action: "list", params: extraparams)
179        }
180    }
181}
Note: See TracBrowser for help on using the repository browser.