a
    &h*                     @   s   d dl Z d dlZd dlZeeZG dd de jjZG dd de jjZ	G dd de jj
ZG dd	 d	e jj
ZG d
d de jj
ZdS )    Nc                       s>   e Zd Zd fdd	ZejdddZdd Zd	d
 Z  Z	S )UserRegistrationModalInscription utilisateur SCAMc                    s   t  j|dd || _tjjddddd| _tjjdd	ddd| _tjjd
dddd| _tjjddddd| _	tjjddddd| _
| | j | | j | | j | | j	 | | j
 d S )N,  titletimeoutu   Prénomu   Votre prénom...T2   labelplaceholderrequired
max_lengthzNom de famillezVotre nom de famille...ZEmailzvotre.email@exemple.comd   u   Numéro de téléphonez06 12 34 56 78   u   Adresse (rue et numéro)z123 Rue de la Paix   )super__init__botdiscordui	TextInputprenomnomemail	telephonerueadd_item)selfr   r   	__class__ =/var/www/html/swiplay.fr/scambot/modules/user_registration.pyr      sJ    zUserRegistrationModal.__init__interactionc                    s   |j  I dH  | | jjs8|jjdddI dH  dS | | jjs`|jjdddI dH  dS t	| j
| jj| jj| jj| jj| jj}|jjdddI dH  |jjdt|ddI dH  dS )	uG   Traite la première partie du formulaire et demande code postal + villeNu   ❌ Format d'email invalide.T	ephemeraluF   ❌ Format de téléphone invalide. Utilisez le format: 06 12 34 56 78u;   📍 Veuillez maintenant saisir votre code postal et ville:z0Cliquez sur le bouton ci-dessous pour continuer:viewr%   )responsedefervalidate_emailr   valuefollowupsendvalidate_phoner   AddressModalr   r   r   r   ContinueRegistrationView)r   r#   Zsecond_modalr    r    r!   	on_submit7   s"    	zUserRegistrationModal.on_submitc                 C   s   d}t ||duS )zValide le format de l'emailz0^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$Nrematch)r   r   patternr    r    r!   r*   R   s    z$UserRegistrationModal.validate_emailc                 C   s"   t dd|}d}t ||duS )u)   Valide le format du téléphone françaisz[\s\-\.] z^0[1-9][0-9]{8}$N)r3   subr4   )r   ZphoneZclean_phoner5   r    r    r!   r.   W   s    z$UserRegistrationModal.validate_phone)r   )
__name__
__module____qualname__r   r   Interactionr1   r*   r.   __classcell__r    r    r   r!   r      s   /r   c                       s4   e Zd Z fddZejdddZdd Z  ZS )r/   c                    s   t  jddd || _|| _|| _|| _|| _|| _tj	j
dddddd| _tj	j
d	d
ddd| _tj	j
ddddd| _| | j | | j | | j d S )NzAdresse - Code postal et viller   r   zCode postalZ75001T   )r
   r   r   
min_lengthr   ZVilleZParisr   r	   z Pseudonyme Instagram (optionnel)zvotre_pseudo (sans @)Fr   )r   r   r   r   r   r   r   r   r   r   r   code_postalville	instagramr   )r   r   r   r   r   r   r   r   r    r!   r   `   s:    zAddressModal.__init__r"   c                    s  |j  I dH  | | jjs8|jjdddI dH  dS zn| jj }|	dr^|dd }| j
jjt|jj| j| j| j| j| j| jj| jj|r|ndd	}|rtjdd	d
tj d}|jd| j d| j dd |jd| jdd |jd| jdd |jd| j d| jj d| jj dd |rF|jdd| dd |jdd |jj|ddI dH  td| j d| j d|jj d n|jjdddI dH  W nL ty } z2td|  |jjdddI dH  W Y d}~n
d}~0 0 dS )z'Traite la finalisation de l'inscriptionNu-   ❌ Code postal invalide (5 chiffres requis).Tr$   @   )	
discord_idr   r   r   r   r   r?   r@   rA   u   ✅ Inscription réussie !u2   Vos données ont été enregistrées avec succès.i   )r   descriptioncolor	timestampu   👤 Identité )namer+   inlineu
   📧 Emailu   📞 Téléphoneu   🏠 Adresse
