/**
 * Termine la connexion d'un utilisateur (logout)
 * Stratégie :
 *  - Une entrée est recherchée dans la table USERCNX puis mise à jour
 * @param $user_id : id du user
 * @session_id : L'id de session de l'utilisateur
 * @return bool|mixed
 * @throws Exception
 */
function user_log_out($user_id, $session_id)
{
    global $pdo;
    $resultat = false;
    $queryStr = 'UPDATE ' . PHPAT_DB_TB_USERCNX . ' SET ' . get_tb_col_pair(USERCNX_TB_COL_DATEOUT) . ' WHERE ' . get_tb_col_pair(USERCNX_TB_COL_SESSIONID) . ' AND ' . get_tb_col_pair(USERCNX_TB_COL_USERID);
    var_dump($queryStr);
    $sth = $pdo->prepare($queryStr);
    $params = array(COLON_CAR . USERCNX_TB_COL_USERID => $user_id, COLON_CAR . USERCNX_TB_COL_SESSIONID => $session_id, COLON_CAR . USERCNX_TB_COL_DATEOUT => date("Y-m-d H:i:s"));
    $res = $sth->execute($params);
    $sth->debugDumpParams();
    var_dump($params);
    var_dump($res);
    if (!$res || $sth->rowCount() == 0) {
        throw new Exception("Echec lors de la tentative de déconnexion pour l'utilisateur {$user_id} : (" . $sth->errorInfo()[0] . ")<br/>");
    }
    if ($res) {
        $resultat = true;
    }
    return $resultat;
}
/**
 * Lister (parcourir) ou rechercher les produits
 * NB : Pas de limite mise en place ici (à améliorer si le nb de produits devient important
 * @param bool|int $category_id: Catégorie du produit, false pour toutes les catégories
 * @param bool|string $name: Nom du produit ou partie de ce nom (operateur %like%)
 * @return bool|mixed
 */
function product_list($category_id = false, $name = false)
{
    global $pdo;
    $resultat = false;
    // Par défaut n'existe pas
    $queryStr = 'SELECT * FROM ' . P62_DBKITDEM_TB_PRODUCT;
    if (false !== $category_id) {
        $queryStr .= ' WHERE ' . get_tb_col_pair(PRODUCT_TB_COL_CATEGORY_ID);
    }
    if (false !== $name) {
        $queryStr .= strpos($queryStr, 'WHERE') > 0 ? ' AND ' : ' WHERE ';
        // Suivant qu'une clause WHERE est déjà présente
        $queryStr .= get_tb_col_pair(PRODUCT_TB_COL_GROUP_NAME, 'LIKE');
    }
    try {
        $sth = $pdo->prepare($queryStr);
        $params = array();
        if (false !== $category_id) {
            $params[COLON_CAR . PRODUCT_TB_COL_CATEGORY_ID] = $category_id;
        }
        if (false !== $name) {
            $params[COLON_CAR . PRODUCT_TB_COL_GROUP_NAME] = '%' . $name . '%';
        }
        $res = $sth->execute($params);
        //        $sth->debugDumpParams();
        //        var_dump($res);
        //        var_dump($sth->rowCount());
    } catch (PDOException $e) {
        echo "Echec tentative lister produits pour catégorie {$category_id} : (" . $e->getMessage() . ')<br/>';
        exit;
    }
    if ($res && $sth->rowCount() > 0) {
        $resultat = $sth->fetchAll(PDO::FETCH_ASSOC);
    }
    return $resultat;
}