package com.healthcare.ohctech.controller; import com.healthcare.ohctech.dto.CheckupParameterGroupDto; import com.healthcare.ohctech.entity.CheckupParameterGroup; import com.healthcare.ohctech.service.impl.AuthServiceImpl; import com.healthcare.ohctech.service.impl.CheckupParameterGroupServiceImpl; 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("/checkup-parameter-groups") public class CheckupParameterGroupController { @Autowired private CheckupParameterGroupServiceImpl checkupParameterGroupServiceImpl; @Autowired private AuthServiceImpl authServiceImpl; @GetMapping("/{groupId}") public ResponseEntity getCheckupParameterGroupById(@PathVariable Long groupId) { CheckupParameterGroup group = checkupParameterGroupServiceImpl.getCheckupParameterGroupById(groupId); CheckupParameterGroupDto dto = new CheckupParameterGroupDto( group.getId(), group.getGroupNo(), group.getCheckupFormSection().getId(), group.getGroupTitle(), group.getModifiedBy(), group.getLastModified() ); return new ResponseEntity<>(dto, HttpStatus.OK); } @GetMapping public ResponseEntity getAllCheckupParameterGroups(@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 groupPage = checkupParameterGroupServiceImpl.getAllCheckupParameterGroups(pageable); Page dtoPage = groupPage.map(group -> new CheckupParameterGroupDto( group.getId(), group.getGroupNo(), group.getCheckupFormSection().getId(), group.getGroupTitle(), group.getModifiedBy(), group.getLastModified() )); Map response = PaginationUtil.getPageResponse(dtoPage); return new ResponseEntity<>(response, HttpStatus.OK); } @PostMapping public ResponseEntity addCheckupParameterGroup(@Valid @RequestBody CheckupParameterGroupDto dto) { Long userId = authServiceImpl.getCurrentUserId(); checkupParameterGroupServiceImpl.addCheckupParameterGroup(dto, userId); return new ResponseEntity<>(HttpStatus.CREATED); } @PutMapping("/{groupId}") public ResponseEntity updateCheckupParameterGroup(@Valid @RequestBody CheckupParameterGroupDto dto) { Long userId = authServiceImpl.getCurrentUserId(); checkupParameterGroupServiceImpl.updateCheckupParameterGroup(dto, userId); return new ResponseEntity<>(HttpStatus.OK); } @DeleteMapping("/{groupId}") public ResponseEntity deleteCheckupParameterGroup(@PathVariable Long groupId) { checkupParameterGroupServiceImpl.deleteCheckupParameterGroup(groupId); return new ResponseEntity<>(HttpStatus.OK); } }