
    jJhl                        d dl mZmZmZ d dlmZ d dlZd dlmZ d dlm	Z	m
Z
mZ  ede      Zej                  ddg	      d
        Zej                  ddg	      d        Zej                  ddg	      d        Zej                  ddg	      d        Zej                  ddg	      d        Zej                  ddg	      d        Zy)    )	Blueprintrequestjsonify)datetimeN)ActivitiesData)dbdb_model
app_loggerapi_activityz/api/activity/typesGET)methodsc                     t         j                  j                  d      } | st        ddi      dfS 	 t        j
                  j                  t        j                        j                  t        j                  | k(        j                         j                  t        j                        j                         }t        |D cg c]  }|d   s	|d    c}      S c c}w # t        $ r"}t        dt        |      i      dfcY d }~S d }~ww xY w)NstateerrorzState parameter is required  r     )r   argsgetr   r   sessionqueryr   activity_typefilterr   distinctorder_byall	Exceptionstr)r   typestes       6/var/www/dostadmin/dostadmin/apis/api_activity_type.pyget_activity_typesr"   
   s    LLW%E!>?@#EE/JJ^99:VN((E12XZXn223SU 	 e4eqt!e4554 /Q()3../s6   BC 
CCC C 	D
(D?D
D
z/api/activity/dropdown_valuesc                  ,   t         j                  j                  d      } t         j                  j                  d      }t         j                  j                  d      }| r|r|st        ddi      dfS t	        t
        |      st        dd| i      dfS 	 t        t
        |      }t        j                  j                  |      j                  t
        j                  | k(  t
        j                  |k(        j                  |j                  d             j                         j                  |      j!                         }|D cg c]  }|d   s	|d    }}t        |      S c c}w # t"        $ r"}t        dt%        |      i      d	fcY d }~S d }~ww xY w)
Nr   r   fieldr   zMissing required parametersr   zInvalid field: r   r   )r   r   r   r   hasattrr   getattrr   r   r   r   r   r   isnotr   r   r   r   r   )r   r   r$   field_columnresultsrvaluesr    s           r!   get_dropdown_valuesr,      sV   LLW%ELL$$_5MLLW%EU!>?@#EE>5)?5'!:;<cAA/~u5JJ\*V$$-,,= VL&&t,-XZXl#SU 	 !(011Q4!A$0v 1 /Q()3../s7   B.E( 
E#E#E( #E( (	F1FFFz/api/family_metrics/phonesc                     	 t         j                  j                  j                  t         j                  j                        j                         j                         } t        | D cg c]  }|d   s	|d    c}      S c c}w # t        $ r:}t        j                  d|        t        dt        |      i      dfcY d }~S d }~ww xY w)Nr   z&Error fetching family metrics phones: r   r   )r	   FamilyMetricsr   with_entities
user_phoner   r   r   r   r
   r   r   )phonesphoner    s      r!   get_family_metrics_phonesr3   <   s    /""((66&&11 XZSU 	 fAfUaafABBA /A!EFQ()3../s6   A&B (
B3B:B B 	C	/C>C	C	z#/api/family_metrics/activity_countsc                     	 t         j                  j                  j                         } | D ci c]=  }|j                  |j
                  xs d|j                  xs d|j                  xs dd? }}t        |      S c c}w # t        $ r:}t        j                  d|        t        dt        |      i      dfcY d }~S d }~ww xY w)Nr   motherfatherchildz Error fetching activity counts: r   r   )r	   r.   r   r   r0   mother_countfather_countchild_countr   r   r
   r   r   )metricsmetriccountsr    s       r!   "get_family_metrics_activity_countsr?   L   s    /((..224 "
 "  --2 --2++0q  
 " 	 
 v
  /;A3?@Q()3../s/   ,B AA=0B =B 	C/C :C Cz"/api/family_metrics/increase_countPOSTc                     	 t        d       t        j                         } | j                  d      }| j                  d      }|rt	        j
                  d|      r|dvrt        ddi      dfS t        j                  j                  j                  |	      j                         }|r|d
k(  r|j                  xs ddz   |_        n;|dk(  r|j                  xs ddz   |_        n|dk(  r|j                  xs ddz   |_        t        j                          |_        t$        j&                  j)                          t        |j                  xs d|j                  xs d|j                  xs dd      S t        ddi      dfS # t*        $ rX}t$        j&                  j-                          t/        j0                  d|        t        dt3        |      i      dfcY d }~S d }~ww xY w)Nz-Received request to increase engagement countr0   memberz^\d{10}$r5   r   zInvalid phone number or memberr   r0   r6   r      r7   r8   zFamily not foundi  z#Error increasing engagement count: r   )printr   get_jsonr   rematchr   r	   r.   r   	filter_byfirstr9   r:   r;   r   now
updated_onr   r   commitr   rollbackr
   r   r   )datar0   rB   family_metricr    s        r!   increase_engagement_countrQ   ^   s   #/=>!XXl+
(#88K4::G%EFGLL ..44>>! ? 

%' 	 !.;.H.H.MAQR-R*8#.;.H.H.MAQR-R*7"-:-F-F-K!q,P)'/||~M$JJ+88=A+88=A*66;!  !345s:: /


>qcBCQ()3../s,   A+F  .DF  1F   	G!	AGG!G!z/api/family_metrics/detailsc            	         	 t         j                  j                  d      xs dj                         } t         j                  j                  d      xs dj                         }t         j                  j                  d      xs dj                         }t        j
                  j                  }d }| rO| j                         rt        |       dk7  rt        ddi      dfS |j                  | 	      j                         }n-|rt        d|       |j                  t        j
                  j                  |k(        j                         }|s|j                  t        j
                  j                  j                  d
| d
            j                         }n|r|j                  t        j
                  j                   |k(        j                         }|sZ|j                  t        j
                  j                   j                  d
| d
            j                         }nt        ddi      dfS |rft        |j"                  xs d|j$                  xs d|j&                  xs d|j(                  xs d|j*                  xs d|j,                  xs dd      S t        ddddddd      S # t.        $ r:}t1        j2                  d|        t        dt5        |      i      dfcY d }~S d }~ww xY w)Nr2    father_codemother_code
   r   zInvalid phone numberr   rC   %zNo identifier providedr   )r6   r7   r8   mother_namefather_name
child_namez'Error fetching family metrics details: r   )r   r   r   stripr	   r.   r   isdigitlenr   rI   rJ   rE   r   rT   ilikerU   r9   r:   r;   rX   rY   rZ   r   r
   r   r   )r2   rT   rU   qr=   r    s         r!   get_family_metrics_detailsr`      s   4/!!'*0b779||''6<"CCE||''6<"CCE""((==?c%jB&6)?@A3FF[[E[288:F--XXh44@@KOPVVXF**66<<qQ=OP%'  XXh44@@KOPVVXF**66<<qQ=OP%'  G%=>?DD$116Q$116Q#//41#)#5#5#;#)#5#5#;"("3"3"9r	 	 !! 	
 		
  /B1#FGQ()3../s2   CJ)  EJ) /A'J) J) )	K,2/K'!K,'K,)flaskr   r   r   r   rG   dostadmin.db_modelr   	dostadminr   r	   r
   __name__api_activity_type_bprouter"   r,   r3   r?   rQ   r`        r!   <module>ri      s   - -  	 - . . :  1E7C/ D/( ;eWM/ N/8 85'J/ K/ AE7S/ T/" @6(S$/ T$/N 9E7K5/ L5/rh   