129 lines
5.4 KiB
Plaintext
129 lines
5.4 KiB
Plaintext
package com.healthcare.ohctech.controller;
|
|
|
|
import com.healthcare.ohctech.dto.GroupItemDto;
|
|
import com.healthcare.ohctech.entity.GroupItem;
|
|
import com.healthcare.ohctech.entity.Item;
|
|
import com.healthcare.ohctech.repository.ItemRepo;
|
|
import com.healthcare.ohctech.service.impl.AuthServiceImpl;
|
|
import com.healthcare.ohctech.service.impl.GroupItemServiceImpl;
|
|
import com.healthcare.ohctech.util.PaginationUtil;
|
|
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.LinkedHashMap;
|
|
import java.util.Map;
|
|
|
|
@RestController
|
|
@RequestMapping("/group-items")
|
|
public class GroupItemController {
|
|
|
|
@Autowired
|
|
private GroupItemServiceImpl groupItemServiceImpl;
|
|
@Autowired
|
|
private AuthServiceImpl authServiceImpl;
|
|
@Autowired
|
|
private ItemRepo itemRepo;
|
|
|
|
@GetMapping("/{groupItemId}")
|
|
public ResponseEntity<?> getGroupItemById(@PathVariable Long groupItemId) {
|
|
GroupItem groupItem = groupItemServiceImpl.getGroupItemById(groupItemId);
|
|
|
|
Map<String, Object> itemDetails = itemRepo.findById(groupItem.getItem().getId())
|
|
.map(item -> {
|
|
Map<String, Object> map = new LinkedHashMap<>();
|
|
map.put("id", item.getId());
|
|
map.put("label", item.getItemName());
|
|
return map;
|
|
})
|
|
.orElseGet(() -> {
|
|
Map<String, Object> map = new LinkedHashMap<>();
|
|
map.put("id", " ");
|
|
map.put("label", " ");
|
|
return map;
|
|
});
|
|
|
|
Map<String, Object> groupDetails = itemRepo.findById(groupItem.getGroup().getId())
|
|
.map(group -> {
|
|
Map<String, Object> map = new LinkedHashMap<>();
|
|
map.put("id", group.getId());
|
|
map.put("label", group.getItemName());
|
|
return map;
|
|
})
|
|
.orElseGet(() -> {
|
|
Map<String, Object> map = new LinkedHashMap<>();
|
|
map.put("id", " ");
|
|
map.put("label", " ");
|
|
return map;
|
|
});
|
|
|
|
Map<String, Object> response = new LinkedHashMap<>();
|
|
response.put("id", groupItem.getId());
|
|
response.put("itemName", itemDetails);
|
|
response.put("groupName", groupDetails);
|
|
response.put("itemType", groupItem.getItemType());
|
|
response.put("quantity", groupItem.getQuantity());
|
|
response.put("cost", groupItem.getCost());
|
|
response.put("modifiedBy", groupItem.getModifiedBy());
|
|
response.put("lastModified", groupItem.getLastModified());
|
|
return new ResponseEntity<>(response, HttpStatus.OK);
|
|
}
|
|
|
|
@GetMapping
|
|
public ResponseEntity<?> getAllGroupItems(@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<GroupItem> groupItemPage = groupItemServiceImpl.getAllGroupItems(pageable);
|
|
|
|
Page<Map<String, Object>> groupItemDtoPage = groupItemPage.map(groupItem -> {
|
|
String itemName = itemRepo.findById(groupItem.getItem().getId())
|
|
.map(Item::getItemName)
|
|
.orElse("Unknown Item");
|
|
|
|
String groupName = itemRepo.findById(groupItem.getGroup().getId())
|
|
.map(Item::getItemName)
|
|
.orElse("Unknown Group");
|
|
|
|
Map<String, Object> map = new LinkedHashMap<>();
|
|
map.put("id", groupItem.getId());
|
|
map.put("itemName", itemName);
|
|
map.put("groupName", groupName);
|
|
map.put("itemType", groupItem.getItemType());
|
|
map.put("quantity", groupItem.getQuantity());
|
|
map.put("cost", groupItem.getCost());
|
|
map.put("modifiedBy", groupItem.getModifiedBy());
|
|
map.put("lastModified", groupItem.getLastModified());
|
|
return map;
|
|
});
|
|
|
|
Map<String, Object> response = PaginationUtil.getPageResponse(groupItemDtoPage);
|
|
return new ResponseEntity<>(response, HttpStatus.OK);
|
|
}
|
|
|
|
@PostMapping
|
|
public ResponseEntity<?> addGroupItem(@RequestBody GroupItemDto groupItemDto) {
|
|
Long userId = authServiceImpl.getCurrentUserId();
|
|
groupItemServiceImpl.addGroupItem(groupItemDto, userId);
|
|
return new ResponseEntity<>(HttpStatus.CREATED);
|
|
}
|
|
|
|
@PutMapping("/{groupItemId}")
|
|
public ResponseEntity<?> updateGroupItem(@PathVariable Long groupItemId,
|
|
@RequestBody GroupItemDto groupItemDto) {
|
|
Long userId = authServiceImpl.getCurrentUserId();
|
|
groupItemServiceImpl.updateGroupItem(groupItemDto, userId);
|
|
return new ResponseEntity<>(HttpStatus.OK);
|
|
}
|
|
|
|
@DeleteMapping("/{groupItemId}")
|
|
public ResponseEntity<?> deleteGroupItem(@PathVariable Long groupItemId) {
|
|
groupItemServiceImpl.deleteGroupItem(groupItemId);
|
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
|
}
|
|
}
|