package com.healthcare.ohctech.service.impl; import com.healthcare.ohctech.dto.TrainingScheduleDto; import com.healthcare.ohctech.entity.TrainingMaster; import com.healthcare.ohctech.entity.TrainingSchedule; import com.healthcare.ohctech.repository.TrainingMasterRepo; import com.healthcare.ohctech.repository.TrainingScheduleRepo; import com.healthcare.ohctech.service.TrainingScheduleService; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @Service public class TrainingScheduleServiceImpl implements TrainingScheduleService { private final TrainingScheduleRepo trainingScheduleRepo; private final TrainingMasterRepo trainingMasterRepo; public TrainingScheduleServiceImpl(TrainingScheduleRepo trainingScheduleRepo, TrainingMasterRepo trainingMasterRepo) { this.trainingScheduleRepo = trainingScheduleRepo; this.trainingMasterRepo = trainingMasterRepo; } @Override public TrainingSchedule getTrainingScheduleById(Long scheduleId) { return trainingScheduleRepo.findById(scheduleId) .orElseThrow(() -> new RuntimeException("Training Schedule not found for ID: " + scheduleId)); } @Override public Page getAllTrainingSchedules(Pageable pageable) { return trainingScheduleRepo.findAll(pageable); } @Override public void addTrainingSchedule(TrainingScheduleDto trainingScheduleDto, Long userId) { TrainingSchedule trainingSchedule = convertToEntity(new TrainingSchedule(), trainingScheduleDto); trainingSchedule.setModifiedBy(userId); trainingScheduleRepo.save(trainingSchedule); } @Override public void updateTrainingSchedule(TrainingScheduleDto trainingScheduleDto, Long userId) { Long scheduleId = trainingScheduleDto.id(); TrainingSchedule trainingSchedule = trainingScheduleRepo.findById(scheduleId) .orElseThrow(() -> new RuntimeException("Training Schedule not found for ID: " + scheduleId)); convertToEntity(trainingSchedule, trainingScheduleDto); trainingSchedule.setModifiedBy(userId); trainingScheduleRepo.save(trainingSchedule); } @Override public void deleteTrainingSchedule(Long scheduleId) { TrainingSchedule trainingSchedule = trainingScheduleRepo.findById(scheduleId) .orElseThrow(() -> new RuntimeException("Training Schedule not found for ID: " + scheduleId)); trainingScheduleRepo.delete(trainingSchedule); } private TrainingSchedule convertToEntity(TrainingSchedule trainingSchedule, TrainingScheduleDto trainingScheduleDto) { trainingSchedule.setFromDate(trainingScheduleDto.fromDate()); trainingSchedule.setToDate(trainingScheduleDto.toDate()); trainingSchedule.setTrainerName(trainingScheduleDto.trainerName()); trainingSchedule.setLocation(trainingScheduleDto.location()); trainingSchedule.setRemarks(trainingScheduleDto.remarks()); trainingSchedule.setStatus(trainingScheduleDto.status()); TrainingMaster trainingMaster = trainingMasterRepo.findById(trainingScheduleDto.trainingId()) .orElseThrow(() -> new RuntimeException("Training Master not found for ID: " + trainingScheduleDto.trainingId())); trainingSchedule.setTrainingMaster(trainingMaster); return trainingSchedule; } }