package com.healthcare.ohctech.service.impl; import com.healthcare.ohctech.dto.AmbulanceDetailsNewDto; import com.healthcare.ohctech.entity.AmbulanceDetailsNew; import com.healthcare.ohctech.repository.AmbulanceDetailsNewRepo; import com.healthcare.ohctech.repository.OhcTypeRepo; import com.healthcare.ohctech.repository.AmbulanceCategoryRepo; import com.healthcare.ohctech.service.AmbulanceDetailsNewService; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service public class AmbulanceDetailsNewServiceImpl implements AmbulanceDetailsNewService { private final AmbulanceDetailsNewRepo ambulanceDetailsNewRepo; private final OhcTypeRepo ohcTypeRepo; private final AmbulanceCategoryRepo ambulanceCategoryRepo; public AmbulanceDetailsNewServiceImpl(AmbulanceDetailsNewRepo ambulanceDetailsNewRepo, OhcTypeRepo ohcTypeRepo, AmbulanceCategoryRepo ambulanceCategoryRepo) { this.ambulanceDetailsNewRepo = ambulanceDetailsNewRepo; this.ohcTypeRepo = ohcTypeRepo; this.ambulanceCategoryRepo = ambulanceCategoryRepo; } @Override public AmbulanceDetailsNew getAmbulanceDetailsById(Long id) { return ambulanceDetailsNewRepo.findById(id) .orElseThrow(() -> new RuntimeException("Ambulance not found for ID: " + id)); } @Override public Page getAllAmbulanceDetails(Pageable pageable) { return ambulanceDetailsNewRepo.findAll(pageable); } @Override public void addAmbulanceDetails(List ambulanceDetailsNewDtos, Long userId) { List ambulanceDetailsNews = new ArrayList<>(); for (AmbulanceDetailsNewDto dto : ambulanceDetailsNewDtos) { AmbulanceDetailsNew ambulanceDetailsNew = convertToEntity(new AmbulanceDetailsNew(), dto); ambulanceDetailsNew.setModifiedBy(userId); ambulanceDetailsNews.add(ambulanceDetailsNew); } ambulanceDetailsNewRepo.saveAll(ambulanceDetailsNews); } @Override public void updateAmbulanceDetails(AmbulanceDetailsNewDto ambulanceDetailsNewDto, Long userId) { AmbulanceDetailsNew ambulanceDetailsNew = ambulanceDetailsNewRepo.findById(ambulanceDetailsNewDto.id()) .orElseThrow(() -> new RuntimeException("AmbulanceDetailsNew not found with ID: " + ambulanceDetailsNewDto.id())); ambulanceDetailsNew.setModifiedBy(userId); ambulanceDetailsNewRepo.save(convertToEntity(ambulanceDetailsNew, ambulanceDetailsNewDto)); } @Override public void deleteAmbulanceDetails(Long id) { ambulanceDetailsNewRepo.deleteById(id); } private AmbulanceDetailsNew convertToEntity(AmbulanceDetailsNew ambulanceDetailsNew, AmbulanceDetailsNewDto ambulanceDetailsNewDto) { ambulanceDetailsNew.setAmbulanceName(ambulanceDetailsNewDto.ambulanceName()); ambulanceDetailsNew.setAmbulanceNumber(ambulanceDetailsNewDto.ambulanceNumber()); ambulanceDetailsNew.setOhcType(ohcTypeRepo.findById(ambulanceDetailsNewDto.ohcTypeId()) .orElseThrow(() -> new RuntimeException("OhcType not found with ID: " + ambulanceDetailsNewDto.ohcTypeId()))); ambulanceDetailsNew.setAmbulanceCategory(ambulanceCategoryRepo.findById(ambulanceDetailsNewDto.ambulanceCategoryId()) .orElseThrow(() -> new RuntimeException("AmbulanceCategory not found with ID: " + ambulanceDetailsNewDto.ambulanceCategoryId()))); return ambulanceDetailsNew; } }