Ë
    Íµ&jÎ  ã                   ó  — 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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  edg¬«      Zdedefd„Zdededdfd„ZejA                  ded¬«       ee
«       ee«      fdedefd„«       Z!ejE                  ded¬«       ee
«       ee«      fdedefd„«       Z#ejE                  ded¬«       ee
«       ee«      fdedefd„«       Z$ejA                  ded¬«       ee
«       ee«      fd ededefd!„«       Z%ejA                  d"ed#¬«       ee
«       ee«      fdedefd$„«       Z&ejA                  d%ed&¬«       ee
«       ee«      fd ededefd'„«       Z'y)(é    )Ú	APIRouterÚDependsÚHTTPExceptionÚstatus)Úfunc)ÚSession)Úget_db)Úrequire_user_token)ÚUser)ÚMemberNotificationÚMemberNotificationTypeÚMemberSessionProgress)ÚMemberNotificationIdRequestÚMemberNotificationListResponseÚ%MemberNotificationUnreadCountResponseÚMessage)Úis_coach_feedback_text)Úserialize_member_notificationzuser-member-notifications)ÚtagsÚrowÚreturnc                 ó  — | j                   xs dj                  «       }| j                  xs dj                  «       }|s| j                  �d| j                  › �}|s"| j                  xs dj                  «       xs d}d|› d|› �S )NÚ zSession zyour sessionzYou received feedback for z: )ÚfeedbackÚstripÚsession_nameÚsession_numberÚ	week_name)r   r   Úsession_labels      úI/var/www/html/kelly/kelly-backend/app/routers/user_panel/notifications.pyÚ_feedback_messager!      s…   € Ø—‘Ò" ×)Ñ)Ó+€HØ×%Ñ%Ò+¨×2Ñ2Ó4€MÙ˜S×/Ñ/Ð;Ø" 3×#5Ñ#5Ð"6Ð7ˆÙØŸ™Ò,¨"×3Ñ3Ó5ÒG¸ˆØ'¨ °b¸¸
ÐCÐCó    ÚdbÚuserNc           
      ó¢  — | j                  t        «      j                  t        j                  |j                  k(  t        j
                  j                  d «      t        j                  t        j                  t        j
                  «      «      dkD  t        j                  j                  d«      «      j                  t        j                  j                  «       t        j                  j                  «       «      j                  «       }d}|D �]+  }t!        |j
                  «      s
d|_
        d}Œ#d}t#        |«      }| j                  t$        j                  «      j                  t$        j                  |j                  k(  t$        j&                  t(        j
                  j*                  k(  t$        j,                  |k(  t$        j.                  |k(  «      j1                  «       }|rŒØ| j3                  t%        |j                  t(        j
                  j*                  |||j4                  ¬«      «       d|_
        d}�Œ. |r| j7                  «        y y )Nr   FTzFeedback received)Úuser_idÚnotification_typeÚtitleÚmessageÚ
sent_by_id)Úqueryr   Úfilterr&   Úidr   Úisnotr   ÚlengthÚtrimÚfeedback_notifiedÚis_Úorder_byÚ
updated_atÚascÚallr   r!   r   r'   r   Úvaluer(   r)   ÚfirstÚaddÚassigned_by_idÚcommit)r#   r$   Úfeedback_rowsÚaddedr   r(   r)   Úexistss           r    Ú_sync_feedback_notificationsr?      sÂ  € à
�‰Ô&Ó'ß	‰Ü!×)Ñ)¨T¯W©WÑ4Ü!×*Ñ*×0Ñ0°Ó6Ü�K‰KœŸ	™	Ô"7×"@Ñ"@ÓAÓBÀQÑFÜ!×3Ñ3×7Ñ7¸Ó>ó	

