package it.micegroup.gestioneferie.pianificazioneferie.assembler;

import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
import org.springframework.hateoas.CollectionModel;
import org.springframework.hateoas.Link;
import org.springframework.stereotype.Component;

import it.micegroup.gestioneferie.libs.assembler.BaseModelAssembler;
import it.micegroup.gestioneferie.pianificazioneferie.controller.DstatiRichiestaPfAmmtoController;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DstatiRichiestaPfAmmtoDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiRichiestaPfAmmto;

import it.micegroup.gestioneferie.pianificazioneferie.controller.DrichPianifFerieAmmtoController;

@Component
public class DstatiRichiestaPfAmmtoModelAssembler extends
		BaseModelAssembler<DstatiRichiestaPfAmmto, DstatiRichiestaPfAmmtoDto, DstatiRichiestaPfAmmtoController> {

	@Override
	public DstatiRichiestaPfAmmtoDto toModel(DstatiRichiestaPfAmmto dstatiRichiestaPfAmmto) {
		DstatiRichiestaPfAmmtoDto dstatiRichiestaPfAmmtoDto = map(dstatiRichiestaPfAmmto,
				DstatiRichiestaPfAmmtoDto.class, DstatiRichiestaPfAmmtoController.class);

		// SELF LINK
		Link selfLink = convert(linkTo(
				methodOn(DstatiRichiestaPfAmmtoController.class).getByObjectKey(dstatiRichiestaPfAmmto.getObjectKey()))
						.withSelfRel());
		dstatiRichiestaPfAmmtoDto.add(selfLink);

		// PARENT LINKS

		// CHILDREN LINKS
		if (dstatiRichiestaPfAmmto.getTheDrichPianifFerieAmmto() != null) {
			Link drichPianifFerieAmmtoLink = convert(linkTo(methodOn(DrichPianifFerieAmmtoController.class)
					.findByDstatiRichiestaPfAmmto(dstatiRichiestaPfAmmto.getObjectKey(), null))
							.withRel("theDrichPianifFerieAmmto"));
			dstatiRichiestaPfAmmtoDto.add(drichPianifFerieAmmtoLink);
		}

		// PARENTS LINKS FOR IMPORTED MS

		// CHILDREN LINKS FOR IMPORTED MS

		return dstatiRichiestaPfAmmtoDto;

	}

	@Override
	public CollectionModel<DstatiRichiestaPfAmmtoDto> toCollectionModel(
			Iterable<? extends DstatiRichiestaPfAmmto> entities) {
		CollectionModel<DstatiRichiestaPfAmmtoDto> collectionEntities = super.toCollectionModel(entities);
		// collectionEntities.add(linkTo(methodOn(OrdineController.class).findPaginated(null,
		// null)).withSelfRel());

		return collectionEntities;
	}

}

