PageRenderTime 20ms CodeModel.GetById 2ms app.highlight 15ms RepoModel.GetById 1ms app.codeStats 0ms

/grails-app/controllers/general/EmpresaController.groovy

http://github.com/jdmr/mateo
Groovy | 150 lines | 128 code | 19 blank | 3 comment | 24 complexity | f0cd7473dc224790b13a53837bf3eefd MD5 | raw file
  1package general
  2
  3import grails.converters.JSON
  4import grails.plugins.springsecurity.Secured
  5
  6@Secured(['ROLE_ORG'])
  7class EmpresaController {
  8
  9    def springSecurityService
 10
 11    static allowedMethods = [crea: "POST", actualiza: "POST", elimina: "POST"]
 12
 13    def index = {
 14        redirect(action: "lista", params: params)
 15    }
 16
 17	def lista = {
 18		params.max = Math.min(params.max ? params.int('max') : 10, 100)
 19        def usuario = springSecurityService.currentUser
 20		[empresas: Empresa.findAllByOrganizacion(usuario.empresa.organizacion, params), totalDeEmpresas: Empresa.countByOrganizacion(usuario.empresa.organizacion)]
 21	}
 22
 23    def nueva = {
 24        def empresa = new Empresa()
 25        empresa.properties = params
 26        return [empresa: empresa]
 27    }
 28
 29    def crea = {
 30        Empresa.withTransaction {
 31            def empresa = new Empresa(params)
 32            def usuario = springSecurityService.currentUser
 33            empresa.organizacion = usuario.empresa.organizacion
 34            if (empresa.save(flush: true)) {
 35                // Actualizando empresa del usuario
 36                usuario.empresa = empresa
 37                usuario.save()
 38
 39                session.empresa = empresa
 40
 41                flash.message = message(code: 'default.created.message', args: [message(code: 'empresa.label', default: 'Empresa'), empresa.nombre])
 42                redirect(action: "ver", id: empresa.id)
 43            }
 44            else {
 45                render(view: "nueva", model: [empresa: empresa])
 46            }
 47        }
 48    }
 49
 50    def ver = {
 51        def empresa = Empresa.get(params.id)
 52        if (!empresa) {
 53            flash.message = message(code: 'default.not.found.message', args: [message(code: 'empresa.label', default: 'Empresa'), params.id])
 54            redirect(action: "lista")
 55        }
 56        else {
 57            [empresa: empresa]
 58        }
 59    }
 60
 61    def edita = {
 62        def empresa = Empresa.get(params.id)
 63        if (!empresa) {
 64            flash.message = message(code: 'default.not.found.message', args: [message(code: 'empresa.label', default: 'Empresa'), params.id])
 65            redirect(action: "lista")
 66        }
 67        else {
 68            return [empresa: empresa]
 69        }
 70    }
 71
 72    def actualiza = {
 73        Empresa.withTransaction {
 74            def empresa = Empresa.get(params.id)
 75            if (empresa) {
 76                if (params.version) {
 77                    def version = params.version.toLong()
 78                    if (empresa.version > version) {
 79                        
 80                        empresa.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'empresa.label', default: 'Empresa')] as Object[], "Another user has updated this Empresa while you were editing")
 81                        render(view: "edita", model: [empresa: empresa])
 82                        return
 83                    }
 84                }
 85                empresa.properties = params
 86                def usuario = springSecurityService.currentUser
 87                empresa.organizacion = usuario.empresa.organizacion
 88                if (!empresa.hasErrors() && empresa.save(flush: true)) {
 89                    // Actualizando empresa del usuario
 90                    usuario.empresa = empresa
 91                    usuario.save()
 92
 93                    session.empresa = empresa
 94
 95                    flash.message = message(code: 'default.updated.message', args: [message(code: 'empresa.label', default: 'Empresa'), empresa.nombre])
 96                    redirect(action: "ver", id: empresa.id)
 97                }
 98                else {
 99                    render(view: "edita", model: [empresa: empresa])
100                }
101            }
102            else {
103                flash.message = message(code: 'default.not.found.message', args: [message(code: 'empresa.label', default: 'Empresa'), params.id])
104                redirect(action: "lista")
105            }
106        }
107    }
108
109    def elimina = {
110        Empresa.withTransaction {
111            def empresa = Empresa.get(params.id)
112            if (empresa) {
113                def usuario = springSecurityService.currentUser
114                if (usuario.empresa.organizacion == empresa.organizacion) {
115                    def nombre
116                    try {
117                        // Cambiar de empresa al usuario
118                        if (usuario.empresa == empresa) {
119                            def empresas = Empresa.findAllByOrganizacion(empresa.organizacion)
120                            for (x in empresas) {
121                                if (x != empresa) {
122                                    usuario.empresa = x
123                                    break
124                                }
125                            }
126
127                            if (usuario.empresa == empresa) {
128                                flash.message = message(code:'empresa.noEliminada.message', args: [empresa.nombre])
129                                redirect(action:'ver',id:empresa.id)
130                            }
131                        }
132
133                        nombre = empresa.nombre
134                        empresa.delete(flush: true)
135                        flash.message = message(code: 'default.deleted.message', args: [message(code: 'empresa.label', default: 'Empresa'), nombre])
136                        redirect(action: "lista")
137                    }
138                    catch (org.springframework.dao.DataIntegrityViolationException e) {
139                        flash.message = message(code: 'default.not.deleted.message', args: [message(code: 'empresa.label', default: 'Empresa'), nombre])
140                        redirect(action: "ver", id: params.id)
141                    }
142                }
143            }
144            else {
145                flash.message = message(code: 'default.not.found.message', args: [message(code: 'empresa.label', default: 'Empresa'), params.id])
146                redirect(action: "lista")
147            }
148        }
149    }
150}