package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;

import org.springframework.data.repository.query.Param;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierStatusEntity;

public interface DossierStatusRepository extends JpaRepository<DossierStatusEntity, String> {

    List<DossierStatusEntity> findByDossierTemplateIdIn(List<String> dossierTemplateIds);


    @Modifying
    @Query("update DossierStatusEntity d set d.rank = :newRank where d.id = :dossierStatusId")
    void updateRank(@Param("dossierStatusId") String dossierStatusId, @Param("newRank") int newRank);


    @Modifying
    @Query("update DossierStatusEntity d set d.rank = d.rank + 1 where d.dossierTemplateId = :dossierTemplateId and d.rank >= :rank")
    void adjustRanksForDossierTemplate(@Param("dossierTemplateId") String dossierTemplateId, @Param("rank") int rank);


    @Query("select count(d) from DossierStatusEntity d where d.dossierTemplateId = :dossierTemplateId and d.rank = :rankToCheck")
    int getDuplicateRanks(@Param("dossierTemplateId") String dossierTemplateId, @Param("rankToCheck") int rankToCheck);

}
