Files
bbps-backend/src/main/java/com/billpaymentservice/bbps/controller/ComplainController.java
T
2025-11-14 10:12:00 +05:30

86 lines
4.3 KiB
Java

package com.billpaymentservice.bbps.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.billpaymentservice.bbps.dto.ResponseModel;
import com.billpaymentservice.bbps.dto.request.AllMasterOptionsRequest;
import com.billpaymentservice.bbps.dto.request.CloseComplaintRequest;
import com.billpaymentservice.bbps.dto.request.ComplainStatusRequest;
import com.billpaymentservice.bbps.dto.request.ComplaintRequestDTO;
import com.billpaymentservice.bbps.dto.request.ReOpenComplain;
import com.billpaymentservice.bbps.dto.request.ViewComplainByIdRequest;
import com.billpaymentservice.bbps.service.ComplainService;
@RestController
@RequestMapping("/complaints")
@Validated
@CrossOrigin(origins = "*")
public class ComplainController {
private static final Logger log = LoggerFactory.getLogger(ComplainController.class);
private final ComplainService complainService;
// ✅ Constructor name fixed and variable consistent
public ComplainController(ComplainService complainService) {
this.complainService = complainService;
}
@PostMapping(value = "/addComplain", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ResponseModel> addComplain(@Validated @RequestBody ComplaintRequestDTO complainRequestDTO) {
ResponseModel response = complainService.addComplain(complainRequestDTO);
return ResponseEntity.ok(response);
}
@PostMapping(value = "/checkComplaintStatus", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ResponseModel> getComplaintStatus(@Validated @RequestBody ComplainStatusRequest request) {
log.info("Received complaint status request for complaintId: {}", request.getComplaintId());
ResponseModel response = complainService.getComplaintStatus(request);
return ResponseEntity.ok(response);
}
@PostMapping(value = "/reOpenComplaint", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ResponseModel> reOpenComplaint(@Validated @RequestBody ReOpenComplain request) {
log.info("Received ReOpen Complaint request for complaintId: {}", request.getComplaintId());
ResponseModel response = complainService.reOpenComplaint(request);
return ResponseEntity.ok(response);
}
@PostMapping(value = "/viewComplainsHistory", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ResponseModel> viewComplaintHistory(@Validated @RequestBody ComplainStatusRequest request) {
log.info("Received complaint View Complaint History request for complaintId: {}", request.getComplaintId());
ResponseModel response = complainService.viewComplaintHistory(request);
return ResponseEntity.ok(response);
}
@PostMapping(value = "/closeComplaint", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ResponseModel> closeComplaint(@Validated @RequestBody CloseComplaintRequest request) {
log.info("Received complaint Close Complaint request for complaintId: {}", request.getComplaintId());
ResponseModel response = complainService.closeComplaint(request);
return ResponseEntity.ok(response);
}
@PostMapping("/viewComplaintsById")
public ResponseEntity<ResponseModel> viewComplaintById(@Validated @RequestBody ViewComplainByIdRequest request) {
log.info("Received complaint View Complaint By ID request for complaintId: {}", request.getComplaintId());
ResponseModel response = complainService.viewComplaintById(request);
return ResponseEntity.ok(response);
}
@PostMapping("/allMasterOptions")
public ResponseEntity<ResponseModel> getAllStatuses(@Validated @RequestBody AllMasterOptionsRequest request) {
return ResponseEntity.ok(complainService.getAllActiveStatuses(request));
}
}