CoolFace
Apppublic

sakthivikram/geo-location

sourceHugging Faceupdated 5mo agoView on Hugging Face
0likes
DepartmentController.java72 linesDownload Raw Back to controller
1package com.georeport.controller;2 3import com.georeport.dto.ApiResponse;4import com.georeport.dto.IssueResponse;5import com.georeport.dto.UpdateStatusRequest;6import com.georeport.entity.User;7import com.georeport.service.AuthService;8import com.georeport.service.IssueService;9import jakarta.validation.Valid;10import org.springframework.beans.factory.annotation.Autowired;11import org.springframework.http.ResponseEntity;12import org.springframework.security.access.prepost.PreAuthorize;13import org.springframework.web.bind.annotation.*;14 15import java.util.List;16import java.util.Map;17 18/**19 * REST Controller for department staff operations.20 * Each department sees ONLY their own complaints.21 * Accessible to users with ROLE_ADMIN or ROLE_DEPARTMENT.22 */23@RestController24@RequestMapping("/api/department")25@CrossOrigin(origins = "*")26public class DepartmentController {27 28    @Autowired29    private IssueService issueService;30 31    @Autowired32    private AuthService authService;33 34    /**35     * Get complaints for a specific department.36     * Filters issues strictly by department name.37     * GET /api/department/issues?dept=Road+Department38     */39    @GetMapping("/issues")40    @PreAuthorize("hasAnyRole('ADMIN', 'DEPARTMENT')")41    public ResponseEntity<ApiResponse<List<IssueResponse>>> getIssuesByDepartment(42            @RequestParam String dept) {43        List<IssueResponse> issues = issueService.getIssuesByDepartment(dept);44        return ResponseEntity.ok(ApiResponse.success(issues));45    }46 47    /**48     * Update issue status (by department staff).49     * PUT /api/department/issues/{id}/status50     */51    @PutMapping("/issues/{id}/status")52    @PreAuthorize("hasAnyRole('ADMIN', 'DEPARTMENT')")53    public ResponseEntity<ApiResponse<IssueResponse>> updateIssueStatus(54            @PathVariable Long id,55            @Valid @RequestBody UpdateStatusRequest request) {56        User currentUser = authService.getCurrentUser();57        IssueResponse response = issueService.updateIssueStatus(id, request, currentUser);58        return ResponseEntity.ok(ApiResponse.success("Status updated successfully", response));59    }60 61    /**62     * Get complaint counts per department (routing stats overview).63     * GET /api/department/stats64     */65    @GetMapping("/stats")66    @PreAuthorize("hasAnyRole('ADMIN', 'DEPARTMENT')")67    public ResponseEntity<ApiResponse<Map<String, Long>>> getDepartmentStats() {68        Map<String, Long> stats = issueService.getDepartmentStats();69        return ResponseEntity.ok(ApiResponse.success(stats));70    }71}72