package com.dacrt.SBIABackend.repository;

import java.util.Optional;

import javax.transaction.Transactional;

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

import com.dacrt.SBIABackend.entity.Strategies;
import com.dacrt.SBIABackend.entity.Strategiesdet;

@Repository
public interface StrategiesdetRepository extends JpaRepository<Strategiesdet,Integer>,JpaSpecificationExecutor<Strategiesdet>{

	@Query(value="SELECT max(id) FROM main.strategiesdet",nativeQuery=true)
	//List<?>consultarSesionActiva(Integer idUsuario);
	//Optional<UsuarioSesion>consultarSesionActiva(Integer idUsuario);
	int consultarmaxid();
	
	@Transactional
	@Modifying
	@Query(" DELETE FROM Strategiesdet e where e.id = ?1 ")
	void deletestrategiesbyid(Integer id);
	
	@Transactional
	@Modifying
	@Query(" UPDATE Strategiesdet e set e.resourceid=null,e.positionid=null,e.supplierid=null,e.facilityid=null,e.applicationid=null,e.channelid=null where e.id = ?1 ")
	void actualizardependencias(int id);
	//update main.strategiesdet set   = null where id = 43 --2
	
	//Strategiesdet findById(int id);
	boolean existsById(int idestrategia);
	
	
	//SELECT STRING_AGG(DISTINCT CAST(u.unitid AS TEXT), ',') AS idunits from main.userunits u where u.userid = " + encontreSessionUsuario.get().getId() 
      //  	+ "	GROUP by u.userid"
        	
     @Query(value=" SELECT STRING_AGG(DISTINCT CAST(u.unitid AS TEXT), ',') AS idunits FROM main.userunits u where u.userid = ?1 GROUP by u.userid ",nativeQuery=true)
	//List<Audit> getAllMovAudit(int orderIn,int asc);
	String getUnitByIduser(int iduser);
     
    // @Query(value=" SELECT STRING_AGG(DISTINCT CAST(u.unitid AS TEXT), ',') AS idunits FROM main.userunits u where u.userid = ?1 GROUP by u.userid ",nativeQuery=true)
 	//List<Audit> getAllMovAudit(int orderIn,int asc);
 	boolean existsByName(String name);
     
     Optional <Strategiesdet> findById(int id);
     
    @Query(value=" SELECT count(s) from main.strategiesdet s where s.strategyid = ?1 ",nativeQuery=true)
 	int contarStrategies(int id);
}
