a
    ¿&ÏhÖ  ã                   @   s@   d dl Z d dlZd dlmZ d dlZe e¡ZG dd„ dƒZdS )é    N)Údatetimec                   @   sP   e Zd Zddd„Zdd„ Zddd„Zd	d
„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚUserManagerúdata/scambot.dbc                 C   s   || _ |  ¡  d S )N)Údb_pathÚinit_user_tables)Úselfr   © r   ú8/var/www/html/swiplay.fr/scambot/modules/user_manager.pyÚ__init__	   s    zUserManager.__init__c              
   C   s¤   zjt  | j¡}| ¡ }| d¡ z| d¡ t d¡ W n t jyL   Y n0 | ¡  | 	¡  t d¡ W n4 t
yž } zt d|› ¡ W Y d}~n
d}~0 0 dS )z3Initialise les tables pour les utilisateurs Discordaš  
                CREATE TABLE IF NOT EXISTS discord_users (
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
                    discord_id TEXT UNIQUE NOT NULL,
                    prenom TEXT NOT NULL,
                    nom TEXT NOT NULL,
                    email TEXT NOT NULL,
                    telephone TEXT NOT NULL,
                    rue TEXT NOT NULL,
                    code_postal TEXT NOT NULL,
                    ville TEXT NOT NULL,
                    instagram TEXT,
                    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                )
            z3ALTER TABLE discord_users ADD COLUMN instagram TEXTu*   âœ… Colonne instagram ajoutÃ©e Ã  la tableu2   âœ… Tables utilisateurs initialisÃ©es avec succÃ¨su/   âŒ Erreur initialisation tables utilisateurs: N)Úsqlite3Úconnectr   ÚcursorÚexecuteÚloggerÚinfoÚOperationalErrorÚcommitÚcloseÚ	ExceptionÚerror)r   Úconnr   Úer   r   r	   r      s    

zUserManager.init_user_tablesNc
                 C   s¢   zft  | j¡}
|
 ¡ }| d|||||||||	f	¡ |
 ¡  |
 ¡  t d|› d|› d|› d¡ W dS  t	yœ } zt 
d|› ¡ W Y d}~d	S d}~0 0 dS )
u,   Ajoute ou met Ã  jour un utilisateur Discordzõ
                INSERT OR REPLACE INTO discord_users 
                (discord_id, prenom, nom, email, telephone, rue, code_postal, ville, instagram, updated_at)
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
            u%   âœ… Utilisateur ajoutÃ©/mis Ã  jour: Ú z (ú)Tu   âŒ Erreur ajout utilisateur: NF)r   r   r   r   r   r   r   r   r   r   r   )r   Ú
discord_idÚprenomÚnomÚemailÚ	telephoneÚrueÚcode_postalÚvilleÚ	instagramr   r   r   r   r   r	   Úadd_user4   s    üzUserManager.add_userc              
   C   s¶   zzt  | j¡}| ¡ }| d|f¡ | ¡ }| ¡  |rv|d |d |d |d |d |d |d |d	 |d
 dœ	W S W dS  ty° } zt 	d|› ¡ W Y d}~dS d}~0 0 dS )u0   RÃ©cupÃ¨re les donnÃ©es d'un utilisateur Discordzº
                SELECT prenom, nom, email, telephone, rue, code_postal, ville, created_at, instagram
                FROM discord_users
                WHERE discord_id = ?
            r   é   é   é   é   é   é   é   é   )	r   r   r   r   r   r    r!   Ú
created_atr"   Nu'   âŒ Erreur rÃ©cupÃ©ration utilisateur: ©
r   r   r   r   r   Úfetchoner   r   r   r   ©r   r   r   r   Úresultr   r   r   r	   Úget_userJ   s.    ü÷zUserManager.get_userc              
   C   sx   z<t  | j¡}| ¡ }| d|f¡ | ¡ }| ¡  |duW S  tyr } zt 	d|› ¡ W Y d}~dS d}~0 0 dS )u)   VÃ©rifie si un utilisateur Discord existez1SELECT id FROM discord_users WHERE discord_id = ?Nu&   âŒ Erreur vÃ©rification utilisateur: Fr-   r/   r   r   r	   Úuser_existsk   s    
zUserManager.user_existsc              
   C   s¬   zpt  | j¡}| ¡ }| d|f¡ | ¡  |j}| ¡  |dkrXt 	d|› ¡ W dS t 
d|› ¡ W dS W n6 ty¦ } zt d|› ¡ W Y d}~dS d}~0 0 dS )	zSupprime un utilisateur Discordz.DELETE FROM discord_users WHERE discord_id = ?r   u   âœ… Utilisateur supprimÃ©: Tu3   âš ï¸ Aucun utilisateur trouvÃ© pour suppression: Fu$   âŒ Erreur suppression utilisateur: N)r   r   r   r   r   r   Úrowcountr   r   r   Úwarningr   r   )r   r   r   r   Zrows_affectedr   r   r   r	   Údelete_user{   s    
zUserManager.delete_userc              
   C   sr   z4t  | j¡}| ¡ }| d¡ | ¡ }| ¡  |W S  tyl } z t 	d|› ¡ g W  Y d}~S d}~0 0 dS )u0   Liste tous les utilisateurs Discord enregistrÃ©sz›
                SELECT discord_id, prenom, nom, email, created_at
                FROM discord_users
                ORDER BY created_at DESC
            u   âŒ Erreur liste utilisateurs: N)
r   r   r   r   r   Úfetchallr   r   r   r   )r   r   r   Úusersr   r   r   r	   Ú
list_users’   s    
zUserManager.list_usersc              
   C   s~   z<t  | j¡}| ¡ }| d¡ | ¡ d }| ¡  d|iW S  tyx } z$t 	d|› ¡ ddiW  Y d}~S d}~0 0 dS )u,   RÃ©cupÃ¨re les statistiques des utilisateursz"SELECT COUNT(*) FROM discord_usersr   Útotal_usersu   âŒ Erreur stats utilisateurs: Nr-   )r   r   r   r9   r   r   r   r	   Úget_user_stats§   s    
ÿzUserManager.get_user_stats)r   )N)Ú__name__Ú
__module__Ú__qualname__r
   r   r#   r1   r2   r5   r8   r:   r   r   r   r	   r      s   
'
!r   )r   Úloggingr   ÚosÚ	getLoggerr;   r   r   r   r   r   r	   Ú<module>   s
   
