package com.app.ServicesImpl;

import java.util.List;
import java.util.stream.Collectors;

import javax.persistence.EntityNotFoundException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.app.Dto.SourceCompagneDto;
import com.app.Entity.SourceCompagne;
import com.app.Repository.SourceCompagneRepository;
import com.app.Services.SourceCompagneService;
import com.app.Validations.ObjectsValidator;

@Service
public class SourceCompagneServiceImpl implements SourceCompagneService{
@Autowired
SourceCompagneRepository sourceCompagneRepository;
@Autowired
ObjectsValidator<SourceCompagneDto> x;

		@Override
		public SourceCompagneDto save(SourceCompagneDto dto) {
			// TODO Auto-generated method stub
		SourceCompagne sourceCompagne= SourceCompagneDto.toEntity(dto);

		SourceCompagne sourceCompagnesd = sourceCompagneRepository.save(sourceCompagne);

		return SourceCompagneDto.fromEntity(sourceCompagnesd);

		}

		@Override
		public void delete(Long id) {
			// TODO Auto-generated method stub
			SourceCompagne parcours = sourceCompagneRepository.findById(id).orElseThrow(()->new EntityNotFoundException(id+" not found"));
			sourceCompagneRepository.deleteById(id);

		}
		@Override

		public SourceCompagneDto findById(Long id) {
			// TODO Auto-generated method stub+-+
					return sourceCompagneRepository.findById(id).map(SourceCompagneDto :: fromEntity)
			        		//map:
			                .orElseThrow(() -> new EntityNotFoundException("No parcours was found with the provided ID"));
		}
		@Override

		public List<SourceCompagneDto> findAllSource() {
			// TODO Auto-generated method stub
			 return sourceCompagneRepository.findAll()
		                .stream() // parcour la liste
		                .map(SourceCompagneDto :: fromEntity) // convertion liste
		                .collect(Collectors.toList());
		}

}
