94 lines
3.5 KiB
Plaintext
94 lines
3.5 KiB
Plaintext
package com.healthcare.ohctech.service.impl;
|
|
|
|
import com.healthcare.ohctech.dto.FirstAidBoxDto;
|
|
import com.healthcare.ohctech.entity.FirstAidBox;
|
|
import com.healthcare.ohctech.entity.Patient;
|
|
import com.healthcare.ohctech.repository.FirstAidBoxRepo;
|
|
import com.healthcare.ohctech.repository.PatientRepo;
|
|
import com.healthcare.ohctech.service.FirstAidBoxService;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.Pageable;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
@Service
|
|
public class FirstAidBoxServiceImpl implements FirstAidBoxService {
|
|
|
|
private final FirstAidBoxRepo firstAidBoxRepo;
|
|
private final PatientRepo patientRepo;
|
|
|
|
@Autowired
|
|
public FirstAidBoxServiceImpl(FirstAidBoxRepo firstAidBoxRepo, PatientRepo patientRepo) {
|
|
this.firstAidBoxRepo = firstAidBoxRepo;
|
|
this.patientRepo = patientRepo;
|
|
}
|
|
|
|
@Override
|
|
public FirstAidBox getFirstAidBoxById(Long boxId) {
|
|
return firstAidBoxRepo.findById(boxId)
|
|
.orElseThrow(() -> new RuntimeException("First Aid Box not found with ID: " + boxId));
|
|
}
|
|
|
|
@Override
|
|
public Page<FirstAidBox> getAllFirstAidBoxes(Pageable pageable) {
|
|
return firstAidBoxRepo.findAll(pageable);
|
|
}
|
|
|
|
@Override
|
|
public void addFirstAidBox(FirstAidBoxDto firstAidBoxDto, Long userId) {
|
|
validateFirstAiderIds(firstAidBoxDto.firstAiderIds());
|
|
FirstAidBox firstAidBox = convertToEntity(new FirstAidBox(), firstAidBoxDto);
|
|
firstAidBox.setModifiedBy(userId);
|
|
firstAidBoxRepo.save(firstAidBox);
|
|
}
|
|
|
|
@Override
|
|
public void updateFirstAidBox(FirstAidBoxDto firstAidBoxDto, Long userId) {
|
|
validateFirstAiderIds(firstAidBoxDto.firstAiderIds());
|
|
Long boxId = firstAidBoxDto.id();
|
|
FirstAidBox existingFirstAidBox = firstAidBoxRepo.findById(boxId)
|
|
.orElseThrow(() -> new RuntimeException("First Aid Box not found with ID: " + boxId));
|
|
|
|
FirstAidBox updatedFirstAidBox = convertToEntity(existingFirstAidBox, firstAidBoxDto);
|
|
updatedFirstAidBox.setModifiedBy(userId);
|
|
firstAidBoxRepo.save(updatedFirstAidBox);
|
|
}
|
|
|
|
@Override
|
|
public void deleteFirstAidBox(Long boxId) {
|
|
FirstAidBox firstAidBox = firstAidBoxRepo.findById(boxId)
|
|
.orElseThrow(() -> new RuntimeException("First Aid Box not found with ID: " + boxId));
|
|
firstAidBoxRepo.delete(firstAidBox);
|
|
}
|
|
|
|
private void validateFirstAiderIds(List<Long> firstAiderIds) {
|
|
if (firstAiderIds != null) {
|
|
for (Long firstAiderId : firstAiderIds) {
|
|
if (!patientRepo.existsById(firstAiderId)) {
|
|
throw new RuntimeException("Patient not found for ID: " + firstAiderId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private FirstAidBox convertToEntity(FirstAidBox firstAidBox, FirstAidBoxDto firstAidBoxDto) {
|
|
firstAidBox.setBoxName(firstAidBoxDto.boxName());
|
|
firstAidBox.setBoxCode(firstAidBoxDto.boxCode());
|
|
firstAidBox.setBoxLoc(firstAidBoxDto.boxLoc());
|
|
|
|
if (firstAidBoxDto.firstAiderIds() != null) {
|
|
String firstAiderIds = firstAidBoxDto.firstAiderIds().stream()
|
|
.map(String::valueOf)
|
|
.collect(Collectors.joining(","));
|
|
firstAidBox.setFirstAiderIds(firstAiderIds);
|
|
} else {
|
|
firstAidBox.setFirstAiderIds("");
|
|
}
|
|
|
|
return firstAidBox;
|
|
}
|
|
}
|