Ë
    ð(j˜  ã                  ó–   — d 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
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
„Zddœdd„Zy)zAdmin dashboard aggregates.é    )Úannotations)ÚdatetimeÚtimezone)ÚZoneInfo)Úfunc)ÚSessionÚ
joinedload)ÚUserÚUserRole)ÚCommunityPostÚMemberNotificationÚMemberNotificationTypeÚReward)Úserialize_community_postc                óÐ   — | €y | j                   € | j                  t        j                  ¬«      } | j	                  t        d«      «      j                  d«      j                  d«      S )N)ÚtzinfozEurope/Londonz%d %b, %Y %I:%M %pÚ0)r   Úreplacer   ÚutcÚ
astimezoner   ÚstrftimeÚlstrip)Údts    úC/var/www/html/kelly/kelly-backend/app/services/dashboard_service.pyÚ_format_activity_datetimer      sT   € Ø	€zØØ	‡y�yÐØ�Z‰ZœxŸ|™|ˆZÓ,ˆØ�=‰=œ /Ó2Ó3×<Ñ<Ð=QÓR×YÑYÐZ]Ó^Ð^ó    Úmonthly)Úperiodc               ó  — |xs dj                  «       j                  «       }|dvrd}| j                  t        j                  t
        j                  «      «      j                  t
        j                  t        j                  k(  t
        j                  j                  d«      «      j                  «       xs d}| j                  t        j                  t        j                  «      «      j                  «       xs d}| j                  t        j                  t        j                  «      «      j                  t        j                   t"        j$                  j&                  k(  «      j                  «       xs d}||kD  r|}| j                  t        j                  t(        j                  «      «      j                  «       xs d}| j                  t(        «      j+                  t-        t(        j.                  «      «      j1                  t(        j2                  j5                  «       t(        j                  j5                  «       «      j7                  d«      j9                  «       }g }|D ]q  }	t;        |	«      }
|j=                  |
d   |
d   |
d   |
d	   |
j?                  d
«      |
j?                  dd«      |
d   tA        |
d   «      |
j?                  d«      dœ	«       Œs |tC        |«      dtC        |«      tC        |«      dœ|g g dœg g dœ|dœS )Nr   >   Úweeklyr   Tr   é
   ÚidÚtitleÚcontentÚ	post_typeÚ	media_urlÚ	has_mediaFÚ
created_atÚcreated_by_name)	r"   r#   Údescriptionr%   r&   r'   r(   Úcreated_at_labelr)   )Útotal_membersÚsessions_completedÚtotal_badgesÚtotal_community)r   ÚlabelsÚvalues)r0   r1   )r   ÚsummaryÚsession_completionsÚmembers_by_levelÚrecent_community_activity)"ÚstripÚlowerÚqueryr   Úcountr
   r"   ÚfilterÚroler   ÚuserÚ	is_activeÚis_Úscalarr   r   Únotification_typer   ÚachievementÚvaluer   Úoptionsr	   Ú
created_byÚorder_byr(   ÚdescÚlimitÚallr   ÚappendÚgetr   Úint)Údbr   Ú
period_keyr,   r.   Úachievement_countr/   ÚpostsÚrecent_activityÚpostÚ
serializeds              r   Úget_admin_dashboardrS      s|  € ØÒ%˜I×,Ñ,Ó.×4Ñ4Ó6€JØÐ.Ñ.Øˆ
ð 	�‰”—‘œDŸG™GÓ$Ó%ß	‰”—	‘	œXŸ]™]Ñ*¬D¯N©N×,>Ñ,>¸tÓ,DÓ	Eß	‰‹ò	ð ð	 ð —8‘8œDŸJ™J¤v§y¡yÓ1Ó2×9Ñ9Ó;Ò@¸q€Là
�‰”—‘Ô.×1Ñ1Ó2Ó3ß	‰Ô"×4Ñ4Ô8N×8ZÑ8Z×8`Ñ8`Ñ`Ó	aß	‰‹ò	ð ð	 ð ˜<Ò'Ø(ˆà—h‘hœtŸz™z¬-×*:Ñ*:Ó;Ó<×CÑCÓEÒJÈ€Oð 	�‰”Óß	‰”œM×4Ñ4Ó5Ó	6ß	‰”-×*Ñ*×/Ñ/Ó1´=×3CÑ3C×3HÑ3HÓ3JÓ	Kß	‰ˆr‹ß	‰‹ð 
ð €OÛˆÜ-¨dÓ3ˆ
Ø×Ñà  Ñ&Ø# GÑ,Ø)¨)Ñ4Ø'¨Ñ4Ø'Ÿ^™^¨KÓ8Ø'Ÿ^™^¨K¸Ó?Ø(¨Ñ6Ü$=¸jÈÑ>VÓ$WØ#-§>¡>Ð2CÓ#Dñ
õ	
ð ð" ä  Ó/Ø"#Ü Ó-Ü" ?Ó3ñ	
ð !ØØñ 
ð Øñ
ð &5ñ#ð r   N)r   zdatetime | NoneÚreturnz
str | None)rL   r   r   ÚstrrT   Údict)Ú__doc__Ú
__future__r   r   r   Úzoneinfor   Ú
sqlalchemyr   Úsqlalchemy.ormr   r	   Ú
app.modelsr
   r   Úapp.models_adminr   r   r   r   Úapp.services.admin_servicer   r   rS   © r   r   Ú<module>r`      s5   ðÙ !å "ç 'Ý å ß .ç %ß ^Ó ^Ý ?ó_ð 7@ö Br   