<?php

class SqlDocRattaches
{

    /**
     * Fonction retournant la requête sql permettant de sélectionner tous les documents rattachés pour
     * un utilisateur, un panier et un bloc fournisseur donné
     *
     * @param int $id_user
     * @param int $id_panier
     * @param string $code_frs
     * @return string sql
     */
    public static function rqGetAllDocsRattaches(& $id_user, & $id_panier, & $liste_four, $id_doc = null)
    {
        $sql = " SELECT ID_USER, ID_PANIER, COD_FOURN, NUM_DOC, TITRE, TYPE_DOC, NOM_FIC_ORI ,NOM_FIC_FINAL, DATE_PARUTION, DATE_VALIDITE, AUTEUR, CENTRE, COMMENTAIRE
					FROM OXA_USERS_PANIER_FOUR_DOC with(nolock) where ID_USER = '".ReplaceSqlPointeur($id_user)."' and ID_PANIER = '".ReplaceSqlPointeur($id_panier)."' and COD_FOURN = '" . ReplaceSqlPointeur($liste_four['COD_FOURN']) . "' and CRITERE_REGROUP = '" . ReplaceSqlPointeur($liste_four['CRITERE_REGROUP']) . "' ";
        if (null != $id_doc)
            $sql .= " and NUM_DOC = $id_doc ";
        
        return new RequeteSQL($sql, DB_OXAPROCDB);
    }

    /**
     * Fonction retournant la requête sql permettant de sélectionner tous les documents rattachés pour
     * un utilisateur, un panier et un bloc fournisseur donné
     *
     * @param int $id_user
     * @param int $id_panier
     * @param string $code_frs
     * @return string sql
     */
    public static function rqGetAllDocsRattachesNew(& $id_user, & $id_panier, & $liste_four, $id_doc = null)
    {
        $sql = " SELECT ID_USER, ID_PANIER, COD_FOURN, NUM_DOC, TITRE, TYPE_DOC, NOM_FIC_ORI ,NOM_FIC_FINAL, DATE_PARUTION, DATE_VALIDITE, AUTEUR, CENTRE, COMMENTAIRE, RS
					FROM OXA_USERS_PANIER_FOUR_DOC with(nolock) where ID_USER = '".ReplaceSqlPointeur($id_user)."' and ID_PANIER = '".ReplaceSqlPointeur($id_panier)."' and COD_FOURN = '" . ReplaceSqlPointeur($liste_four['COD_FOURN']) . "' and CRITERE_REGROUP = '" . ReplaceSqlPointeur($liste_four['CRITERE_REGROUP']) . "' ";
        if (null != $id_doc)
            $sql .= " and NUM_DOC = '".ReplaceSqlPointeur($id_doc)."' ";
        else
            $sql .= " and COD_FOURN = '" . ReplaceSqlPointeur($liste_four['COD_FOURN']) . "' and CRITERE_REGROUP = '" . ReplaceSqlPointeur($liste_four['CRITERE_REGROUP']) . "' ";
        
        return new RequeteSQL($sql, DB_OXAPROCDB);
    }

    /**
     * Fonction retournant la requête sql permettant de sélectionner tous les documents rattachés pour
     * un utilisateur, un panier et un bloc fournisseur donné
     *
     * @param int $id_user
     * @param int $id_panier
     * @param string $code_frs
     * @return string sql
     */
    public static function rqInsertDocRattache(& $id_user, & $id_panier, & $liste_four, $titre, $type_doc, $nom_fic_ori, $nom_fic_final, $date_parution, $date_validite, $auteur, $centre, $commentaire)
    {
        $code_frs = $liste_four['COD_FOURN'];
        
        $sql = "select max(NUM_DOC)+1 NEW_NUM_DOC from OXA_USERS_PANIER_FOUR_DOC with (nolock) where ID_USER = '".ReplaceSqlPointeur($id_user)."' and ID_PANIER = '".ReplaceSqlPointeur($id_panier)."' and COD_FOURN = '".ReplaceSqlPointeur($code_frs)."'";
        
        // On utilise une requête afin de déterminer le nouveau numéro du document rattaché
        $num_doc = (new RequeteSQL($sql, DB_OXAPROCDB))->Trouve1();
        
        if (! array_key_exists('NEW_NUM_DOC', $num_doc) || ! is_numeric($num_doc['NEW_NUM_DOC']))
            $num_doc = 1;
        else
            $num_doc = $num_doc['NEW_NUM_DOC'];
        
        $sql = " insert into OXA_USERS_PANIER_FOUR_DOC (ID_USER, ID_PANIER, COD_FOURN, NUM_DOC, TITRE, TYPE_DOC, NOM_FIC_ORI ,NOM_FIC_FINAL, DATE_PARUTION, DATE_VALIDITE, AUTEUR, CENTRE, COMMENTAIRE, CRITERE_REGROUP)
					values('".ReplaceSqlPointeur($id_user)."', '".ReplaceSqlPointeur($id_panier)."', '" . ReplaceSqlPointeur($code_frs) . "', '".ReplaceSqlPointeur($num_doc)."', '".ReplaceSqlPointeur($titre)."', '".ReplaceSqlPointeur($type_doc)."', '".ReplaceSqlPointeur($nom_fic_ori)."', '".ReplaceSqlPointeur($nom_fic_final)."', '".ReplaceSqlPointeur($date_parution)."', '".ReplaceSqlPointeur($date_validite)."', '".ReplaceSqlPointeur($auteur)."', '".ReplaceSqlPointeur($centre)."', '".ReplaceSqlPointeur($commentaire)."','" . ReplaceSqlPointeur($liste_four['CRITERE_REGROUP']) . "')";
        
        return new RequeteSQL($sql, DB_OXAPROCDB);
    }

