package ec.edu.espe.movilidad.MovilidadWS.Dao;

import ec.edu.espe.movilidad.MovilidadWS.Dto.DtoParroquiaCantonProvincia;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTCanton;
import ec.edu.espe.movilidad.MovilidadWS.Model.ModelUzyTParroquia;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface DaoUzyTParroquia extends JpaRepository<ModelUzyTParroquia, String> {


    //Obtener los datos relacionados con la tabla ConParaEva mediante un id, además que tengan tipo 1= Parametros de evaluacion inicial
    @Query("SELECT p FROM ModelUzyTParroquia p INNER JOIN p.uzytcanton c WHERE c.uzytcanton_id = :id ")
    List<ModelUzyTParroquia> findByIdDatosConCanton(@Param("id") String id);
    @Query("SELECT p.uzytcanton FROM ModelUzyTParroquia p WHERE p.uzytparroquia_id = :parroquiaId")
    ModelUzyTCanton findCantonByParroquiaId(@Param("parroquiaId") String parroquiaId);

    @Query("SELECT new ec.edu.espe.movilidad.MovilidadWS.Dto.DtoParroquiaCantonProvincia(P.uzytparroquia_id, P.uzytparroquia_nombre, C.uzytcanton_id, C.uzytcantonnombre, PV.uzytprovincia_id, PV.uzytprovincia_nombre) " +
            "FROM ModelUzyTParroquia P " +
            "JOIN ModelUzyTCanton C ON P.uzytcanton.uzytcanton_id = C.uzytcanton_id " +
            "JOIN ModelUzyTProvincia PV ON C.uzytprovincia.uzytprovincia_id = PV.uzytprovincia_id " +
            "WHERE P.uzytparroquia_id = :parroquiaId")
    List<DtoParroquiaCantonProvincia> findCantonAndProvinciaIdsByParroquiaId(@Param("parroquiaId") String parroquiaId);


}