
    mh                        d dl Z d dlZd dlmZ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 d dlmZ  e       Z e         ej6                  dd      Zej;                  d       ed       ed       ed       ee
      fdedededede f
d       Z!ej;                  d       ee
      fdedede fd       Z"ejG                  d       ee
      fde fd       Z$ejK                  d       ed       ed       ed       ee
      fdedededede f
d       Z&ejO                  d       ee
      fdede fd       Z(y)     N)	APIRouterDependsHTTPExceptionForm)"disable_installed_extensions_check)check_user_is_admin)GeneralState)RoleType)
AssignRole)UserWave)WaveResponse)Wave)Program)UserFILE_STORAGE_PATHfilesz/programs/{program_id}/add-wave.
program_idtitle
start_dateend_datedependenciesc                 4   |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      t        ||||       }|j                  |       |j                          |j                  |       |S )N  zProgram not found)r   r   r   r   )
queryr   filteridfirstr   r   addcommitrefresh)	r   r   r   r   r   dbadminprogramwaves	            _/Users/theessential/Documents/Github/KofAcademy/kof-academy-backend/app/routers/admins/waves.pyadd_waver&      s     IB hhw&&wzzZ'?@FFHGC!455 	D FF4LIIKJJtK    z/waves/{wave_id}/assign-userwave_iduser_idc                    |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      |j                  t              j                  t        j                  |k(        j	                         }|st        dd      |j                  t              j                  t        j                  |k(  t        j                  | k(        j	                         }|r
dd| d|  iS t        ||       }|j                  |       |j                          |j                  |       dd| d|  iS )	Nr   Wave not foundzUser not foundmessagezUser z is already assigned to wave )r)   r(   z assigned to wave )r   r   r   r   r   r   r   r   r)   r(   r   r   r    )	r(   r)   r   r!   r"   r$   userexisting_linklinks	            r%   assign_userr0   :   s(    IB 88D>  G!34::<DC!122 88D>  G!34::<DC!122 		  G+X-=-=-H	I	 
 U7)+H	RSS GW5DFF4LIIKJJtwi'9'CDDr'   z/wavesc                 j   | \  }}|j                  t              j                  t        j                  t        j
                  k(        j                         }|j                  t              j                  t        j                  j                  |D cg c]  }|j                   c}      t        j                  t        j                  k(  t        j                  t        j
                  k(        j                         }|j                  t              j                  t        j                  j                  |D cg c]  }|j                   c}      t        j                  t        j                  k(  t        j                  t        j
                  k(        j                         }|||dS c c}w c c}w )N)wavestrainersstudents)r   r   r   stater	   ACTIVEallr   r(   in_r   roler
   TRAINERSTUDENT)r   r!   r"   r2   r$   r3   r4   s          r%   
list_wavesr<   ^   sa   IBHHTN!!$**0C0C"CEIIKExx~$$T\\%5%556Q4tww6Q%RTXT]T]aiaqaqTqsws}s}  BN  BU  BU  tU  V  Z  Z  \Hxx~$$T\\%5%556Q4tww6Q%RTXT]T]aiaqaqTqsws}s}  BN  BU  BU  tU  V  Z  Z  \H 
 
 7R6Qs   F+9F0z/waves/{wave_id}c                 *   |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      |||_        |||_        |||_        |j                          |j                  |       |S )Nr   r+   )r   r   r   r   r   r   r   r   r   r   r    )r(   r   r   r   r   r!   r"   r$   s           r%   update_waver>   l   s     IB88D>  G!34::<DC!122
$ IIKJJtKr'   c                 "   |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      t        j                  |_        |j                          |j                  |       ddiS )Nr   r+   r,   zWave deleted successfully)r   r   r   r   r   r   r	   DELETEDr5   r   r    )r(   r   r!   r"   r$   s        r%   delete_waverA      st    IB88D>  G!34::<DC!122%%DJIIKJJt233r'   ))datetimeosfastapir   r   r   r   fastapi_pagination.utilsr   app.utils.authentificationr   app.enums.general_stater	   app.enums.role_typer
   app.schemas.adminr   app.models.user_waver   r   app.models.waver   app.models.programr   app.models.userr   routergetenvr   postintstrtupler&   r0   getr<   putr>   deleterA    r'   r%   <module>rX      s    	 < ; G : 0 ( ( ) +   &  	 " $BII17; ./ c3iI!"56  	
  0: +, ""56 E E E  E - EF H%,-@%A 	
U 	
 	
  d4jJ!"56  	
   6 !"4;<O4P 
4 
4E 
4 #
4r'   