    /**
     * Attention cette class renvoi dans l'objet SQL de retour une propriété qui est le numéro d'ordre crée
     *
     * @param unknown $titre
     * @param unknown $type_doc
     * @param unknown $nom_fic_ori
     * @param unknown $nom_fic_final
     * @param unknown $date_parution
     * @param unknown $date_validite
     * @param unknown $auteur
     * @param unknown $centre
     * @param unknown $codeEnr
     * @return RequeteSQL
     */
    public static function rqInsertDocRattacheDoa($titre, $type_doc, $nom_fic_ori, $nom_fic_final, $date_parution, $date_validite, $auteur, $centre, $codeEnr)
    {
        $sql = 'select max(NO_ORDRE)+1 NEW_NO_ORDRE from DOC_ATT with (nolock) where NO_DA=\'DOA\' and COD_ENR = \'' . ReplaceSqlPointeur($codeEnr) . '\'';
        
        // On utilise une requête afin de déterminer le nouveau numéro du document rattaché
        $req = (new RequeteSQL($sql, DB_OXASQLDB))->Trouve1();
        
        if (! array_key_exists('NEW_NO_ORDRE', $req) || ! is_numeric($req['NEW_NO_ORDRE']))
            $numOdre = 1;
        else
            $numOdre = $req['NEW_NO_ORDRE'];
        
        $sql = 'insert into DOC_ATT (NO_DA, COD_ENR, NO_ORDRE, TITRE, TYPE_PJ, NOM_ORI , NOM_FIC, DT_PARUT, DT_VALID, AUTEUR, CENTRE) values ' . "('DOA'" . ",'".ReplaceSqlPointeur($codeEnr)."'" . ",'" . ReplaceSqlPointeur($numOdre) . "','" . ReplaceSqlPointeur($titre) . "'" . ",'" . ReplaceSqlPointeur($type_doc) . "'" . ",'" . ReplaceSqlPointeur($nom_fic_ori) . "'" . ",'" . ReplaceSqlPointeur($nom_fic_final) . "'" . ",'".ReplaceSqlPointeur($date_parution)."'" . ",'".ReplaceSqlPointeur($date_validite)."'" . ",'" . ReplaceSqlPointeur($auteur) . "'" . ",'" . ReplaceSqlPointeur($centre) . "') ";
        
        $requeteSql = new RequeteSQL($sql, DB_OXASQLDB);
        $requeteSql->setProperties('NUM_ORDRE', $numOdre);
        
        return $requeteSql;
    }

    /**
     *
     * @param unknown $idDoa
     * @param unknown $numOrdre
     * @return RequeteSQL
     */
    public static function rqGetDocRattcheDoa($idDoa, $numOrdre)
    {
        $COD_ENR = str_pad($idDoa, 9, 0, STR_PAD_LEFT);
        
        $sql = 'select * from DOC_ATT with (nolock) WHERE NO_DA = \'DOA\' AND COD_ENR = \'' . ReplaceSqlPointeur($COD_ENR) . '\' AND NO_ORDRE = \''.ReplaceSqlPointeur($numOrdre).'\'';
        
        return new RequeteSQL($sql, DB_OXASQLDB);
    }

    /**
     * Fonction retournant la requête sql permettant de supprimer les documents rattachés associé à
     * un utilisateur, un panier [un bloc fournisseur donné], [un numéro de document donné]
     *
     * @param int $id_user
     * @param int $id_panier
     * @param string $code_frs
     * @param int $id_pj
     * @return string sql
     */
    public static function rqDeleteDocsRattaches(& $id_user, & $id_panier, $liste_four = null, $id_doc = null)
    {
        $sql = " delete from OXA_USERS_PANIER_FOUR_DOC where ID_USER = '".ReplaceSqlPointeur($id_user)."' and ID_PANIER = '".ReplaceSqlPointeur($id_panier)."'";
        if (is_array($liste_four))
            $sql .= " and COD_FOURN = '".ReplaceSqlPointeur($liste_four['COD_FOURN'])."'  and COD_FOURN = '".ReplaceSqlPointeur($liste_four['CRITERE_REGROUP'])."' ";
        if (! is_null($id_doc))
            $sql .= " and NUM_DOC = '".ReplaceSqlPointeur($id_doc)."' ";
        
        return new RequeteSQL($sql, DB_OXAPROCDB);
    }