Fu   📸 InstagramuD   SCAMBot - Ces données seront utilisées pour vos déclarations SCAM)text)embedr%   u    ✅ Nouvel utilisateur inscrit: z ()u9   ❌ Erreur lors de l'enregistrement. Veuillez réessayer.u$   ❌ Erreur inscription utilisateur: u4   ❌ Erreur technique. Veuillez réessayer plus tard.) r(   r)   validate_postal_coder?   r+   r,   r-   rA   strip
startswithr   user_manageradd_userstruseridr   r   r   r   r   r@   r   Embedutilsutcnow	add_field
set_footerloggerinfo	Exceptionerror)r   r#   Zinstagram_cleansuccessrM   er    r    r!   r1      sN    


*(zAddressModal.on_submitc                 C   s   t d|duS )u   Valide le code postal françaisz^\d{5}$Nr2   )r   Zpostal_coder    r    r!   rO      s    z!AddressModal.validate_postal_code)	r8   r9   r:   r   r   r;   r1   rO   r<   r    r    r   r!   r/   _   s   #;r/   c                       sH   e Zd Z fddZejjdejjddej	ejj
dddZ  ZS )	r0   c                    s   t  jdd || _d S Nr   r   )r   r   modal)r   rd   r   r    r!   r      s    z!ContinueRegistrationView.__init__u   📍 Continuer l'inscriptionu   📍r
   styleemojir#   buttonc                    s   |j | jI dH  dS )z+Continue l'inscription avec le second modalN)r(   
send_modalrd   r   r#   ri   r    r    r!   continue_registration   s    z.ContinueRegistrationView.continue_registration)r8   r9   r:   r   r   r   ri   ButtonStyleprimaryr;   Buttonrl   r<   r    r    r   r!   r0      s   r0   c                       st   e Zd Z fddZejjdejjddej	ejj
dddZejjd	ejjd
dej	ejj
dddZ  ZS )UserProfileViewc                    s   t  jdd || _|| _d S rb   )r   r   r   	user_data)r   r   rq   r   r    r!   r      s    zUserProfileView.__init__u   ✏️ Modifier mes donnéesu   ✏️re   rh   c                    sh   t | jd}| jd |j_| jd |j_| jd |j_| jd |j_| jd |j_|j	
|I dH  dS )u0   Permet à l'utilisateur de modifier ses donnéesu   Modifier mes données SCAMr   r   r   r   r   N)r   r   rq   r   defaultr   r   r   r   r(   rj   )r   r#   ri   rd   r    r    r!   edit_profile   s    zUserProfileView.edit_profileu   🗑️ Supprimer mes donnéesu   🗑️c                    s"   |j jdt| jddI dH  dS )u1   Permet à l'utilisateur de supprimer ses donnéesu   ⚠️ Êtes-vous sûr de vouloir supprimer toutes vos données ?
Cette action est irréversible et vous devrez vous réinscrire pour utiliser les fonctionnalités SCAM.Tr&   N)r(   send_messageConfirmDeleteViewr   rk   r    r    r!   delete_profile   s
    zUserProfileView.delete_profile)r8   r9   r:   r   r   r   ri   rm   	secondaryr;   ro   rs   dangerrv   r<   r    r    r   r!   rp      s
   rp   c                       sp   e Zd Z fddZejjdejjdej	ejj
dddZejjdejjdej	ejj
dd	d
Z  ZS )ru   c                    s   t  jdd || _d S )N<   rc   )r   r   r   )r   r   r   r    r!   r      s    zConfirmDeleteView.__init__u   ✅ Confirmer la suppression)r
   rf   rh   c                    sr   | j jt|jj}|rXtjdddd}|jj	d|ddI dH  t
d|jj  n|jj	ddd	I dH  dS )
u0   Confirme la suppression des données utilisateuru   🗑️ Données suppriméesu=   Vos données personnelles ont été supprimées avec succès.i   )r   rE   rF   N)contentrM   r'   u   🗑️ Utilisateur supprimé: u7   ❌ Erreur lors de la suppression. Veuillez réessayer.rz   r'   )r   rR   delete_userrT   rU   rV   r   rW   r(   edit_messager\   r]   )r   r#   ri   r`   rM   r    r    r!   confirm_delete   s    z ConfirmDeleteView.confirm_deleteu   ❌ Annulerc                    s   |j jdddI dH  dS )zAnnule la suppressionu8   ✅ Suppression annulée. Vos données sont conservées.Nr{   )r(   r}   rk   r    r    r!   cancel_delete  s    zConfirmDeleteView.cancel_delete)r8   r9   r:   r   r   r   ri   rm   rx   r;   ro   r~   rw   r   r<   r    r    r   r!   ru      s
   ru   )r   r3   logging	getLoggerr8   r\   r   Modalr   r/   Viewr0   rp   ru   r    r    r    r!   <module>   s   
Xc
