root/trunk/grails-app/controllers/ReportController.groovy @ 708

Revision 708, 9.6 KB (checked in by gav, 4 years ago)

Fix small bug in reactive ratio report, where BigDecimal? not returned and therefore setScale() not available.
Also return error message for endDate < startDate.

Line 
1import org.codehaus.groovy.grails.plugins.springsecurity.Secured
2import org.codehaus.groovy.grails.commons.ConfigurationHolder
3import org.springframework.web.servlet.support.RequestContextUtils as RCU
4
5class ReportController extends BaseController {
6
7    def authService
8    def dateUtilService
9    def taskReportService
10    def assetReportService
11    def inventoryReportService
12
13    def index = { redirect(action:templatePortrait,params:params) }
14
15    // the delete, save and update actions only accept POST requests
16    //static allowedMethods = [list:'POST']
17
18    def templatePortrait = {
19
20        params.startDate = new Date()
21        params.endDate = new Date()
22
23        params.reportTitle = "Template Report (Portrait)"
24        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
25        params.currentUser = authService.currentUser
26        params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
27        params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
28
29        def dataModel = createTemplateData()
30
31        // Jasper plugin controller expects data to be a Collection.
32        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
33
34    } // templatePortrait
35
36    def templateLandscape = {
37
38        params.startDate = new Date()
39        params.endDate = new Date()
40
41        params.reportTitle = "Template Report (Landscape)"
42        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
43        params.currentUser = authService.currentUser
44        params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
45        params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
46
47        def dataModel = createTemplateData()
48
49        // Jasper plugin controller expects data to be a Collection.
50        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
51
52    } // templateLandscape
53
54    private createTemplateData() {
55
56        def result = [:]
57        result.summaryOfCalculationMethod = "Summary string of the calculations performed."
58        result.dataList = []
59        for(i in 1..5) {
60            def dataDetails = [:]
61            dataDetails.description = "Data description " + i.toString()
62            result.dataList << dataDetails
63        }
64
65        // Success.
66        return result
67
68    } // createTemplateData
69
70    def downloadTemplate = {
71
72        // params.fileName is not used directly to negate any security issues..
73        def fileName = (params.fileName == 'templateLandscape.jrxml') ? 'templateLandscape.jrxml' : 'templatePortrait.jrxml'
74        def f = grailsApplication.mainContext.getResource("reports/${fileName}").getFile()
75        if(f.isFile()) {
76            response.contentType = ConfigurationHolder.config.grails.mime.types["text"]
77            response.setHeader("Content-disposition", "attachment; filename=${fileName}")
78            render f.text
79        }
80        else
81            render(status:404, text: "File Not Found: ${f}")
82
83    } // downLoadTemplate
84
85    def reactiveRatio = {
86
87        params.reportTitle = "Reactive Ratio Report"
88        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
89        params.currentUser = authService.currentUser
90        params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
91        params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
92
93        def result = taskReportService.getReactiveRatio(params, RCU.getLocale(request))
94
95        if(!result.error) {
96            // Jasper plugin controller expects data to be a Collection.
97            chain(controller:'jasper', action:'index', model:[data: [result]], params:params)
98            return
99        }
100
101        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
102        redirect(controller: 'appCore', action: 'start', params: [showTab:'showReportsTab'])
103
104    } // reactiveRatio
105
106    def immediateCallouts = {
107
108        params.reportTitle = "Immediate Callouts"
109        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
110        params.currentUser = authService.currentUser
111        params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
112        params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
113
114        def dataModel = taskReportService.getImmediateCallouts(params, RCU.getLocale(request))
115
116        // Jasper plugin controller expects data to be a Collection.
117        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
118
119    } // immediateCallouts
120
121    def stockTakeOverview = {
122
123        params.reportTitle = "Stock Take Overview"
124        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
125        params.currentUser = authService.currentUser
126
127        def dataModel = inventoryReportService.getStockTakeOverview(params, RCU.getLocale(request))
128
129        // Jasper plugin controller expects data to be a Collection.
130        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
131
132    } // stockTakeOverview
133
134    def stockTakeByLocation = {
135
136        params.reportTitle = "Stock Take By Location"
137        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
138        params.currentUser = authService.currentUser
139
140        def dataModel = inventoryReportService.getStockTakeByLocation(params, RCU.getLocale(request))
141
142        // Jasper plugin controller expects data to be a Collection.
143        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
144
145    } // stockTakeByLocation
146
147    def assetDetail = {
148
149        params.reportTitle = "Asset Detail"
150        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
151        params.currentUser = authService.currentUser
152        if(params.section.id == 'all') {
153            params.section = "All"
154            params.site = "All"
155        }
156        else {
157            params.section = Section.get(params.section.id.toLong())
158            params.site = params.section.site
159        }
160
161        def dataModel = assetReportService.getAssetDetail(params, RCU.getLocale(request))
162
163        // Jasper plugin controller expects data to be a Collection.
164        chain(controller:'jasper', action:'index', model:[data: dataModel], params:params)
165
166    } // assetDetail
167
168    def assetRegister = {
169
170        params.reportTitle = "Asset Register"
171        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
172        params.currentUser = authService.currentUser
173
174        def dataModel = assetReportService.getAssetRegister(params, RCU.getLocale(request))
175
176        // Jasper plugin controller expects data to be a Collection.
177        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
178
179    } // assetRegister
180
181    def equipmentRegisterOhsGsp = {
182        render(view: 'equipmentRegisterOhs')
183    }
184
185    def equipmentRegisterOhs = {
186
187        params.reportTitle = "Equipment Register OH&S"
188        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
189        params.currentUser = authService.currentUser
190
191        params.calculateRegulatoryTaskCompletion = true
192        params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
193        params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
194
195        def dataModel = assetReportService.getEquipmentRegister(params, RCU.getLocale(request))
196
197        // Jasper plugin controller expects data to be a Collection.
198        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
199
200//         render {
201//             dataModel.dataList.each {
202//                 p("$it")
203//             }
204//         }
205
206    } // equipmentRegisterOhs
207
208    def equipmentRegisterFinancial = {
209
210        params.reportTitle = "Equipment Register Financial"
211        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
212        params.currentUser = authService.currentUser
213
214        def dataModel = assetReportService.getEquipmentRegister(params, RCU.getLocale(request))
215
216        // Jasper plugin controller expects data to be a Collection.
217        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
218
219    } // equipmentRegisterFinancial
220
221    def inventoryValueDetailedGsp = {
222        render(view: 'inventoryValueDetailed')
223    }
224
225    def inventoryValueDetailed = {
226
227        params.reportTitle = "Inventory Value Detailed"
228        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
229        params.currentUser = authService.currentUser
230
231        def dataModel = inventoryReportService.getInventoryValueDetailed(params, RCU.getLocale(request))
232
233        // Jasper plugin controller expects data to be a Collection.
234        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
235
236    }
237
238    def inventoryValueOverviewGsp = {
239        render(view: 'inventoryValueOverview')
240    }
241
242    def inventoryValueOverview = {
243
244        params.reportTitle = "Inventory Value Overview"
245        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
246        params.currentUser = authService.currentUser
247
248        def dataModel = inventoryReportService.getInventoryValueOverview(params, RCU.getLocale(request))
249
250        // Jasper plugin controller expects data to be a Collection.
251        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
252
253    }
254
255} // end of class.
Note: See TracBrowser for help on using the browser.