package com.progetto.VEBS.mapper;

import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.io.ParseException;
import org.locationtech.jts.io.WKTReader;
import org.mapstruct.Mapper;

import com.progetto.VEBS.model.dto.IngressoAreaVerdeDTO;
import com.progetto.VEBS.model.entity.Ingresso;

@Mapper(componentModel = "spring")
public interface IngressoAreaVerdeMapper {
	
	default IngressoAreaVerdeDTO toDTO(Ingresso entity) {
		if ( entity == null ) {
            return null;
        }
		IngressoAreaVerdeDTO ingressoAreaVerdeDTO = new IngressoAreaVerdeDTO();
		ingressoAreaVerdeDTO.setId(entity.getId());
		ingressoAreaVerdeDTO.setNome(entity.getNome());
		ingressoAreaVerdeDTO.setWKTGeometry(entity.getGeometry().toText());
		ingressoAreaVerdeDTO.setAreaVerde(entity.getAreaVerde());
        return ingressoAreaVerdeDTO;
	}

	
	default Ingresso toEntity(IngressoAreaVerdeDTO dto) {
		if ( dto == null ) {
            return null;
        }
		
		Ingresso ingressoAreaVerde = new Ingresso();
		
		WKTReader reader = new WKTReader();
		Geometry geom;
		try {
			geom = reader.read(dto.getWKTGeometry());
			ingressoAreaVerde.setGeometry(geom);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		ingressoAreaVerde.setId(dto.getId());
		ingressoAreaVerde.setNome(dto.getNome());
		ingressoAreaVerde.setAreaVerde(dto.getAreaVerde());
        return ingressoAreaVerde;
	}

}
