package es.uv.saic.feign;

import java.math.BigInteger;
import java.util.List;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import es.uv.saic.domain.Indicador;
import es.uv.saic.domain.InstanciaTasca;
import es.uv.saic.domain.Organ;
import es.uv.saic.dto.IndicadorEnquestaDTO;
import es.uv.saic.dto.IndicadorEnquestaValorDTO;
import es.uv.saic.dto.NomProcesOrganDTO;

@FeignClient(value = "core-service", url = "${saic.url.core.domain}")
public interface CoreClient {
    //IndicadorController.java
    @GetMapping("/getFromTitulacio/{idTitulacio}/{curs}")
    List<Indicador> getFromTitulacion(@PathVariable("idTitulacio") Integer idTitulacio, @PathVariable("curs") Integer curs);

    @PostMapping("/allInds2")
    List<IndicadorEnquestaValorDTO> getAllInds2(@RequestBody IndicadorEnquestaDTO indicadorEnquestaDTO);

    //TascaController.java
    @GetMapping("/instanciatasca2/{id}")
    InstanciaTasca findInstanciaTascaById2(@PathVariable("id") BigInteger id);

    @GetMapping("/getReportFromNomProcesOrgan")
    InstanciaTasca getReportFromNomProcesOrgan(@RequestBody NomProcesOrganDTO nomProcesOrganDTO);

    //OrganController.java
    @GetMapping("/getTitulacionsByCentreTambit/{centre}/{tambit}")
    List<Organ> getTitulacionsByCentreTambit(@PathVariable("centre") Integer lugar, @PathVariable("tambit") String tambit);

    @GetMapping("/findById/{tlugar}/{idTitulacio}")
    Organ findOrganById(@PathVariable("tlugar") String tlugar,  @PathVariable("idTitulacio") Integer idTitulacio);
}
