
    h+                     <   S SK r S SKJrJrJrJrJrJr  S SKrS SK	r	S SK
Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  \" 5       r\" 5         \ R4                  " S
S5      r\ R8                  " \SS9  \R;                  S5      \" S5      \" S 5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" \5      4	S\S\S\S\S\ S\ S\S\S\!4S jj5       r"\RG                  S5      \" \5      4S\!4S jj5       r$\RK                  S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" \5      4	S\S\S\S\S\S\ S\ S\S\S\!4S jj5       r&\RO                  S5      \" \5      4S\S\!4S jj5       r(g)    N)	APIRouterDependsHTTPException
UploadFileFileForm)"disable_installed_extensions_check)check_user_is_admin)select)Program)Category)admin)GeneralStateFILE_STORAGE_PATHfilesT)exist_okz	/programs.namedurationdescriptionprerequisitespriceprice_discountcategory_idimagedependenciesc	                    Uu  pU	R                  [        5      R                  [        R                  U:H  5      R	                  5       nU(       d
  [        SSS9eU UUUUUUS.nU(       a  [        R                  R                  UR                  5      S   n[        R                  " 5        U 3n[        R                  R                  [        U5      n[        US5       nUR                  UR                   R#                  5       5        S S S 5        XS'   [%        S0 UD6nU	R'                  U5        U	R)                  5         U	R+                  U5        U$ ! , (       d  f       NQ= f)	N  Category not foundstatus_codedetail)r   r   r   r   r   r   r      wbr    )queryr   filteridfirstr   ospathsplitextfilenameuuiduuid4joinr   openwritefilereadr   addcommitrefresh)r   r   r   r   r   r   r   r   r   dbr   categoryprogram_dataextr,   filepathfprograms                     DD:\kofCorporation\kof-academy-backend\app\routers\admins\programs.pycreate_programr?      s    IBxx!(()CDJJLH4HII "&("L ggu~~.q1jjl^C5)77<< 18<(D!QGGEJJOO%& " (W%%GFF7OIIKJJwN "!s   *E
E"c                     U u  pUR                  [        [        5      R                  [        R                  [
        R                  :H  5      5      nUR                  5       R                  5       $ )N)	executer   r   wherestater   ACTIVEscalarsall)r   r7   r   results       r>   list_programsrH   I   sK    IBZZw--gmm|?R?R.RSTF>>!!    z/programs/{program_id}
program_idc
                    U	u  pU
R                  [        5      R                  [        R                  U :H  5      R	                  5       nU(       d
  [        SSS9eUbT  U
R                  [        5      R                  [        R                  U:H  5      R	                  5       nU(       d
  [        SSS9e0 nUb  XS'   Ub  X.S'   Ub  X>S'   Ub  XNS'   Ub  X^S	'   Ub  XnS
'   Ub  X~S'   U(       a  [        R                  R                  UR                  5      S   n[        R                  " 5        U 3n[        R                  R                  [        U5      n[        US5       nUR!                  UR"                  R%                  5       5        S S S 5        UUS'   UR'                  5        H  u  nn[)        UUU5        M     U
R+                  5         U
R-                  U5        U$ ! , (       d  f       N]= f)Nr   Program not foundr   r   r   r   r   r   r   r   r   r"   r#   r   )r%   r   r&   r'   r(   r   r   r)   r*   r+   r,   r-   r.   r/   r   r0   r1   r2   r3   itemssetattrr5   r6   )rJ   r   r   r   r   r   r   r   r   r   r7   r   r=   r8   update_datar:   r,   r;   r<   fieldvalues                        r>   update_programrR   O   s    IB hhw&&wzzZ'?@FFHG4GHH 88H%,,X[[K-GHNNPC8LMM K"F"*J%0M" '4O$$G!(6$%%0M" ggu~~.q1jjl^C5)77<< 18<(D!QGGEJJOO%& "'G $))+u& , IIKJJwN "!s   *G  
G.c                 @   Uu  p#UR                  [        [        5      R                  [        R                  U :H  5      5      nUR                  5       nU(       d  [        SS5      e[        R                  Ul	        UR                  5         UR                  U5        SS0$ )Nr   rL   messagezProgram deleted successfully)rA   r   r   rB   r'   scalar_one_or_noner   r   DELETEDrC   r5   r6   )rJ   r   r7   r   rG   r=   s         r>   delete_programrW      s|    IBZZw--gjjJ.FGHF'')GC!455 ((GMIIKJJw566rI   ))r)   fastapir   r   r   r   r   r   shutilr-   fastapi_pagination.utilsr	   app.utils.authentificationr
   sqlalchemy.futurer   app.models.programr   app.models.categoryr   app.schemasr   schemasapp.enums.general_stater   routergetenvr   makedirspoststrintfloattupler?   getrH   putrR   deleterW   r$   rI   r>   <module>rm      s/   	 M M  G : $ ' ( ( 0 
 " $II17;   -[S	GDzd9 JCyT
!"56*
** * 	*
 * * * * * *Z K(/0C(D " " "
 $% T
JDzd: JDzT
!"5699
9 9 	9
 9 9 9 9 9 9 &9v '(:ABU:V 	7s 	7% 	7 )	7rI   