PatientService.java

package com.MedilaboSolutions.patient.service;

import com.MedilaboSolutions.patient.model.Patient;
import com.MedilaboSolutions.patient.dto.PatientRequestDto;
import com.MedilaboSolutions.patient.dto.PatientDto;
import com.MedilaboSolutions.patient.exception.ResourceNotFoundException;
import com.MedilaboSolutions.patient.mapper.PatientMapper;
import com.MedilaboSolutions.patient.repository.PatientRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

@RequiredArgsConstructor
@Service
public class PatientService {

    private final PatientRepository patientRepository;
    private final PatientMapper patientMapper;

    public List<PatientDto> findAll() {
        return patientRepository.findAll().stream()
                .map(patientMapper::toPatientDto)
                .toList();
    }

    public PatientDto findById(Long id) {
        return patientRepository.findById(id)
                .map(patientMapper::toPatientDto)
                .orElseThrow(() -> new ResourceNotFoundException("Ressource not found."));
    }

    public PatientDto create(PatientRequestDto patientDto) {
        Patient saved = patientRepository.save(patientMapper.toPatient(patientDto));
        return patientMapper.toPatientDto(saved);
    }

    public PatientDto update(long id, PatientRequestDto patientDto) {
        patientRepository.findById(id)
                .orElseThrow(() -> new ResourceNotFoundException("Ressource not found."));

        Patient patientToUpdate = patientMapper.toPatient(patientDto);
        patientToUpdate.setId(id);

        Patient saved = patientRepository.save(patientToUpdate);
        return patientMapper.toPatientDto(saved);
    }

    public void deleteById(Long id) {
        patientRepository.findById(id)
                .orElseThrow(() -> new ResourceNotFoundException("Ressource not found."));

        patientRepository.deleteById(id);
    }

    public void updateEarlyOnsetMailSent(Long id, boolean mailSent) {
        Patient patient = patientRepository.findById(id)
                .orElseThrow(() -> new ResourceNotFoundException("Ressource not found."));
        patient.setEarlyOnsetMailSent(mailSent);
        patientRepository.save(patient);
    }
}