
    Ci/                     N    d Z ddlZddlZddlZddlmZ  G d d      Z e       Zy)z+
Service d'envoi de SMS via l'API NGH Corp
    N)settingsc                       e Zd ZdZdZdZd Zeddede	fd       Z
eddede	fd       Zd	e	d
e	defdZd	e	de	defdZd	e	de	defdZy)
SMSServicezService pour envoyer des SMSz)https://extranet.nghcorp.net/api/send-smsMiGbloinc                 X    t         j                  | _        t         j                  | _        y )N)r   SMS_API_KEYapi_keySMS_API_SECRET
api_secret)selfs    @/home/www/lebenam.kofcorporation.com/app/services/sms_service.py__init__zSMSService.__init__   s    ++"11    lengthreturnc                 j    dj                  t        j                  t        j                  |             S )u   
        Génère un code OTP aléatoire
        
        Args:
            length: Longueur du code (par défaut 6)
            
        Returns:
            Code OTP numérique
         k)joinrandomchoicesstringdigitsr   s    r   generate_otpzSMSService.generate_otp   s"     wwv~~fmmv>??r   c                     dj                  t        j                  t        j                  t        j
                  z   |             S )u   
        Génère une référence aléatoire pour le SMS
        
        Args:
            length: Longueur de la référence
            
        Returns:
            Référence alphanumérique
        r   r   )r   r   r   r   ascii_uppercaser   r   s    r   generate_referencezSMSService.generate_reference    s.     wwv~~f&<&<v}}&LPVWXXr   phone_numbermessagec                    K   | j                   ||| j                         | j                  | j                  d}	 t	        j
                  d      4 d{   }|j                  | j                  |ddi       d{   }|j                          |j                         cddd      d{    S 7 ]7 77 	# 1 d{  7  sw Y   yxY w# t        j                  $ r}t        dt        |             d}~ww xY ww)	u]  
        Envoie un SMS via l'API NGH Corp
        
        Args:
            phone_number: Numéro de téléphone du destinataire
            message: Contenu du message
            
        Returns:
            Réponse de l'API sous forme de dictionnaire
            
        Raises:
            Exception: En cas d'erreur lors de l'envoi
        )fromtotext	referencer	   r   g      >@)timeoutNzContent-Typezapplication/json)jsonheaderszErreur lors de l'envoi du SMS: )SENDERr   r	   r   httpxAsyncClientpostAPI_URLraise_for_statusr(   	HTTPError	Exceptionstr)r   r    r!   payloadclientresponsees          r   send_smszSMSService.send_sms-   s      KK002||//
	H((6 ' '&!'LL +-?@ "- "  ))+}}' ' '' ' ' '  	H=c!fXFGG	Hs   6C>C B1C $B7;B3<#B7C +B5,C 0C>1C 3B75C 7C	=C >C	C C>	C C;C66C;;C>otp_codec                 N   K   d| d}| j                  ||       d{   S 7 w)u   
        Envoie un code OTP par SMS
        
        Args:
            phone_number: Numéro de téléphone
            otp_code: Code OTP à envoyer
            
        Returns:
            Réponse de l'API
        z(Votre code de verification Lebenam est: z!. Ce code expire dans 10 minutes.Nr7   )r   r    r8   r!   s       r   send_otpzSMSService.send_otpR   s.      =XJFgh]]<9999   %#%
first_namec                 N   K   d| d}| j                  ||       d{   S 7 w)u   
        Envoie un SMS de bienvenue
        
        Args:
            phone_number: Numéro de téléphone
            first_name: Prénom de l'utilisateur
            
        Returns:
            Réponse de l'API
        zBienvenue sur Lebenam z&! Votre compte a ete cree avec succes.Nr:   )r   r    r=   r!   s       r   send_welcome_smszSMSService.send_welcome_sms`   s.      +:,6\]]]<9999r<   N)   )   )__name__
__module____qualname____doc__r.   r*   r   staticmethodintr2   r   r   dictr7   r;   r?    r   r   r   r   	   s    &9GF2 
@S 
@ 
@ 
@ 
Y3 
Ys 
Y 
Y#H3 #H #H #HJ:3 :# :$ ::3 :C :D :r   r   )rE   r+   r   r   app.core.configr   r   sms_servicerI   r   r   <module>rL      s.       $c: c:L lr   