package com.sn.sowsysrestapi.api.converter;

import com.sn.sowsysrestapi.api.dto.ConcernDTO;
import com.sn.sowsysrestapi.api.dto.input.ConcernInputDTO;
import com.sn.sowsysrestapi.domain.entity.Concern;
import com.sn.sowsysrestapi.domain.entity.Report;
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 ConcernConverter implements Converter<Concern, ConcernDTO, ConcernInputDTO>{

    @Autowired
    private ModelMapper modelMapper;

    @Override
    public Concern toEntity(ConcernInputDTO concernInputDTO) {

        return modelMapper.map(concernInputDTO, Concern.class);
    }

    @Override
    public ConcernDTO toDto(Concern concern) {

        return modelMapper.map(concern, ConcernDTO.class);
    }

    @Override
    public List<ConcernDTO> toCollectionDTO(List<Concern> concernList) {

        return concernList.stream()
                .map(concern -> toDto(concern))
                .collect(Collectors.toList());
    }

    public void copyToEntity(ConcernInputDTO concernInputDTO, Concern concern) {

        concern.setReport(new Report());

        modelMapper.map(concernInputDTO, concern);
    }

}
