package com.sn.sowsysrestapi.api.converter;

import com.sn.sowsysrestapi.api.dto.CompletedTaskDTO;
import com.sn.sowsysrestapi.api.dto.input.CompletedTaskInputDTO;
import com.sn.sowsysrestapi.domain.entity.CompletedTask;
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 CompletedTaskConverter implements Converter<CompletedTask, CompletedTaskDTO, CompletedTaskInputDTO> {

    @Autowired
    private ModelMapper modelMapper;

    @Override
    public CompletedTask toEntity(CompletedTaskInputDTO completedTaskInputDTO) {
        return modelMapper.map(completedTaskInputDTO, CompletedTask.class);
    }

    @Override
    public CompletedTaskDTO toDto(CompletedTask completedTask) {
        return modelMapper.map(completedTask, CompletedTaskDTO.class);
    }

    @Override
    public List<CompletedTaskDTO> toCollectionDTO(List<CompletedTask> completedTaskList) {
        return completedTaskList.stream()
                .map(completedTask -> toDto(completedTask))
                .collect(Collectors.toList());
    }

    public void copyToEntity(CompletedTaskInputDTO completedTaskInputDTO, CompletedTask completedTask) {

        completedTask.setReport(new Report());

        modelMapper.map(completedTaskInputDTO, completedTask);

    }

}
