package com.healthcare.ohctech.controller; import com.healthcare.ohctech.dto.QuestionaireMasterDto; import com.healthcare.ohctech.entity.QuestionaireMaster; import com.healthcare.ohctech.service.impl.QuestionaireMasterServiceImpl; import com.healthcare.ohctech.util.PaginationUtil; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.Map; @RestController @RequestMapping("/questions") public class QuestionaireMasterController { private final QuestionaireMasterServiceImpl questionaireMasterServiceImpl; @Autowired public QuestionaireMasterController(QuestionaireMasterServiceImpl questionaireMasterServiceImpl) { this.questionaireMasterServiceImpl = questionaireMasterServiceImpl; } @GetMapping("/{questionId}") public ResponseEntity getQuestionById(@PathVariable Long questionId) { QuestionaireMaster question = questionaireMasterServiceImpl.getQuestionById(questionId); if (question != null) { return new ResponseEntity<>(question, HttpStatus.OK); } return new ResponseEntity<>(HttpStatus.NO_CONTENT); } @GetMapping public ResponseEntity getAllQuestions(@RequestParam(required = false) Integer page, @RequestParam(required = false) Integer size, @RequestParam(required = false) String sortBy, @RequestParam(required = false) String sortOrder) { Pageable pageable = PaginationUtil.getPageableWithDefaults(page, size, sortBy, sortOrder); Page questionPage = questionaireMasterServiceImpl.getAllQuestions(pageable); Map response = PaginationUtil.getPageResponse(questionPage); return new ResponseEntity<>(response, HttpStatus.OK); } @PostMapping public ResponseEntity addQuestion(@Valid @RequestBody QuestionaireMasterDto questionaireMasterDto) { questionaireMasterServiceImpl.addQuestion(questionaireMasterDto); return new ResponseEntity<>("Saved Successfully", HttpStatus.CREATED); } @PutMapping("/{questionId}") public ResponseEntity updateQuestion(@Valid @RequestBody QuestionaireMasterDto questionaireMasterDto) { questionaireMasterServiceImpl.updateQuestion(questionaireMasterDto); return new ResponseEntity<>("Updated Successfully", HttpStatus.OK); } @DeleteMapping("/{questionId}") public ResponseEntity deleteQuestion(@PathVariable Long questionId) { questionaireMasterServiceImpl.deleteQuestion(questionId); return new ResponseEntity<>(HttpStatus.OK); } }