
    (Gh                     f    d dl Z d dlmZ d dlmZ d dlmZ d ZdefdZ	dede j                   fd	Z
y)
    N)	EmojiType)CodeScan)Notificationc           
      P   | j                  t              j                  t        j                  |j                  k(        }t        ||      }|j                         }| j                  t              j                  t        j                  |j                  k(  t        j                  dk(        j                         }| j                  t        j                        j                  t        j                  |j                  k(        }t        ||      j                         }|D cg c]  }|d   	 }	}|	s
d|dddd|dS t        j                  dt        j                  dt        j                  dt        j                   dt        j"                  d	i}
|	D cg c]  }|
|   	 }}t%        d
 |D              }t'        |t)        |      z  dz  d      }t'        t%        |      t)        |      z  d      }t'        |      }t        j                  t        j                  t        j                  t        j                   t        j"                  d}|j+                  |t        j                        }|j                  d	      }t'        |t)        |      z  dz  d      }d|||||||dS c c}w c c}w )NFr   T)statusreviewstotal_scanscsataverage_scorevery_satisfied_ratetotal_notifications               c              3   ,   K   | ]  }|d k\  s	d  yw)r   r   N ).0rs     F/Users/theessential/Documents/Github/Lekema-Backend/app/utils/stats.py	<genexpr>z'get_enterprise_stats.<locals>.<genexpr>2   s     >qqAv>s   
d   )r   r   r   r   r   )r   r   r	   r
   r   average_score_emojir   r   )queryr   filter
company_ididfilter_by_periodcountr   user_idis_readratingallr   VERY_BADBADMEDIUMGOOD	VERY_GOODsumroundlenget)dbuserperiodscansscans_queryr	   r   all_ratingsr   ratingsrating_valuesnumeric_ratingspositive_countr
   r   rounded_scoreemoji_mappingr   very_satisfied_countr   s                       r   get_enterprise_statsr;      sm   ((8$++H,?,?477,JKK #;7K ##%K ((<0778L8LPTPWPW8W8D8L8LPU8UWW\W\W^ 
 	!	##tww.	/  #;7;;=K()qt)G)#$#6
 	
 	Aq!QM 299A}Q'9O9 >O>>N.3#773>BD #o._1EEqIM -(M ==>>M (++M9;K;KL +003!5O8L!LPS SUVW "&222	 	_ ** :s   "JJ#r0   c                    t         j                   j                         }|dk(  r|j                  dddd      }n}|dk(  r=|t        j                  |j	                               z
  }|j                  dddd      }n;|dk(  r|j                  ddddd      }n|d	k(  r|j                  dddddd
      }n| S | j                  t        j                  |k\        S Ndayr   )hourminutesecondmicrosecondweek)daysmonthr   )r>   r?   r@   rA   rB   year)rE   r>   r?   r@   rA   rB   )datetimenowreplace	timedeltaweekdayr   r   
created_at)r   r0   rH   
start_dates       r   r   r   U   s    





!C[[a![K
	6	8--3;;=AA
''QqPQ'R
	7	[[QQqPQ[R
	6	[[qaa!YZ[[
<<++z9::    returnc                    t         j                   j                         }| dk(  r|j                  dddd      S | dk(  r<|t        j                  |j	                               z
  }|j                  dddd      S | dk(  r|j                  ddddd      S | d	k(  r|j                  dddddd
      S t         j                   j
                  S r=   )rG   rH   rI   rJ   rK   min)r0   rH   rM   s      r   get_start_date_for_periodrR   f   s    





!C{{!A1{EE	6	8--3;;=AA
!!q1!!LL	7	{{qq1!{LL	6	{{!AST{UU  $$$rN   )rG   app.enums.emoji_typer   app.models.code_scanr   app.models.notificationr   r;   strr   rR   r   rN   r   <module>rW      s=     * ) 0K\;C ;"%c %h.?.? %rN   