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