o
    eOj                     @   s6  d dl Z d dlmZmZmZ d dlm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mZmZmZ e Zd	Zd%dedededefddZed
d&dedefddZeddefddZeded
eded
ed
fdededededef
dd Zed!ded"efd#d$Z dS )'    N)	APIRouterRequestFormRedirectResponse)selectfuncdesc)Optional)render)AsyncSessionFactory)BroadcastMessageBroadcastTargetBroadcastStatus	MediaType    successurlmsgtype_returnc                 C   s0   d| v rdnd}t |  | d| d| ddS )N?&zmsg=z&type=i.  )status_coder   )r   r   r   sep r   D/var/www/www-root/data/www/ai-bot.pdev.uz/admin/routers/broadcast.py	_redirect   s    r      requestpagec              
      s   |d t  }t 4 I d H ;}|tttjI d H }| }|tt	t
tjt |I d H }t|  }W d   I d H  n1 I d H sOw   Y  t| d||||rft|t  tdS dtdS )Nr   zbroadcast/list.html)
broadcaststotalr!   total_pagesr   )PER_PAGEr   executer   r   countr   id
scalar_oneorder_byr	   
created_atlimitoffsetlistscalarsallr   mathceilr   )r    r!   r-   sessiontotal_rr#   broadcasts_rr"   r   r   r   broadcast_list   s*   
(
r6   z/createc                    s   t | dttdS )Nbroadcast/create.html)targets)r   r.   r   )r    r   r   r   broadcast_create_page*   s   r9   r0   texttargetmedia_file_id
media_typec              
      s   |  s|  st| dttddS | jj}t 4 I d H 6}t|  p%d |  p*d |r0t|nd t|t	j
t|d d}|| | I d H  W d   I d H  n1 I d H sZw   Y  tddS )Nr7   z&Matn yoki media fayl kiritilishi kerak)r8   errorsub)r:   r<   r=   r;   status
created_by
/broadcastz2Broadcast yaratildi. Telegram bot orqali yuboring.)stripr   r.   r   stateadminr   r   r   r   PENDINGintaddcommitr   )r    r:   r;   r<   r=   rE   r3   	broadcastr   r   r   broadcast_create0   s(   



(
rK   z/{broadcast_id}/cancelbroadcast_idc              	      s   t  4 I d H U}|tttj|kI d H }| }|s/tdddW  d   I d H  S |jt	j
t	jfvrHtdddW  d   I d H  S t	j|_| I d H  W d   I d H  n1 I d H scw   Y  tddS )NrB   zBroadcast topilmadidangerz"Bu broadcast bekor qilib bo'lmaydiwarningzBroadcast bekor qilindi)r   r&   r   r   wherer(   scalar_one_or_noner   r@   r   rF   RUNNING	CANCELLEDrI   )r    rL   r3   b_rrJ   r   r   r   broadcast_cancelM   s    


	(
rT   )r   r   )r   )!r1   fastapir   r   r   fastapi.responsesr   
sqlalchemyr   r   r	   typingr
   admin.responsesr   bot.database.connectionr   bot.database.modelsr   r   r   r   routerr%   strr   getrG   r6   r9   postrK   rT   r   r   r   r   <module>   sB    