
    Żf                     v   d dl mZmZ d dlmZ ddlmZmZmZm	Z	m
Z
  e       Z eddgddd	ii
      Zej                  d      defd       Zej                  d      defd       Zej#                  d      dedefd       Zej                  d      defd       Zej                  d      dedefd       Zy)    )	APIRouterRequest)JSONResponse   )MONGODB_DATABASEmongodb_connectcheck_accessget_user_subsend_push_notificationz/notificationsnotifications  descriptionz	Not found)prefixtags	responses requestc                 ~  K   | j                   d   j                  dd      }t        |dg       t        |      }	 t	        t
        t           d   j                  d|iddi      j                  d	d
            }d|dd}t        |d      S # t        $ r&}ddt        |      d}t        |d      cY d }~S d }~ww xY ww)NauthorizationBearer r   *r   user_sub_idr   sent_atsuccessGetNotifications)statuscontentendpoint   r   status_codeerrorr   r    message  )headersreplacer	   r
   listmongodb_clientr   findsortr   	Exceptionstr)r   
auth_tokenr   r   responseObjectes         WC:\Users\ChattiNader\Documents\EpsilonGroupe\api-vastappli\app\routers\notifications.pyget_notificationsr4      s     199)RHJcU#J'HE^,<=oNSS"AJ
 $y"

  $*

 NDD E*1v

 NDDEs5   8B=AB 
B=	B:B5/B:0B=5B::B=c                   K   | j                   d   j                  dd      }t        |dg       t        |      }	 t        t
           d   j                  |dddd	d
ii      }|j                  dk(  rdddd}t        |d      S dddd}t        |d      S # t        $ r&}ddt        |      d}t        |d      cY d }~S d }~ww xY ww)Nr   r   r   r   r   sent)r   r   $setr   readr   r$   ReadAllNotificationsu   Aucune notification à lirer%   r   r"   r   u7   Toutes les notifications ont été marquées comme luesr!   r'   )r(   r)   r	   r
   r+   r   update_manymodified_countr   r.   r/   )r   r0   my_user_subresultr1   r2   s         r3   read_all_notificationsr>   $   s     199)RHJcU#z*KE 01/BNN$7h'(

   A%!28N
  CHH  .P

 NDD E.1v

 NDDEsA   8C	AB C	B C		C C;C<C	CC	z/token/update
token_datac                 J  K   | j                   d   j                  dd      }t        |      }|sdddd}t        |d	      S |j	                  d
      }|sdddd}t        |d	      S t
        t           d   j                  d
|idd|iid       dddd}t        |d	      S w)Nr   r   r   r$   UpdatePushTokenzInvalid userr%   i  r"   tokenzToken is requiredi  push_tokensr7   r   T)upsertr   zPush token updated successfullyr!   )r(   r)   r
   r   getr+   r   
update_one)r   r?   r0   r   r1   rB   s         r3   update_push_tokenrG   F   s     199)RHJJ'H)%

 NDDNN7#E)*

 NDD#$]3>>	%	*h'( ?  %4N
 C@@s   B!B#z
/send/testc                    K   | j                   d   j                  dd      }t        |dg       t        t        t
           d   j                  dddd	d
d            }t        |dd       dddd}t        |d      S w)z2Send a push notification to users with 'see' role.r   r   r   r   usersseeT)rolesactiver      )r   subAlertzIThis is a test notification, sent by the API to users with the 'see' roler   SendTestNotificationzPush notifications sentr%   r!   r"   )	r(   r)   r	   r*   r+   r   r,   r   r   )r   r0   rI   r1   s       r3   send_test_notificationrQ   i   s      199)RHJcU# 01':??4(! E
 5'+vw *,N
 C@@s   A<A>z/{sub}rN   c                   K   | j                   d   j                  dd      }t        |dg       	 t        t           d   j                  d|idddd	      }|sd
dd| dd}t        |d      S t        t           d   j                  d|idddii      }|j                  dk(  rd
ddd}t        |d      S ddd| dd}t        |d      S # t        $ r&}d
dt        |      d}t        |d      cY d }~S d }~ww xY ww)Nr   r   r   r   r   rN   r   rM   )r   rN   r   r$   ReadNotificationszNotification 'z' n'existe pasr%   r   r"   r7   r   r8   u1   Erreur lors de la mise à jour de la notificationr'   r   z' lur!   )r(   r)   r	   r+   r   find_oner   rF   matched_countr.   r/   )r   rN   r0   notification_cursorr1   r=   r2   s          r3   read_notificationsrW   }   sI    199)RHJcU#'E,-=>OXXCLa1-

 #!/+C5?N
  CHH 01/BMMCLh'(

 1$!/NN
  CHH  +'uD1

 NDD E+1v

 NDDEsM   -D >C .D /AC 6D 7C D 	C=C82C=3D 8C==D N)fastapir   r   fastapi.responsesr   utilsr   r   r	   r
   r   r+   routerrE   r4   putr>   postdictrG   rQ   r/   rW        r3   <module>ra      s   & * i i "	
	]K01
 BEW E E. BE' E EB _ AW  A$  A  AD LA' A A& H+Eg +EC +E +Er`   