
    V
h                     v    S SK J r Jr  S SKJr  S rS\ S\ 4S jrS\ S\ 4S jrS\S	\S
\4S jr	SS\ S\ 4S jjr
g)    )datetime	timedelta)
Collectionc                   #    UR                  S5      nU(       d  [        S5      eU S   R                  SU05      nU S   R                  USS.5      nU S   R                  USS.5      n[        R                  " 5       nU[        S	S
9-
  nSUSSU0S.0SSSS0S.0/n[        U S   R                  U5      5      n	U	(       a  U	S   S   OSn
UUUU
UR                  5       S.$ 7f)z)Return high-level metrics for the tenant.
account_idz&Account ID not found for current user.userssubscriptionsactive)r   statusprojectsACTIVE   days$matchpaid$gter   r   due_date$groupN$sum$amount)_idtotalRevenuepaymentsr   r   )users_countactive_subscriptionsactive_projectstotal_revenuelast_updated)	get
ValueErrorcount_documentsr   utcnowr   list	aggregate	isoformat)dbcurrent_userr   r   r   r   nowone_month_agopipelinerevenue_resultr   s              LC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\services\saas\dashboard.pyget_overview_metricsr/      s    !!,/JABBW+--|Z.HIKo.>>jdl?mnn44JZb5cdO //
C),,M	*VUbLcde	4&)1DEFH "Z.228<=N9GN1%n5QM # 4*& s   C C"
start_dateend_datec                    #    UR                  S5      nSUX#S.S.0SSSSS	.0S
S0S.0SSS00/n[        U S   R                  U5      5      nU$ 7f)z>Return daily usage metrics (e.g., user logins) grouped by day.r   r   r   z$lte)r   
login_dater   $dateToString%Y-%m-%dz$login_dateformatdater      )r   daily_logins$sortr   user_loginsr!   r%   r&   )r(   r)   r0   r1   r   r,   usages          r.   get_usage_trendsr@       s     !!,/J	$#-@
 	 
#
M%RS#QK
 	 
5!*
H M",,X67ELs   AAc                    #    UR                  S5      nSUSX#S.S.0SSSS	S
.0SS0S.0SSS00/n[        U S   R                  U5      5      nU$ 7f)z%Return revenue trends grouped by day.r   r   r   r3   r   r   r5   r6   z	$due_dater7   r   r   )r   daily_revenuer<   r   r:   r   r>   )r(   r)   r0   r1   r   r,   revenue_trendss          r.   get_financial_trendsrD   1   s     !!,/J	$!+>
 	
 
#
K%PQ$i0
 	 
5!*H "Z.228<=Ns   AAsearch_queryskiplimitc                    #    SSUSS.0SUSS.0/0nU S   R                  U5      R                  U5      R                  U5      n[        U5      nU S   R	                  U5      nXvS.$ 7f)z'Perform account search with pagination.z$oraccount_namei)z$regexz$optionsemailaccounts)total_countrL   )findrF   rG   r%   r#   )r(   rE   rF   rG   queryaccounts_cursorrL   rM   s           r.   search_accountsrQ   C   s     	LcBC	\s;< E n))%055d;AA%HOO$HZ.007K&==s   A&A(Nc                 .  #    [         R                  " 5       nUc  U[        SS9-
  nUc  Un[        X5      I Sh  vN n[	        XX#5      I Sh  vN n[        XX#5      I Sh  vN nUUUUR                  5       UR                  5       S.S.nU$  NT NB N07f)zIAggregate dashboard data including overview, usage, and financial trends.Nr   r   )startend)overviewusage_trendsrC   
date_range)r   r$   r   r/   r@   rD   r'   )	r(   r)   r0   r1   r*   rU   r?   revenue	dashboards	            r.   get_dashboard_metrics_servicerZ   O   s      //
C9"--
)";;H"2ZJJE(:PPG ! * 4 4 6x?Q?Q?ST	I  <JPs3   8BBBBB"B#-BBB)NN)r   r   pymongo.collectionr   r/   r@   rD   strintrQ   rZ        r.   <module>r`      se    ( )8 X "X QY $
>C 
>s 
>3 
>h ai r_   