source: trunk/grails-app/controllers/ReportController.groovy @ 687

Last change on this file since 687 was 687, checked in by gav, 14 years ago

Change assetDetail report to allow reporting by section and display site in report.

File size: 8.5 KB
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 dataModel = taskReportService.getReactiveRatio(params, RCU.getLocale(request))
94
95        // Jasper plugin controller expects data to be a Collection.
96        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
97
98    } // reactiveRatio
99
100    def immediateCallouts = {
101
102        params.reportTitle = "Immediate Callouts"
103        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
104        params.currentUser = authService.currentUser
105        params.startDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.startDate)
106        params.endDateString = g.formatDate(format: "EEE, dd-MMM-yyyy", date: params.endDate)
107
108        def dataModel = taskReportService.getImmediateCallouts(params, RCU.getLocale(request))
109
110        // Jasper plugin controller expects data to be a Collection.
111        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
112
113    } // immediateCallouts
114
115    def stockTakeOverview = {
116
117        params.reportTitle = "Stock Take Overview"
118        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
119        params.currentUser = authService.currentUser
120
121        def dataModel = inventoryReportService.getStockTakeOverview(params, RCU.getLocale(request))
122
123        // Jasper plugin controller expects data to be a Collection.
124        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
125
126    } // stockTakeOverview
127
128    def stockTakeByLocation = {
129
130        params.reportTitle = "Stock Take By Location"
131        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
132        params.currentUser = authService.currentUser
133
134        def dataModel = inventoryReportService.getStockTakeByLocation(params, RCU.getLocale(request))
135
136        // Jasper plugin controller expects data to be a Collection.
137        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
138
139    } // stockTakeByLocation
140
141    def assetDetail = {
142
143        params.reportTitle = "Asset Detail"
144        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
145        params.currentUser = authService.currentUser
146        if(params.section.id == 'all') {
147            params.section = "All"
148            params.site = "All"
149        }
150        else {
151            params.section = Section.get(params.section.id.toLong())
152            params.site = params.section.site
153        }
154
155        def dataModel = assetReportService.getAssetDetail(params, RCU.getLocale(request))
156
157        // Jasper plugin controller expects data to be a Collection.
158        chain(controller:'jasper', action:'index', model:[data: dataModel], params:params)
159
160    } // assetDetail
161
162    def assetRegister = {
163
164        params.reportTitle = "Asset Register"
165        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
166        params.currentUser = authService.currentUser
167
168        def dataModel = assetReportService.getAssetRegister(params, RCU.getLocale(request))
169
170        // Jasper plugin controller expects data to be a Collection.
171        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
172
173    } // assetRegister
174
175    def equipmentRegister = {
176
177        params.reportTitle = "Equipment Register"
178        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
179        params.currentUser = authService.currentUser
180
181        def dataModel = assetReportService.getEquipmentRegister(params, RCU.getLocale(request))
182
183        // Jasper plugin controller expects data to be a Collection.
184        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
185
186//         render {
187//             dataModel.dataList.each {
188//                 p("$it")
189//             }
190//         }
191
192    } // equipmentRegister
193
194    def inventoryValueDetailedGsp = {
195        render(view: 'inventoryValueDetailed')
196    }
197
198    def inventoryValueDetailed = {
199
200        params.reportTitle = "Inventory Value Detailed"
201        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
202        params.currentUser = authService.currentUser
203
204        def dataModel = inventoryReportService.getInventoryValueDetailed(params, RCU.getLocale(request))
205
206        // Jasper plugin controller expects data to be a Collection.
207        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
208
209    }
210
211    def inventoryValueOverviewGsp = {
212        render(view: 'inventoryValueOverview')
213    }
214
215    def inventoryValueOverview = {
216
217        params.reportTitle = "Inventory Value Overview"
218        params.logoUrl = grailsApplication.mainContext.getResource('images/logo.png').getURL()
219        params.currentUser = authService.currentUser
220
221        def dataModel = inventoryReportService.getInventoryValueOverview(params, RCU.getLocale(request))
222
223        // Jasper plugin controller expects data to be a Collection.
224        chain(controller:'jasper', action:'index', model:[data: [dataModel]], params:params)
225
226    }
227
228} // end of class.
Note: See TracBrowser for help on using the repository browser.