CoolFace
Apppublic

sakthivikram/geo-location

sourceHugging Faceupdated 5mo agoView on Hugging Face
0likes
AnalyticsController.java76 linesDownload Raw Back to controller
1package com.georeport.controller;2 3import com.georeport.dto.AnalyticsResponse;4import com.georeport.dto.ApiResponse;5import com.georeport.service.AnalyticsService;6import org.springframework.beans.factory.annotation.Autowired;7import org.springframework.format.annotation.DateTimeFormat;8import org.springframework.http.ResponseEntity;9import org.springframework.web.bind.annotation.*;10 11import java.time.LocalDateTime;12import java.util.List;13import java.util.Map;14 15/**16 * REST controller for analytics endpoints (Admin only).17 */18@RestController19@RequestMapping("/api/admin/analytics")20@CrossOrigin(origins = "*")21public class AnalyticsController {22 23    @Autowired24    private AnalyticsService analyticsService;25 26    /**27     * Get comprehensive analytics data28     */29    @GetMapping30    public ResponseEntity<ApiResponse<AnalyticsResponse>> getAnalytics(31            @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime startDate,32            @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endDate) {33 34        AnalyticsResponse analytics = analyticsService.getAnalytics(startDate, endDate);35        return ResponseEntity.ok(ApiResponse.success(analytics));36    }37 38    /**39     * Get issue trends (daily counts for last N days)40     */41    @GetMapping("/trends")42    public ResponseEntity<ApiResponse<Map<String, Long>>> getTrends(43            @RequestParam(defaultValue = "30") int days) {44 45        Map<String, Long> trends = analyticsService.getTrends(days);46        return ResponseEntity.ok(ApiResponse.success(trends));47    }48 49    /**50     * Get category distribution51     */52    @GetMapping("/categories")53    public ResponseEntity<ApiResponse<Map<String, Long>>> getCategoryDistribution() {54        Map<String, Long> distribution = analyticsService.getCategoryDistribution();55        return ResponseEntity.ok(ApiResponse.success(distribution));56    }57 58    /**59     * Get average resolution times by category60     */61    @GetMapping("/resolution-times")62    public ResponseEntity<ApiResponse<Map<String, Double>>> getResolutionTimes() {63        Map<String, Double> times = analyticsService.getResolutionTimes();64        return ResponseEntity.ok(ApiResponse.success(times));65    }66 67    /**68     * Get hotspot data for heatmap69     */70    @GetMapping("/hotspots")71    public ResponseEntity<ApiResponse<List<AnalyticsResponse.HotspotData>>> getHotspots() {72        List<AnalyticsResponse.HotspotData> hotspots = analyticsService.getHotspotData();73        return ResponseEntity.ok(ApiResponse.success(hotspots));74    }75}76