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.DstatiAdesionePfController;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DstatiAdesionePfDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DstatiAdesionePf;

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

@Component
public class DstatiAdesionePfModelAssembler
		extends BaseModelAssembler<DstatiAdesionePf, DstatiAdesionePfDto, DstatiAdesionePfController> {

	@Override
	public DstatiAdesionePfDto toModel(DstatiAdesionePf dstatiAdesionePf) {
		DstatiAdesionePfDto dstatiAdesionePfDto = map(dstatiAdesionePf, DstatiAdesionePfDto.class,
				DstatiAdesionePfController.class);

		// SELF LINK
		Link selfLink = convert(
				linkTo(methodOn(DstatiAdesionePfController.class).getByObjectKey(dstatiAdesionePf.getObjectKey()))
						.withSelfRel());
		dstatiAdesionePfDto.add(selfLink);

		// PARENT LINKS

		// CHILDREN LINKS
		if (dstatiAdesionePf.getTheDesitiRichAdesionePf() != null) {
			Link desitiRichAdesionePfLink = convert(linkTo(methodOn(DesitiRichAdesionePfController.class)
					.findByDstatiAdesionePf(dstatiAdesionePf.getObjectKey(), null)).withRel("theDesitiRichAdesionePf"));
			dstatiAdesionePfDto.add(desitiRichAdesionePfLink);
		}

		// PARENTS LINKS FOR IMPORTED MS

		// CHILDREN LINKS FOR IMPORTED MS

		return dstatiAdesionePfDto;

	}

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

		return collectionEntities;
	}

}

