ohctechv3/.svn/pristine/0c/0c9aa93ef98c676dcf1202fbd3d60b980e943e0c.svn-base
2024-10-28 15:03:36 +05:30

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;
}
}