package com.dacrt.SBIABackend.repository;


import java.util.List;
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.stereotype.Repository;

import com.dacrt.SBIABackend.dto.UnitsDtoStatus;
import com.dacrt.SBIABackend.entity.Coverageappshistory;
import com.dacrt.SBIABackend.entity.Strategiesdetunits;
import com.dacrt.SBIABackend.entity.Unitprocesses;
import com.dacrt.SBIABackend.entity.Units;
import com.dacrt.SBIABackend.entity.Userunits;

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


//import com.dacrt.SBIABackend.security.dto.ParamsDto;
import com.dacrt.SBIABackend.security.entity.Params;
import com.dacrt.SBIABackend.security.entity.Users;

@Repository
public interface StrategiesdetunitsRepository extends JpaRepository<Strategiesdetunits,Integer>,JpaSpecificationExecutor<Strategiesdetunits>{
	
	
	@Transactional
	@Modifying
	@Query(" DELETE FROM Strategiesdetunits e where e.strategydetid = ?1 ")
	void borrarStrategybyIdStrategyUnits(int idestrategy);
	
	//and ed.id not in
	//(select strategiesdetunitid from main.coverageprocesses)
	@Query(value=" SELECT u.id FROM Strategiesdetunits u WHERE u.strategydetid= ?1 and u.unitid not in ?2  ")
	List<Integer> getUnitsDelete(int id,List<Integer> unidades);
	
	//@Query(value="SELECT u.id FROM main.strategiesdetunits u WHERE u.strategydetid= ?1 and u.unitid NOT IN ?2 and u.id not in (Select e.strategiesdetunitid from main.coverageprocesses e) ",nativeQuery=true)
	//List<Integer> getUnitsDeleteNative(int id,List<Integer> unidades);
	
	@Query( value=" SELECT count(1) FROM Strategiesdetunits u WHERE u.strategydetid= ?1 and u.unitid  = ?2 ")
     int getqtyunidstrategy(int id, int unidad);
	
	boolean existsByStrategydetidAndUnitid(int strategydetid, int unitid);
	boolean existsByStrategydetid(int strategydetid);

}
