o
    <6j                     @   s  d dl mZmZ d dlmZ d dlmZm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mZmZmZ d d	lmZmZ d d
lmZmZ d dlmZ d dl m!Z! d dl"m#Z# eddZ$G dd deZ%e$&ej'dkde
dedede(ddf
ddZ)de*de(defddZ+e$&ej'dkde
dede(deddf
d d!Z,e$-e%j.d"e	dede(deddf
d#d$Z/e$&ej'0d%de
dedede(ddf
d&d'Z1dS )(    )RouterF)
FSMContext)StateStatesGroup)MessageCallbackQueryInlineKeyboardMarkupInlineKeyboardButton)InlineKeyboardBuilder)AsyncSession)settings)get_all_admins	add_adminremove_adminget_admin_by_telegram_id)get_userget_or_create_user)User	AdminRole)is_admin)build_back_to_panel_keyboard)get_textadmin_adminsnamec                   @   s   e Zd Ze Ze ZdS )
AdminStateN)__name__
__module____qualname__r   waiting_add_idwaiting_remove_id r"   r"   F/var/www/www-root/data/www/ai-bot.pdev.uz/bot/handlers/admin/admins.pyr      s    
r   zadmin:adminscallbacksessiondb_userlangreturnNc                    s  | j jtjvr| jtd|ddI dH  dS t|I dH }t||}td|d }|s1|d7 }nCt|dD ]=\}}|j	t
jkrBd	n	|j	t
jkrJd
nd}	|jrS|jjnd}
|jr\|jjnd}|| d|	 d|
 d| d|j	j d
7 }q6| jj||dI dH  |  I dH  dS )zAdminlar ro'yxatini ko'rsatishaccess-deniedT
show_alertNadmins-list

u   📭 Hali admin yo'q.      👑u   👮   🛡?.  <b></b> [<code>u   </code>] — 
reply_markup)	from_useridr   super_admin_listanswerr   r   _build_admins_keyboard	enumerateroler   SUPER_ADMINADMINuser	full_nametelegram_idvaluemessage	edit_text)r$   r%   r&   r'   adminskeyboardtextiadmin
role_emojir   tg_idr"   r"   r#   callback_admins_list   s    	

$,rN   rG   c                 C   s   t  }| D ]!}|jr|jjnd}|td|jr|jjnd d| d q|tddd |ttd|d	d | S )
Nr   u   🗑 r1   admin:remove_admin:)rI   callback_datau   ➕ Admin qo'shishadmin:add_adminzbtn-backzadmin:panel)r   rA   rC   rowr
   rB   r   	as_markup)rG   r'   builderrK   rM   r"   r"   r#   r<   ;   s,   r<   rQ   statec                    sj   | j jtjvr| jtd|ddI d H  d S | jtd|I d H  |tj	I d H  |  I d H  d S )Nr)   Tr*   zadmin-add-prompt)
r8   r9   r   r:   r;   r   rE   	set_stater   r    )r$   r&   r'   rU   r"   r"   r#   callback_add_adminV   s   rW   rE   c                    s  |  I dH  | j }zt|}W n ty%   | dI dH  Y dS w |tjv r5| dI dH  dS t||I dH }|rL| t	d|I dH  dS t
||I dH }|sc| t	d|I dH  dS t||tj| jjdI dH  | t	d||jdI dH  dS )	z*Yangi admin Telegram ID sini qayta ishlashNu9   ❌ Noto'g'ri format. Faqat raqam (Telegram ID) kiriting.u/   ⚠️ Bu foydalanuvchi allaqachon super admin.zadmin-already-existszuser-not-found)r%   rA   r>   added_byzadmin-addedr   )clearrI   stripint
ValueErrorr;   r   r:   r   r   r   r   r   r@   r8   r9   rB   )rE   r%   r'   rU   rI   	target_idexistingrA   r"   r"   r#   process_add_adminf   s6   

 r_   rO   c              
      s^  | j jtjvr| jtd|ddI d H  d S t| jdd }|tjv r5| jtd|ddI d H  d S t	||I d H }|r| td|I d H  t
|I d H }t||}td|d	 }t|d
D ]0\}	}
|
jtjkrndnd}|
jrw|
jjnd}|
jr|
jjnd}||	 d| d| d| d7 }qb| jj||dI d H  d S | jtd|ddI d H  d S )Nr)   Tr*   :   zadmin-cannot-remove-superzadmin-removedr,   r-   r.   r/   r0   r1   r2   r3   r4   z	</code>]
r6   zadmin-not-found)r8   r9   r   r:   r;   r   r[   datasplitr   r   r<   r=   r>   r   r@   rA   rB   rC   rE   rF   )r$   r%   r&   r'   r]   removedrG   rH   rI   rJ   rK   rL   r   rM   r"   r"   r#   callback_remove_admin   s*   

"re   )2aiogramr   r   aiogram.fsm.contextr   aiogram.fsm.stater   r   aiogram.typesr   r   r	   r
   aiogram.utils.keyboardr   sqlalchemy.ext.asyncior   
bot.configr   bot.database.crud.adminr   r   r   r   bot.database.crud.userr   r   bot.database.modelsr   r   bot.handlers.admin.panelr   bot.keyboards.admin_kbr   bot.services.i18nr   routerr   callback_queryrb   strrN   listr<   rW   rE   r    r_   
startswithre   r"   r"   r"   r#   <module>   s    

.