÷ 
‰Ô'×2Ñ2×6Ñ6Ó8Ô:O×:RÑ:R×:VÑ:VÓ:XÓ	Yß	‰‹ð ð €EÜˆÜ% c§l¡lÔ3Ø$(ˆCÔ!ØˆEØà#ˆÜ# CÓ(ˆà�H‰HÔ'×*Ñ*Ó+ß‰VÜ"×*Ñ*¨d¯g©gÑ5Ü"×4Ñ4Ô8N×8WÑ8W×8]Ñ8]Ñ]Ü"×(Ñ(¨EÑ1Ü"×*Ñ*¨gÑ5ó	÷ ‰U‹Wð 	ñ Øà
�‰ÜØŸ™Ü"8×"AÑ"A×"GÑ"GØØØ×-Ñ-ôô	
ð !%ˆÔØŠð? ñB Ø
�	‰	�ð r"   z/clear-all-member-notificationszVDelete all logged-in user notifications (including feedback), without re-creating them)Úresponse_modelÚsummaryc           	      óL  — | j                  t        «      j                  t        j                  |j                  k(  t        j
                  j                  d «      t        j                  t        j                  t        j
                  «      «      dkD  «      j                  t        j                  did¬«       | j                  t        «      j                  t        j                  |j                  k(  «      j                  d¬«      }| j                  «        t        d|› d�¬«      S )Nr   TF©Úsynchronize_sessionzCleared z notification(s)©r)   )r+   r   r,   r&   r-   r   r.   r   r/   r0   Úupdater1   r   Údeleter;   r   )r#   r$   Údeleteds      r    Ú!clear_all_my_member_notificationsrI   R   sÙ   € ð 	�‰Ô&Ó'ß	‰Ü!×)Ñ)¨T¯W©WÑ4Ü!×*Ñ*×0Ñ0°Ó6Ü�K‰KœŸ	™	Ô"7×"@Ñ"@ÓAÓBÀQÑFó

÷
 
‰Ô&×8Ñ8¸$Ð?ÐUZˆÔ	[ð 	�‰Ô#Ó$ß	‰Ô"×*Ñ*¨d¯g©gÑ5Ó	6ß	‰ EˆÓ	*ð ð
 ‡I�I„KÜ˜X g YÐ.>Ð?Ô@Ð@r"   z/list-my-notificationszCList notifications for the logged-in user, including admin feedbackc                 óª  — t        | |«       | j                  t        «      j                  t        j                  |j
                  k(  «      j                  t        j                  j                  «       t        j
                  j                  «       «      j                  «       }|D �cg c]  }t        |«      ‘Œ }}t        t        |«      |¬«      S c c}w )N)ÚtotalÚnotifications)r?   r+   r   r,   r&   r-   r3   Ú
created_atÚdescr6   r   r   Úlen)r#   r$   Úrowsr   Ú
serializeds        r    Úlist_my_notificationsrR   o   s¢   € ô !  TÔ*à
�‰Ô#Ó$ß	‰Ô"×*Ñ*¨d¯g©gÑ5Ó	6ß	‰Ô$×/Ñ/×4Ñ4Ó6Ô8J×8MÑ8M×8RÑ8RÓ8TÓ	Uß	‰‹ð	 	ñ AEÓEÁ¸Ô/°Õ4À€JÐEÜ)´°J³ÈzÔZÐZùò Fs   Â&Cz"/member-notifications-unread-countz0Unread notification count for the logged-in userc                 ó  — t        | |«       | j                  t        «      j                  t        j                  |j
                  k(  t        j                  j                  d«      «      j                  «       }t        |¬«      S )NF)Úunread_count)
r?   r+   r   r,   r&   r-   Úis_readr2   Úcountr   )r#   r$   rT   s      r    Ú$my_member_notifications_unread_countrW   ƒ   sf   € ô !  TÔ*à
�‰Ô#Ó$ß	‰Ü×&Ñ&¨$¯'©'Ñ1Ü×&Ñ&×*Ñ*¨5Ó1ó

