package com.dacrt.SBIABackend.security.repository;

import java.util.List;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.dacrt.SBIABackend.security.entity.Roles;
import com.dacrt.SBIABackend.security.entity.Rolesprivileges;

@Repository
public interface RolesPrivilegesRepository extends JpaRepository<Rolesprivileges,Integer>{
	
	@Query(value=" SELECT count(*) FROM main.rolesprivileges r WHERE r.rolid=?1 AND r.privilegeid=?2",nativeQuery=true)
	int existeRolPrivilegio(int rolid,int privilegeid);
	
	@Transactional
	@Modifying
	@Query(value=" DELETE FROM main.rolesprivileges r where r.rolid=?1 AND r.privilegeid=?2 ",nativeQuery=true)
	void borrarRolPrivilegio(int rolid,int privilegeid);
	
	@Transactional
	@Modifying
	@Query(value=" DELETE FROM main.rolesprivileges r where r.rolid=?1 ",nativeQuery=true)
	void borrarRol(int rolid);
	
	boolean existsByRolidAndPrivilegeid(int rol,Integer idpri);
	
	/*@Query(value = "SELECT r.id, r.name, " +
            "CASE WHEN rp.privilegeid IS NOT NULL THEN True ELSE False END AS estado " +
            "FROM main.roles r " +
            "LEFT JOIN main.rolesprivileges rp ON r.id = rp.rolid AND rp.privilegeid = :privilegioId " +
            "WHERE r.id IN (SELECT rolid FROM main.rolesprivileges WHERE privilegeid = :privilegioId) OR rp.privilegeid IS NULL", nativeQuery = true)
	List<Object[]> findRolesConEstado(@Param("privilegioId") int privilegioId);*/
}
