package com.healthcare.ohctech.controller; import com.healthcare.ohctech.dto.BodyMeasurementMasterDto; import com.healthcare.ohctech.entity.BodyMeasurementMaster; import com.healthcare.ohctech.service.impl.BodyMeasurementMasterServiceImpl; 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("/measurements") public class BodyMeasurementMasterController { @Autowired private BodyMeasurementMasterServiceImpl measurementServiceImpl; @GetMapping("/{measurementId}") public ResponseEntity getMeasurementById(@PathVariable Long measurementId) { BodyMeasurementMaster measurement = measurementServiceImpl.getMeasurementById(measurementId); return new ResponseEntity<>(measurement, HttpStatus.OK); } @GetMapping public ResponseEntity getAllMeasurements(@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 measurementPage = measurementServiceImpl.getAllMeasurements(pageable); Map response = PaginationUtil.getPageResponse(measurementPage); return new ResponseEntity<>(response, HttpStatus.OK); } @PostMapping public ResponseEntity addMeasurement(@Valid @RequestBody BodyMeasurementMasterDto measurementDto) { measurementServiceImpl.addMeasurement(measurementDto); return new ResponseEntity<>(HttpStatus.CREATED); } @PutMapping("/{measurementId}") public ResponseEntity updateMeasurement(@Valid @RequestBody BodyMeasurementMasterDto measurementDto) { measurementServiceImpl.updateMeasurement(measurementDto); return new ResponseEntity<>(HttpStatus.OK); } @DeleteMapping("/{measurementId}") public ResponseEntity deleteMeasurement(@PathVariable Long measurementId) { measurementServiceImpl.deleteMeasurement(measurementId); return new ResponseEntity<>(HttpStatus.OK); } }