    /**
     * Fonction retournant la requête sql permettant de mettre à jour un document rattaché pour
     * un utilisateur, un panier, un bloc fournisseur donné et un document rattaché donné
     *
     * @param int $id_user
     * @param string $id_panier
     * @param string $code_frs
     * @param int $num_doc
     * @param string $titre
     * @param string $type_doc
     * @param string $nom_fic_ori
     * @param string $nom_fic_final
     * @param string $date_parution
     * @param string $date_validite
     * @param string $auteur
     * @param string $centre
     * @param string $commentaire
     * @return string sql
     */
    public static function rqUpdateDocRattache($id_user, $id_panier, $liste_four, $num_doc, $titre, $type_doc, $date_parution, $date_validite, $auteur, $centre, $commentaire)
    {
        $sql = " update OXA_USERS_PANIER_FOUR_DOC set ";
        if (! is_null($titre) && $titre != '')
            $sql .= "TITRE = '" . ReplaceSqlPointeur($titre) . "', ";
        
        $sql .= "TYPE_DOC = '".ReplaceSqlPointeur($type_doc)."',  
					DATE_PARUTION = '".ReplaceSqlPointeur($date_parution)."', DATE_VALIDITE = '".ReplaceSqlPointeur($date_validite)."', AUTEUR = '".ReplaceSqlPointeur($auteur)."', CENTRE = '".ReplaceSqlPointeur($centre)."', COMMENTAIRE = '" . ReplaceSqlPointeur($commentaire) . "'
					where ID_USER = '".ReplaceSqlPointeur($id_user)."' and ID_PANIER = '".ReplaceSqlPointeur($id_panier)."' and COD_FOURN = '".ReplaceSqlPointeur($liste_four['COD_FOURN'])."' and CRITERE_REGROUP = '".ReplaceSqlPointeur($liste_four['CRITERE_REGROUP'])."' and NUM_DOC = '".ReplaceSqlPointeur($num_doc)."' ";
        
        return new RequeteSQL($sql, DB_OXAPROCDB);
    }

    /**
     * Fonction retournant la requête permettant de copier les documents rattachés d'un bloc fournisseur d'un panier vers le bloc fournisseur du panier en cours
     *
     * @param int $id_panier
     *            : Identifiant du panier source
     * @return string sql : requête SQL
     */
    public static function rqCopieDocsRattachesByBlocFrs($id_panier)
    {
        $sql = " insert into OXA_USERS_PANIER_FOUR_DOC (ID_USER, ID_PANIER, COD_FOURN, NUM_DOC, TITRE, TYPE_DOC, NOM_FIC_ORI ,NOM_FIC_FINAL, DATE_PARUTION, DATE_VALIDITE, AUTEUR, CENTRE, COMMENTAIRE , CRITERE_REGROUP )  	
						  select   ID_USER, 0, COD_FOURN, NUM_DOC, TITRE, TYPE_DOC, NOM_FIC_ORI ,NOM_FIC_FINAL, DATE_PARUTION, DATE_VALIDITE, AUTEUR, CENTRE, COMMENTAIRE , CRITERE_REGROUP 		 
						  from 	   OXA_USERS_PANIER_FOUR_DOC where OXA_USERS_PANIER_FOUR_DOC.ID_USER = {$_SESSION['id_user']} and OXA_USERS_PANIER_FOUR_DOC.ID_PANIER   = '".ReplaceSqlPointeur($id_panier)."'";
        return new RequeteSQL($sql, DB_OXAPROCDB);
    }

    /**
     * Fonction retournant la requête permettant de déplacer les documents rattachés d'un panier modèle/brouillon vers le panier en cours
     *
     * @param int $id_user
     * @param int $id_panier
     * @return string sql
     */
    public static function rqMovePanierDocsRttachesBlocFrs(& $id_user, & $id_panier)
    {
        $sql = "	update OXA_USERS_PANIER_FOUR_DOC set ID_PANIER 	= '".ReplaceSqlPointeur($id_panier)."' , ID_USER = '".ReplaceSqlPointeur($id_user)."' " . "	WHERE OXA_USERS_PANIER_FOUR_DOC.ID_USER    		= {$_SESSION['id_user']} " . "	AND OXA_USERS_PANIER_FOUR_DOC.ID_PANIER  		= {$_SESSION['id_panier']} ";
        
        return new RequeteSQL($sql, DB_OXAPROCDB);
    }

    /**
     * Fonction retournant la requête sql permettant de sélectionner tous les documents rattachés pour un DOA
     *
     * @param int $id_user
     * @param int $id_panier
     * @param string $code_frs
     * @return string sql
     */
    public static function rqGetAllDocsRattachesDoa($idDoa, $NO_ORDRE)
    {
        $COD_ENR = str_pad($idDoa, 9, 0, STR_PAD_LEFT);
        
        $sql = ' SELECT * FROM DOC_ATT with(nolock) where NO_DA=\'DOA\' and COD_ENR = \'' . ReplaceSqlPointeur($COD_ENR) . '\' and NO_ORDRE= \''.ReplaceSqlPointeur($NO_ORDRE).'\'';
        return new RequeteSQL($sql, DB_OXASQLDB);
    }
}	
