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.DrichPianifFerieAmmtoController;
import it.micegroup.gestioneferie.pianificazioneferie.dto.DrichPianifFerieAmmtoDto;
import it.micegroup.gestioneferie.pianificazioneferie.entity.DrichPianifFerieAmmto;

import it.micegroup.gestioneferie.pianificazioneferie.controller.DstatiRichiestaPfAmmtoController;
import it.micegroup.gestioneferie.pianificazioneferie.controller.DpianificFerieAmmtoController;

@Component
public class DrichPianifFerieAmmtoModelAssembler
		extends BaseModelAssembler<DrichPianifFerieAmmto, DrichPianifFerieAmmtoDto, DrichPianifFerieAmmtoController> {

	@Override
	public DrichPianifFerieAmmtoDto toModel(DrichPianifFerieAmmto drichPianifFerieAmmto) {
		DrichPianifFerieAmmtoDto drichPianifFerieAmmtoDto = map(drichPianifFerieAmmto, DrichPianifFerieAmmtoDto.class,
				DrichPianifFerieAmmtoController.class);

		// SELF LINK
		Link selfLink = convert(linkTo(
				methodOn(DrichPianifFerieAmmtoController.class).getByObjectKey(drichPianifFerieAmmto.getObjectKey()))
						.withSelfRel());
		drichPianifFerieAmmtoDto.add(selfLink);

		// PARENT LINKS
		if (drichPianifFerieAmmto.getTheDstatiRichiestaPfAmmto() != null) {
			Link dstatiRichiestaPfAmmtoLink = convert(linkTo(methodOn(DstatiRichiestaPfAmmtoController.class)
					.getByObjectKey(drichPianifFerieAmmto.getTheDstatiRichiestaPfAmmtoObjectKey()))
							.withRel("theDstatiRichiestaPfAmmto"));
			drichPianifFerieAmmtoDto.add(dstatiRichiestaPfAmmtoLink);
		}
		if (drichPianifFerieAmmto.getTheDpianificFerieAmmto() != null) {
			Link dpianificFerieAmmtoLink = convert(linkTo(methodOn(DpianificFerieAmmtoController.class)
					.getByObjectKey(drichPianifFerieAmmto.getTheDpianificFerieAmmtoObjectKey()))
							.withRel("theDpianificFerieAmmto"));
			drichPianifFerieAmmtoDto.add(dpianificFerieAmmtoLink);
		}

		// CHILDREN LINKS

		// PARENTS LINKS FOR IMPORTED MS

		// CHILDREN LINKS FOR IMPORTED MS

		return drichPianifFerieAmmtoDto;

	}

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

		return collectionEntities;
	}

}