÷ 
‰‹ð ô 1¸lÔKÐKr"   z/mark-member-notification-readz"Mark one user notification as readÚbodyc                 óT  — |j                  t        «      j                  t        j                  | j                  k(  t        j
                  |j                  k(  «      j                  «       }|€t        t        j                  d¬«      ‚d|_
        |j                  «        t        d¬«      S )NúNotification not found©Ústatus_codeÚdetailTzNotification marked as readrE   )r+   r   r,   r-   Únotification_idr&   r8   r   r   ÚHTTP_404_NOT_FOUNDrU   r;   r   ©rX   r#   r$   r   s       r    Ú mark_my_member_notification_readra   ˜   s†   € ð 	�‰Ô#Ó$ß	‰Ü×!Ñ! T×%9Ñ%9Ñ9Ü×&Ñ&¨$¯'©'Ñ1ó

÷ 
‰‹ð ð €{Ü¬×(AÑ(AÐJbÔcÐcà€C„KØ‡I�I„KÜÐ8Ô9Ð9r"   z#/mark-all-member-notifications-readz-Mark all logged-in user notifications as readc                 óV  — t        | |«       | j                  t        «      j                  t        j                  |j
                  k(  t        j                  j                  d«      «      j                  t        j                  did¬«      }| j                  «        t        d|› d�¬«      S )NFTrC   zMarked z notification(s) as readrE   )r?   r+   r   r,   r&   r-   rU   r2   rF   r;   r   )r#   r$   rV   s      r    Ú%mark_all_my_member_notifications_readrc   ²   sŒ   € ô !  TÔ*à
�‰Ô#Ó$ß	‰Ü×&Ñ&¨$¯'©'Ñ1Ü×&Ñ&×*Ñ*¨5Ó1ó

÷ 
‰Ô#×+Ñ+¨TÐ2ÈˆÓ	Nð 
ð ‡I�I„KÜ˜W U GÐ+CÐDÔEÐEr"   z/delete-my-member-notificationz&Delete one logged-in user notificationc                 óh  — |j                  t        «      j                  t        j                  | j                  k(  t        j
                  |j                  k(  «      j                  «       }|€t        t        j                  d¬«      ‚|j                  |«       |j                  «        t        d¬«      S )NrZ   r[   zNotification deletedrE   )r+   r   r,   r-   r^   r&   r8   r   r   r_   rG   r;   r   r`   s       r    Údelete_my_member_notificationre   È   sŠ   € ð 	�‰Ô#Ó$ß	‰Ü×!Ñ! T×%9Ñ%9Ñ9Ü×&Ñ&¨$¯'©'Ñ1ó

÷ 
‰‹ð ð €{Ü¬×(AÑ(AÐJbÔcÐcà‡I�Iˆc„NØ‡I�I„KÜÐ1Ô2Ð2r"   )(Úfastapir   r   r   r   Ú
sqlalchemyr   Úsqlalchemy.ormr   Úapp.databaser	   Úapp.dependenciesr
   Ú
app.modelsr   Úapp.models_adminr   r   r   Úapp.schemasr   r   r   r   Úapp.member_feedbackr   Úapp.services.admin_servicer   ÚrouterÚstrr!   r?   ÚpostrI   ÚgetrR   rW   ra   rc   re   © r"   r    Ú<module>ru      sd  ðß =Ó =Ý Ý "å Ý /Ý ß ^Ñ ^÷ó õ 7Ý Dá	Ð4Ð5Ô	6€ðDÐ0ð D°Só Dð0 Wð 0°Dð 0¸Tó 0ðf ‡�Ø%ØØdð ó ñ ˜&“/ÙÐ+Ó,ñAØðAà
òAóð
Að0 ‡�ØØ1ØQð ó ñ ˜&“/ÙÐ+Ó,ñ[Øð[à
ò[óð
[ð ‡�Ø(Ø8Ø>ð ó ñ ˜&“/ÙÐ+Ó,ñLØðLà
òLóð
Lð  ‡�Ø$ØØ0ð ó ñ ˜&“/ÙÐ+Ó,ñ:Ø
%ð:àð:ð ò:óð
:ð* ‡�Ø)ØØ;ð ó ñ ˜&“/ÙÐ+Ó,ñFØðFà
òFóð
Fð" ‡�Ø$ØØ4ð ó ñ ˜&“/ÙÐ+Ó,ñ3Ø
%ð3àð3ð ò3óñ
3r"   