
    mh/                     2   d dl Z d dlmZmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ  e       Z e         e j0                  dd      Zej5                  d       ee      fdedefd       Zej=                  d       ee      fdefd       Zej=                  d       ee      fde defd       Z!ej=                  d       ee      fde defd       Z"ej=                  d       ee      fde defd       Z#y)    N)	APIRouterDependsHTTPException)"disable_installed_extensions_check)Program)Payment)PaymentState)RegistrationState)Registration)CinetpayHelper)check_token_validity)get_random_intFILE_STORAGE_PATHfilesz/payments/initiate
program_iddependenciesc           	        K   |\  }}|j                  t              j                  t        j                  | k(        j	                         }|sddidfS dt        d       }d|j                   }d|j                  i}d}d	}	t        ||j                  |j                  t        j                  |j                  
      }
|j                  |
       |j                          |j                  |
       t        j                  |t!        |j                        ||||	|       d {   }t#        |t$              rd|v rd|d   v r|d   d   }d|dS d|dS 7 1w)Nmessageu   Programme non trouvé  TX   zPaiement pour le programme r   z"https://example.com/payment-returnz"https://example.com/payment-cancel)	referenceamountuser_idstatepayment_value)transaction_idr   metadatadescription
return_url
cancel_urluserdatapayment_urlu   Paiement initié)r   payment_linkz'Erreur lors de l'initiation du paiement)r   error)queryr   filteridfirstr   namer   pricer	   PENDINGaddcommitrefreshr   generate_payment_linkint
isinstancedict)r   r   dbr"   programr   r   r   r    r!   paymentresponser$   s                d/Users/theessential/Documents/Github/KofAcademy/kof-academy-backend/app/routers/students/payments.pycreate_paymentr:      sV    HBhhw&&wzzZ'?@FFHG23S88 .+,-N/~>Kgjj)H5J5J  }}""mmG FF7OIIKJJw#99%7==! H (D!f&8]hW]N^=^v&}5-LLDxXX!s   D E"E#2Ez/users/me/paymentsc                     | \  }}|j                  t              j                  t        j                  |j                  k(        j                         }|S )N)r'   r   r(   r   r)   all)r   r5   r"   paymentss       r9   my_paymentsr>   K   s?    HBxx ''477(BCGGIHO    z/payment-returnr   c                   K   |\  }}t        j                  |        d {   }|d   dk7  rt        dd      |j                  t              j                  t        j                  | k(        j                         }|st        dd      t        j                  |_
        |j                  dd      |_        |j                          |j                  |       t        |j                   |j                   |j                  d	i       j                  d
      t"        j                        }|j%                  |       |j                          |j                  |       d|j                   dS 7 Hw)Ncode00i  u   Paiement non validér   Paiement introuvablepayment_methodunknownr   r   )r   
payment_idr   statusu   Paiement validér   r7   )r   check_transactionr   r'   r   r(   r   r*   r	   PAIDr   getmethodr/   r0   r   r)   r
   r.   )r   r   r5   r"   status_datar7   registrations          r9   payment_returnrO   U   s(     HB&88HHK 6d"C!788 hhw&&w'8'8N'JKQQSGC!788 %%GM __%5yAGNIIKJJw"::&??:r:>>|L(--	L FF<IIKJJ|)gjjAA5 Is   E+E(EE+z/payment-cancelc                 ,  K   |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      t        j                  |_        |j                          |j                  |       d|dS w)u&   Callback CinetPay si paiement annulé.r   rC   u   Paiement annulérH   )r'   r   r(   r   r*   r   r	   	CANCELLEDr   r/   r0   )r   r   r5   r"   r7   s        r9   payment_cancelrR   v   s|      HBhhw&&w'8'8N'JKQQSGC!788 **GMIIKJJw)g>>s   BBz/cinetpay-notifyc                 ~   K   |\  }}t        j                  |        d {   }|j                  d      dk(  ryy7 w)NrA   rB      r   )r   rI   rK   )r   r   r5   r"   r8   s        r9   cinetpay_notifyrU      sE      HB#55nEEH||Ft#   Fs   =;=)$osfastapir   r   r   fastapi_pagination.utilsr   app.models.baser   app.models.paymentr   app.enums.payment_stater	   app.enums.registration_stater
   app.models.registrationr   app.services.cinetpay_helperr   app.utils.authentificationr   app.utils.helpersr   routergetenvr   postr2   tupler:   rK   r>   strrO   rR   rU    r?   r9   <module>rg      sZ   	 6 5 G # & 0 :
 1 7 ; ,	 " $BII17;  !"@GH\@] *YS *Y *Y #*YZ  !&-.B&C e  " DKL`Da B BE B B@ DKL`Da ? ?E ? ? ELMaEb # U   r?   