package com.hpay.hpay_mobile_api.services;

import com.hpay.hpay_mobile_api.DTO.ParraineeDTO;
import com.hpay.hpay_mobile_api.entities.Client;
import com.hpay.hpay_mobile_api.repositories.ParrainageRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.hpay.hpay_mobile_api.entities.Parrainage;
import java.util.List;
import java.util.stream.Collectors;

@Service
public class ParrainageService {

    @Autowired
    private ParrainageRepository parrainageRepository;

    public List<Parrainage> getAllParrainages() {
        return parrainageRepository.findAll();
    }

    public Parrainage saveParrainage(Parrainage parrainage) {
        return parrainageRepository.save(parrainage);
    }

    public Parrainage getParrainageById(Long id) {
        return parrainageRepository.findById(id).orElse(null);
    }

    public void deleteParrainage(Long id) {
        parrainageRepository.deleteById(id);
    }

    public List<Parrainage> getParrainagesByParrainId(Long idParrain) {
        return parrainageRepository.findByParrainId(idParrain);
    }

    public List<ParraineeDTO> getParraineesByParrainId(Long idParrain) {

        List<Parrainage> parrainages = parrainageRepository.findByParrainId(idParrain);
        return parrainages.stream()
                .map(parrainage -> {
                    Client parrainee = parrainage.getParrainee();
                    return new ParraineeDTO(
                            parrainee.getId(),
                            parrainee.getNom(),
                            parrainee.getPrenoms(),
                            parrainee.getTelephone(),
                            parrainee.getPhotoClient()
                    );
                })
                .collect(Collectors.toList());
    }
}
