package com.sn.sowsysrestapi.api.converter;

import com.sn.sowsysrestapi.api.dto.SuggestionDTO;
import com.sn.sowsysrestapi.api.dto.input.SuggestionInputDTO;
import com.sn.sowsysrestapi.domain.entity.Report;
import com.sn.sowsysrestapi.domain.entity.Suggestion;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

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

@Component
public class SuggestionConverter implements Converter<Suggestion, SuggestionDTO, SuggestionInputDTO>{

    @Autowired
    private ModelMapper modelMapper;

    @Override
    public Suggestion toEntity(SuggestionInputDTO suggestionInputDTO) {

        return modelMapper.map(suggestionInputDTO, Suggestion.class);
    }

    @Override
    public SuggestionDTO toDto(Suggestion suggestion) {

        return modelMapper.map(suggestion, SuggestionDTO.class);
    }

    @Override
    public List<SuggestionDTO> toCollectionDTO(List<Suggestion> suggestionList) {

        return suggestionList.stream()
                .map(suggestion -> toDto(suggestion))
                .collect(Collectors.toList());
    }

    public void copyToEntity(SuggestionInputDTO suggestionInputDTO, Suggestion suggestion) {

        suggestion.setReport(new Report());

        modelMapper.map(suggestionInputDTO, suggestion);
    }

}
