package com.healthcare.ohctech.controller; import com.healthcare.ohctech.dto.FirstAidBoxDto; import com.healthcare.ohctech.entity.FirstAidBox; import com.healthcare.ohctech.service.impl.AuthServiceImpl; import com.healthcare.ohctech.service.impl.FirstAidBoxServiceImpl; 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.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @RestController @RequestMapping("/first-aid-boxes") public class FirstAidBoxController { @Autowired private FirstAidBoxServiceImpl firstAidBoxServiceImpl; @Autowired private AuthServiceImpl authServiceImpl; @GetMapping("/{boxId}") public ResponseEntity getFirstAidBoxById(@PathVariable Long boxId) { FirstAidBox firstAidBox = firstAidBoxServiceImpl.getFirstAidBoxById(boxId); List firstAiderIds = Arrays.stream(firstAidBox.getFirstAiderIds().split(",")) .map(Long::valueOf) .collect(Collectors.toList()); FirstAidBoxDto dto = new FirstAidBoxDto( firstAidBox.getId(), firstAidBox.getBoxName(), firstAidBox.getBoxCode(), firstAidBox.getBoxLoc(), firstAiderIds, firstAidBox.getModifiedBy(), firstAidBox.getLastModified() ); return new ResponseEntity<>(dto, HttpStatus.OK); } @GetMapping public ResponseEntity getAllFirstAidBoxes(@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 firstAidBoxPage = firstAidBoxServiceImpl.getAllFirstAidBoxes(pageable); Page dtoPage = firstAidBoxPage.map(firstAidBox -> { List firstAiderIds = Arrays.stream(firstAidBox.getFirstAiderIds().split(",")) .map(Long::valueOf) .collect(Collectors.toList()); return new FirstAidBoxDto( firstAidBox.getId(), firstAidBox.getBoxName(), firstAidBox.getBoxCode(), firstAidBox.getBoxLoc(), firstAiderIds, firstAidBox.getModifiedBy(), firstAidBox.getLastModified() ); }); Map response = PaginationUtil.getPageResponse(dtoPage); return new ResponseEntity<>(response, HttpStatus.OK); } @PostMapping public ResponseEntity addFirstAidBox(@Valid @RequestBody FirstAidBoxDto firstAidBoxDto) { Long userId = authServiceImpl.getCurrentUserId(); firstAidBoxServiceImpl.addFirstAidBox(firstAidBoxDto, userId); return new ResponseEntity<>("Saved Successfully", HttpStatus.CREATED); } @PutMapping("/{boxId}") public ResponseEntity updateFirstAidBox(@Valid @RequestBody FirstAidBoxDto firstAidBoxDto) { Long userId = authServiceImpl.getCurrentUserId(); firstAidBoxServiceImpl.updateFirstAidBox(firstAidBoxDto, userId); return new ResponseEntity<>("Updated Successfully", HttpStatus.OK); } @DeleteMapping("/{boxId}") public ResponseEntity deleteFirstAidBox(@PathVariable Long boxId) { firstAidBoxServiceImpl.deleteFirstAidBox(boxId); return new ResponseEntity<>(HttpStatus.OK); } }