package it.micegroup.gestioneferie.pianificazioneferie.config;

import org.modelmapper.ModelMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.modelmapper.convention.MatchingStrategies;

import it.micegroup.gestioneferie.libs.converter.BeanConverter;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DpianiFerieDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DpianiFerie;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DstatiPianoFerieDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiPianoFerie;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DrichiesteApprovazPfDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DrichiesteApprovazPf;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DstatiRichApprovPfDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiRichApprovPf;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DammtiPianiFerieDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DammtiPianiFerie;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DmotivazioniAlertPfDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DmotivazioniAlertPf;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DsollecitiPfDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DsollecitiPf;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DrichAdesionePfDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DrichAdesionePf;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DstatiRichAdesionePfDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiRichAdesionePf;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DesitiRichAdesionePfDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DesitiRichAdesionePf;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DstatiAdesionePfDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiAdesionePf;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DpianificFerieAmmtoDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DpianificFerieAmmto;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DstatiPianificFerieDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiPianificFerie;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DrichPianifFerieAmmtoDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DrichPianifFerieAmmto;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DperiodiAmmtoPfDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DperiodiAmmtoPf;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DstatiRichiestaPfAmmtoDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiRichiestaPfAmmto;

@Configuration
public class MapperConfig {
	@Bean
	public ModelMapper modelMapper() {
		ModelMapper result = new ModelMapper();
		result.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
		result.addConverter(new BeanConverter<DpianiFerieDto, DpianiFerie>());
		result.addConverter(new BeanConverter<DpianiFerie, DpianiFerieDto>());
		result.addConverter(new BeanConverter<DstatiPianoFerieDto, DstatiPianoFerie>());
		result.addConverter(new BeanConverter<DstatiPianoFerie, DstatiPianoFerieDto>());
		result.addConverter(new BeanConverter<DrichiesteApprovazPfDto, DrichiesteApprovazPf>());
		result.addConverter(new BeanConverter<DrichiesteApprovazPf, DrichiesteApprovazPfDto>());
		result.addConverter(new BeanConverter<DstatiRichApprovPfDto, DstatiRichApprovPf>());
		result.addConverter(new BeanConverter<DstatiRichApprovPf, DstatiRichApprovPfDto>());
		result.addConverter(new BeanConverter<DammtiPianiFerieDto, DammtiPianiFerie>());
		result.addConverter(new BeanConverter<DammtiPianiFerie, DammtiPianiFerieDto>());
		result.addConverter(new BeanConverter<DmotivazioniAlertPfDto, DmotivazioniAlertPf>());
		result.addConverter(new BeanConverter<DmotivazioniAlertPf, DmotivazioniAlertPfDto>());
		result.addConverter(new BeanConverter<DsollecitiPfDto, DsollecitiPf>());
		result.addConverter(new BeanConverter<DsollecitiPf, DsollecitiPfDto>());
		result.addConverter(new BeanConverter<DrichAdesionePfDto, DrichAdesionePf>());
		result.addConverter(new BeanConverter<DrichAdesionePf, DrichAdesionePfDto>());
		result.addConverter(new BeanConverter<DstatiRichAdesionePfDto, DstatiRichAdesionePf>());
		result.addConverter(new BeanConverter<DstatiRichAdesionePf, DstatiRichAdesionePfDto>());
		result.addConverter(new BeanConverter<DesitiRichAdesionePfDto, DesitiRichAdesionePf>());
		result.addConverter(new BeanConverter<DesitiRichAdesionePf, DesitiRichAdesionePfDto>());
		result.addConverter(new BeanConverter<DstatiAdesionePfDto, DstatiAdesionePf>());
		result.addConverter(new BeanConverter<DstatiAdesionePf, DstatiAdesionePfDto>());
		result.addConverter(new BeanConverter<DpianificFerieAmmtoDto, DpianificFerieAmmto>());
		result.addConverter(new BeanConverter<DpianificFerieAmmto, DpianificFerieAmmtoDto>());
		result.addConverter(new BeanConverter<DstatiPianificFerieDto, DstatiPianificFerie>());
		result.addConverter(new BeanConverter<DstatiPianificFerie, DstatiPianificFerieDto>());
		result.addConverter(new BeanConverter<DrichPianifFerieAmmtoDto, DrichPianifFerieAmmto>());
		result.addConverter(new BeanConverter<DrichPianifFerieAmmto, DrichPianifFerieAmmtoDto>());
		result.addConverter(new BeanConverter<DperiodiAmmtoPfDto, DperiodiAmmtoPf>());
		result.addConverter(new BeanConverter<DperiodiAmmtoPf, DperiodiAmmtoPfDto>());
		result.addConverter(new BeanConverter<DstatiRichiestaPfAmmtoDto, DstatiRichiestaPfAmmto>());
		result.addConverter(new BeanConverter<DstatiRichiestaPfAmmto, DstatiRichiestaPfAmmtoDto>());
		return result;
	}
}

