package com.healthcare.ohctech.service.impl; import com.healthcare.ohctech.dto.BusinessReportsFilterMasterDto; import com.healthcare.ohctech.entity.AddFilterMaster; import com.healthcare.ohctech.entity.BusinessReportsFilterMaster; import com.healthcare.ohctech.entity.ReportMaster; import com.healthcare.ohctech.repository.*; import com.healthcare.ohctech.service.BusinessReportsFilterMasterService; 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.Optional; @Service public class BusinessReportsFilterMasterServiceImpl implements BusinessReportsFilterMasterService { private BusinessReportsFilterMasterRepo businessReportsFilterMasterRepo; private final ReportMasterRepo reportMasterRepo; private final AddFilterMasterRepo addFilterMasterRepo; public BusinessReportsFilterMasterServiceImpl(BusinessReportsFilterMasterRepo businessReportsFilterMasterRepo,ReportMasterRepo reportMasterRepo,AddFilterMasterRepo addFilterMasterRepo) { this.businessReportsFilterMasterRepo = businessReportsFilterMasterRepo; this.reportMasterRepo = reportMasterRepo; this.addFilterMasterRepo = addFilterMasterRepo; } @Override public BusinessReportsFilterMaster getBusinessReportsFilterMasterById(Long id) { Optional optional = businessReportsFilterMasterRepo.findById(id); return optional.orElse(null); } @Override public Page getAllBusinessReportsFilterMasters(Pageable pageable) { return businessReportsFilterMasterRepo.findAll(pageable); } @Override public void addBusinessReportsFilterMaster(BusinessReportsFilterMasterDto businessReportsFilterMasterDto) { BusinessReportsFilterMaster businessReportsFilterMaster = new BusinessReportsFilterMaster(); ReportMaster reportMaster = reportMasterRepo.findById(businessReportsFilterMasterDto.filterId()) .orElseThrow(() -> new RuntimeException("Report not found for ID "+ businessReportsFilterMasterDto.reportId())); businessReportsFilterMaster.setReportMaster(reportMaster); AddFilterMaster addFilterMaster = addFilterMasterRepo.findById(businessReportsFilterMasterDto.filterId()) .orElseThrow(() -> new RuntimeException("FIlter not found for ID "+ businessReportsFilterMasterDto.filterId())); businessReportsFilterMaster.setAddFilterMaster(addFilterMaster); businessReportsFilterMaster.setIsPatientSpecific(businessReportsFilterMasterDto.isPatientSpecific()); businessReportsFilterMasterRepo.save(businessReportsFilterMaster); } @Override public BusinessReportsFilterMaster updateBusinessReportsFilterMaster(BusinessReportsFilterMasterDto businessReportsFilterMasterDto) { Optional optional = businessReportsFilterMasterRepo.findById(businessReportsFilterMasterDto.id()); if (optional.isPresent()) { BusinessReportsFilterMaster businessReportsFilterMaster = optional.get(); ReportMaster reportMaster = reportMasterRepo.findById(businessReportsFilterMasterDto.filterId()) .orElseThrow(() -> new RuntimeException("Report not found for ID "+ businessReportsFilterMasterDto.reportId())); businessReportsFilterMaster.setReportMaster(reportMaster); AddFilterMaster addFilterMaster = addFilterMasterRepo.findById(businessReportsFilterMasterDto.filterId()) .orElseThrow(() -> new RuntimeException("FIlter not found for ID "+ businessReportsFilterMasterDto.filterId())); businessReportsFilterMaster.setAddFilterMaster(addFilterMaster); businessReportsFilterMaster.setIsPatientSpecific(businessReportsFilterMasterDto.isPatientSpecific()); return businessReportsFilterMasterRepo.save(businessReportsFilterMaster); } else { throw new RuntimeException("BusinessReportsFilterMaster not found with ID: " + businessReportsFilterMasterDto.id()); } } @Override public void deleteBusinessReportsFilterMaster(Long id) { Optional optional = businessReportsFilterMasterRepo.findById(id); if (optional.isPresent()) { businessReportsFilterMasterRepo.delete(optional.get()); } else { throw new RuntimeException("BusinessReportsFilterMaster not found with ID: " + id); } } }