<?

/**
 * Fonction retournant la requete permettant d'obtenir la liste des droits HA+ rq_sql_droits.php
 */
class SqlDroits
{

    public static function rqGetListeDroits()
    {
        $sql = "select isnull(TXTTRAD.TRAD,DROITS.LIB_DR) LIB_DR, COD_DR 
            from DROITS with (nolock)            
            left join TXTTRAD on TXTTRAD.TXT=DROITS.LIB_DR and TXTTRAD.COD_PROD = 'HAPLUS' and TXTTRAD.COD_LNG = '{$_SESSION['Session_Langue']}'
            where (DROITS.NUM_CLT = 0 or DROITS.NUM_CLT={$_SESSION['Session_NumClient']})
            and PUB=0x54 order by COD_DR";
        return new RequeteSQL($sql, DB_OXASQLDB);
    }

    /**
     * Fonction retournant la requete permettant d'obtenir la liste des groupes de droits pour un utilisateur
     * 
     * @param $login :
     *            login de l'utilisateur
     *            EDP Correction with(nolock)
     */
    public static function rqGetListeGroupesDroitsUser(& $login)
    {
        $sql = "select distinct GRPDROIT.COD_GRP, GRPDROIT.LIB_GRP 
            from GRPDROIT with(nolock), GRPUSR with(nolock) 
            where GRPDROIT.COD_GRP = GRPUSR.COD_GRP
            and GRPUSR.COD_USR ='".ReplaceSqlPointeur($login)."'";
        
        return new RequeteSQL($sql, DB_OXASQLDB);
    }

    /**
     * Fonction retournant la requete permettant d'obtenir la liste droits pour un groupe donné
     * 
     * @param $CODGRP :
     *            code du groupe de droit
     */
    public static function rqGetListeGroupes()
    {
        $sql = 'select COD_GRP, LIB_GRP from GRPDROIT with (nolock) order by LIB_GRP';
        return new RequeteSQL($sql, DB_OXASQLDB);
    }

    /**
     * Fonction retournant la requete permettant de connaitre la liste des groupes auquel l'user n'est pas associé
     */
    public static function rqGetListeGroupeLeft(& $login)
    {
        $sql = "select distinct GRPDROIT.COD_GRP, GRPDROIT.LIB_GRP 
            from GRPDROIT with(nolock)
            where GRPDROIT.COD_GRP not in 
                (select COD_GRP 
                from GRPUSR with (nolock) 
                where COD_USR = '" . ReplaceSqlPointeur($login) . "')";
        
        return new RequeteSQL($sql, DB_OXASQLDB);
    }

    /**
     * Fonction retournant la requete permettant d'obtenir la liste droits pour un groupe donné
     * 
     * @param $CODGRP :
     *            code du groupe de droit
     */
    public static function rqGetListeDroitsGroupes(& $CODGRP)
    {
        $sql = "select DROITS.COD_DR, isnull(TXTTRAD.TRAD,DROITS.LIB_DR) LIB_DR, DROITS.PUB  
            from DROITGRP with (nolock) 
            inner join DROITS with (nolock) on DROITS.COD_DR = DROITGRP.COD_DR
            left join TXTTRAD on TXTTRAD.TXT=DROITS.LIB_DR and TXTTRAD.COD_PROD = 'HAPLUS' and TXTTRAD.COD_LNG = '{$_SESSION['Session_Langue']}'
            where COD_GRP = '".ReplaceSqlPointeur($CODGRP)."'
            and PUB=0x54 
            order by DROITS.COD_DR ";
        
        return new RequeteSQL($sql, DB_OXASQLDB);
    }

    /**
     * Fonction retournant la requete permettant d'obtenir la liste des droits non présents dans un groupe donné
     */
    public static function rqGetListeDroitsGroupesLeft(& $CODGRP)
    {
        $sql = "select distinct DROITS.COD_DR, isnull(TXTTRAD.TRAD,DROITS.LIB_DR) LIB_DR, DROITS.PUB 
            from DROITS with (nolock) 
            inner join DROITGRP with (nolock) on DROITS.COD_DR = DROITGRP.COD_DR
            left join TXTTRAD on TXTTRAD.TXT=DROITS.LIB_DR and TXTTRAD.COD_PROD = 'HAPLUS' and TXTTRAD.COD_LNG = '{$_SESSION['Session_Langue']}'
            where DROITS.PUB = 0x54
            and (DROITS.NUM_CLT = 0 or DROITS.NUM_CLT={$_SESSION['Session_NumClient']})
            and DROITGRP.COD_DR not in 
                (select DROITS.COD_DR 
                from DROITS with (nolock) 
                where DROITGRP.COD_GRP = '".ReplaceSqlPointeur($CODGRP)."' and PUB=0x54)
            order by DROITS.COD_DR";

        return new RequeteSQL($sql, DB_OXASQLDB);
    }

    /**
     * Fonction retournant la requete permettant d'obtenir la liste droits pour un utilisateur donné
     * 
     * @param $login :
     *            login de l'utilisateur
     */
    public static function rqGetListeDroitsUser(& $login)
    {
        $sql = "select DROITS.COD_DR, isnull(TXTTRAD.TRAD,DROITS.LIB_DR) LIB_DR, DROITS.NUM_CLT, DROITS.PUB 
            from DROITS with (nolock) 
            inner join DROITUSR with (nolock) on DROITS.COD_DR = DROITUSR.COD_DR
            left join TXTTRAD on TXTTRAD.TXT=DROITS.LIB_DR and TXTTRAD.COD_PROD = 'HAPLUS' and TXTTRAD.COD_LNG = '{$_SESSION['Session_Langue']}'
            where COD_USR = '".ReplaceSqlPointeur($login)."'
            and DROITS.PUB = 0x54
            and (DROITS.NUM_CLT = 0 or DROITS.NUM_CLT={$_SESSION['Session_NumClient']})
            order by DROITS.COD_DR";
        return new RequeteSQL($sql, DB_OXASQLDB);
    }

    /**
     * Fonction retournant la requete permettant d'obtenir la liste des droits non associés à un utilisateur
     * 
     * @param $login :
     *            login de l'utilisateur
     */
    public static function rqGetListeDroitsUserLeft(& $login)
    {
        $sql = "select DROITS.COD_DR, isnull(TXTTRAD.TRAD,DROITS.LIB_DR) LIB_DR, DROITS.NUM_CLT, DROITS.PUB 
            from DROITS with(nolock)
            left join TXTTRAD on TXTTRAD.TXT=DROITS.LIB_DR and TXTTRAD.COD_PROD = 'HAPLUS' and TXTTRAD.COD_LNG = '{$_SESSION['Session_Langue']}'
            where (DROITS.NUM_CLT = 0 or DROITS.NUM_CLT={$_SESSION['Session_NumClient']}) 
            and DROITS.PUB = 0x54
            and DROITS.COD_DR not in
                (select DROITUSR.COD_DR 
                from DROITUSR with (nolock) 
                where COD_USR = '$login')
            order by DROITS.COD_DR";
        
        return new RequeteSQL($sql, DB_OXASQLDB);
    }


}