
    h"                        d dl mZmZmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ  ed	d
g      Z G d de      Z G d de      Z G d de      Zej-                  de       ee       ee      fdedefd       Zej1                  de       ee       ee      fdededefd       Zej5                  d       ee       ee      fdedefd       Zy)    )	APIRouterDependsHTTPException)Session)datetime)ListOptional)get_db)User)get_current_user)	BaseModelz/notification-settingsznotification-settings)prefixtagsc                   :    e Zd ZU eed<   eed<   eed<   dZeed<   y)MetricAlertmetric	thresholdoperatorTenabledN)__name__
__module____qualname__str__annotations__floatr   bool     7/var/www/notifications/app/api/notification_settings.pyr   r      s    KMGTr   r   c                   L    e Zd ZU dZeed<   g Zee   ed<   dZ	eed<   dZ
eed<   y)NotificationSettingsTemail_alertsmetric_alertsFweekly_reportdaily_summaryN)r   r   r   r"   r   r   r#   r   r   r$   r%   r   r   r   r!   r!      s/    L$')M4$)M4M4r   r!   c                   J    e Zd ZU eed<   eed<   eed<   eed<    G d d      Zy)NotificationSettingsOutid	tenant_id
created_at
updated_atc                       e Zd ZdZy)NotificationSettingsOut.ConfigTN)r   r   r   from_attributesr   r   r   Configr-   !   s    r   r/   N)r   r   r   intr   r   r/   r   r   r   r'   r'      s"    GN r   r'    )response_modelcurrent_userdbc                     t        d| j                  dt        dddd      t        dddd      gd	d	t        j                         t        j                         
      S )z(Get notification settings for the tenant   Tdelivery_rateg      T@below)r   r   r   r   	open_rateg      I@Fr(   r)   r"   r#   r$   r%   r*   r+   )r'   r)   r   r   utcnowr3   r4   s     r   get_notification_settingsr=   %   s_     #(($Z^_{dWVZ[
 ??$??$ r   settingsc                     t        d|j                  | j                  | j                  | j                  | j
                  t        j                         t        j                               S )z+Update notification settings for the tenantr6   r:   )r'   r)   r"   r#   r$   r%   r   r;   )r>   r3   r4   s      r   update_notification_settingsr@   <   sU     #((**,,,,,,??$??$	 	r   z/test-alertc                     dddS )z1Send a test alert to verify notification settingszTest alert sent successfullysuccess)messagestatusr   r<   s     r   
test_alertrE   Q   s     6KKr   N)fastapir   r   r   sqlalchemy.ormr   r   typingr   r	   app.db.sessionr
   app.db.modelsr   app.api.depsr   pydanticr   routerr   r!   r'   getr=   putr@   postrE   r   r   r   <module>rQ      s'   5 5 "  ! !  ) 	2:Q9R	S)  9  2  B67 !12&/ 8, B67 !!12&/" 	 8( ] !12&/LLL Lr   