
    piF              
       >   S r SSKJr  SSKJr  SSKJrJr  SSKJr  SSK	J
r
JrJrJrJrJrJrJr  SS	S
SSSS.rSSSSSSSSSS.	rSSS.rSSS.rSSSS .rS!S"S#S$.rS%S&S'S(S).rS%S&S'S*S+.rS,S-S..rS,S-S/S0.rS1S2S..rS3\4S4 jrS:S3\S6\4S7 jjrS3\S6\4S8 jr S3\S6\4S9 jr!g5);z
Estadisticas Jugadores CRUD Operations

Functions to compute aggregated data for chart display using live User data
and satellite tables (UserProfile, UserSports, etc.).
    )Session)func)datetimedate)Counter   )UserUserProfile
UserSports
UserHealthUserMarketingUserConsentUserGuardiansUserFinancezBoca a bocaYouTube	InstagramFacebookTikTokzWeb / Google)zboca-a-bocayoutube	instagramfacebooktiktokz
web-googleu   Prebenjamínu	   Benjamínu   AlevínInfantilCadeteJuvenilSenior)	prebenjaminu	   benjamínbenjaminu   alevínalevininfantilcadetejuvenilseniorDerecha	Izquierda)derecha	izquierda	MasculinoFemenino)	masculinofemeninoEstudiaTrabajazEstudia y trabaja)estudiotrabajoamboszL4F AcademyPersonalAmbos)academypersonalr0   zMuy seguidoCasualmentezOcasiones especialeszNo bebe)muy-seguidocasualmenteocasiones-especialeszno-bebozNo fuma)r6   r7   r8   zno-fumou   SíNo)sinozNo se ha lesionado)r:   r;   zno-lesionadozLe cuesta centrarsezSe reactiva biendbc                     g)z
Legacy support: Keeps the interface but does nothing or could log.
Now data is sourced directly from User profile/satellites.
N )r<   kwargss     C/home/mario/Escritorio/thel4footbal/app/models/estadisticas_crud.pycrear_estadisticarA   ,   s    
 	    Nreturnc                 H   Uc  0 $ U R                  U[        R                  " U5      5      R                  [        [        R
                  UR                  :H  5      R                  [        R                  S:H  5      R                  UR                  S5      US:g  5      R                  U5      R                  5       nU VVs0 s H  u  pV[        U5      U_M     nnnU(       a5  UR                  5        VV	s0 s H  u  pUR                  X5      U	_M     sn	n$ U$ s  snnf s  sn	nf )z8Helper to count grouped by a specific column in a model.Nalumno )queryr   countjoinr	   iduser_idfilterroleisnotgroup_byallstritemsget)
r<   modelcolumnlabelsrowsvalrH   datakvs
             r@   _count_by_fieldr\   4   s    ~	 	F+,	dDGGu}},	-			X%	&	T"FbL	1	&		 	 /33d
CHeOdD304

=

1 !#==K 4=s   ?D4Dc                    U R                  [        R                  5      R                  [        [        R
                  [        R                  :H  5      R                  [        R                  S:H  5      R                  [        R                  R                  S5      5      R                  [        R                  S:g  5      R                  5       n[        5       n[        R                  " 5       nU H  u  n UR                  5       SS n[        R                   " US5      R                  5       nUR"                  UR"                  -
  UR$                  UR&                  4UR$                  UR&                  4:  -
  nUS:  a  US==   S-  ss'   M  US::  a  US	==   S-  ss'   M  US
::  a  US==   S-  ss'   M  US::  a  US==   S-  ss'   M  US==   S-  ss'   M     [-        U5      $ ! [(        [*        4 a     GM  f = f)z:Calculate age distribution based on UserProfile.birth_daterE   NrF   
   z%Y-%m-%dzMenos de 10r      z10-12   z13-15   z16-18z19+)rG   r
   
birth_daterI   r	   rJ   rK   rL   rM   rN   rP   r   r   todaystripr   strptimeyearmonthday
ValueErrorAttributeErrordict)r<   rW   rangosrc   	fecha_str
clean_datebirthages           r@   _calcular_edadesrq   H   s    	''(	dDGG{222	3			X%	&	&&,,T2	3	&&",	-	 	 YFJJLE	 #*3B/J%%j*=BBDE**uzz)ekk599-EV[V_V_H`-`aCRx}%*%w1$w1$w1$u"# * < N+ 		s+   4BG'G'!G'6G'G''G<;G<c           	         U R                  [        5      R                  [        R                  S:H  5      R	                  5       n0 SU_S[        U [        [        R                  5      _S[        U [        [        R                  [        5      _S[        U [        [        R                  [        5      _S[        U [        [        R                  [        5      _S[        U 5      _S[        U [        [        R                   5      _S	[        U [        [        R"                  [$        5      _S
[        U [&        [&        R(                  [*        5      _S[        U [,        [,        R.                  [0        5      _S[        U [,        [,        R2                  [4        5      _S[        U [,        [,        R6                  [4        5      _S[        U [8        [8        R:                  [<        5      _S[        U [8        [8        R>                  [@        5      _S[        U [8        [8        RB                  [D        5      _S[        U [8        [8        RF                  [4        5      _S[        U [8        [8        RH                  [J        5      _[        U [8        [8        RL                  [4        5      [        U [N        [N        RP                  [4        5      [        U [N        [N        RR                  [4        5      S.E$ )z@
Compute aggregated statistics for charts using live user data.
rE   total_jugadores
posiciones
categoriaspierna_dominantetipo_entrenamientoedadesciudadessexo	ocupacioncomo_nos_encontronervios_confianzadisfrutealcoholtabacotrabajo_fisicodolor_pechorecuperacion)malestarpermiso_videocontenido_whatsapp)*rG   r	   rL   rM   rH   r\   r   positioncategoryLABELS_CATEGORIAdominant_footLABELS_PIERNAtraining_typeLABELS_ENTRENAMIENTOrq   r
   citygenderLABELS_SEXOr   
occupationLABELS_OCUPACIONr   found_usLABELS_FOUND_USnerves_confidenceLABELS_SI_NO	enjoymentr   r   LABELS_ALCOHOLsmokingLABELS_TABACOphysical_workLABELS_TRABAJO_FISICO
chest_painrecoveryLABELS_RECUPERACION
discomfortr   video_permissionwhatsapp_content)r<   totals     r@   obtener_estadisticas_agregadasr   n   sT   
 HHTN!!$))x"78>>@E!5! 	ob*j6I6IJ	!
 	ob*j6I6IK[\! 	OB
J<T<TVcd! 	ob*j>V>VXlm! 	"2&! 	OB[5E5EF! 	K1C1C[Q! 	_R8P8PRbc!$ 	_R@V@VXgh%!& 	_R@_@_amn'!( 	OB}7N7NP\])!. 	?2z:3E3E~V/!0 	/"j*2D2DmT1!2 	/"j*:R:RTij3!4 	r:z7L7Ll[5!6 	J
8K8KM`a7!8 $B
J4I4I<X )[+:V:VXde-b+{?[?[]ijA! !rB   )N)"__doc__sqlalchemy.ormr   
sqlalchemyr   r   r   collectionsr   userr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   rk   r\   rq   r   r>   rB   r@   <module>r      s   #  #    !Y[hn
 "I:9 
 '[B(jB )iJ]_ $1zT[]  2y
 !2y D* %TCWY 3;MO 	' 	  (# #T #L(w (4 (rB   