
    {oi@*                         S SK JrJrJrJr  S SKJr  S SKJrJ	r	J
r
  S SKJrJr  S SKJr  S SKJr  S SKJ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  S rS r S r!S r"g)    )requestjsonifymake_responseg)db)StudentAssesmentResultTableStudentTableSchoolTable)Selectfunc)error_response)find_principal_by_username)find_school_by_id)!find_concepts_by_grade_and_stream)%find_students_by_school_grade_section)encrypt_passwordcheck_password)generate_token)datetimetimezonec                  N   [         R                  " 5       n U R                  S5      nU R                  S5      nU(       a  U(       d  [        SS5      $ [	        U5      nU(       d  [        SS5      $ UR
                  (       a*  [        UR                  U5      (       d  [        SS5      $ SnO[        U5      Ul        SUl        Sn[        R                  " [        R                  5      Ul        [        R                  R!                  5         [#        UR$                  S	5      n['        UR(                  5      n[+        [-        SUS	UR$                  UR.                  UR(                  UR0                  UR2                  UR4                  S
.	5      S5      nUR7                  SUSSSSS9  U$ )NusernamepasswordzInvalid credentials  i  z Principal logged in successfullyTu@   Principal logged in for the first time — password has been set	principal)	successmessageroleidr   	school_id	firstnamelastnameschool_name   
auth_tokenlax/i:	 )httponlysamesitepathmax_age)r   get_jsongetr   r   
isLoggedInr   r   r   r   nowr   utc
last_loginr   sessioncommitr   r   r   r    r   r   r   r!   r"   r#   
set_cookie)bodyr   r   r   r   tokenschoolresponses           BD:\beyond school\05_solvesmart\server\src\controller\principals.py
login_funcr:      sn   Dxx
#Hxx
#H83S99*84I3S99i00(;;!"7==4-h7	#	T#<<5IJJ9<<5Ey223FWll&&((((&&))
& 
 	
H    ( O    c                  X   [         R                  n U R                  n[        R                  " 5       nUR                  S5      nUR                  S5      nU(       a  U(       d  [        SS5      $ [        U5      nU(       d  [        SS5      $ [        X5R                  5      n[        XU5      n[        R                  " [        R                  5      nUR                  S:  a  UR!                  UR                  S-
  S9O)UR!                  UR"                  S	-
  UR                  S-   S
9n	[%        [&        5      R)                  [&        R                  U:H  [&        R*                  U:H  [&        R,                  U:H  [&        R.                  U	:  5      n
[0        R2                  R5                  U
5      R7                  5       R9                  5       n[%        [:        R<                  " [&        R>                  5      5      R)                  [&        R                  U:H  [&        R*                  U:H  [&        R,                  U:H  [&        R@                  RC                  S 5      5      n[0        R2                  R5                  U5      RE                  5       n0 nSnSnU H  nUR.                  RG                  S5      nURH                   H  nUR                  S5      nUR                  SS5      nUR                  SS5      nUU-  nUU-  nURK                  U0 5      RK                  USSS.5        UU   U   S==   U-  ss'   UU   U   S==   U-  ss'   M     M     U(       a  [M        UU-  S-  S5      OSn/ / nn[O        SSS5       H  nUR                  U:  a  UR!                  UR                  U-
  S9O,UR!                  UR"                  S	-
  UR                  S-   U-
  S
9nURQ                  URG                  S5      5        URQ                  URG                  S5      5        M     / nU GHB  n/ nU H  nUR                  URR                  0 5      R                  U0 5      nUR                  SS5      nUR                  SS5      nU(       a  [M        UU-  S-  S5      OSnURQ                  UUS.5        M     UR                  URR                  0 5      RU                  5       n[W        S U 5       5      n [W        S U 5       5      n!U (       a  [M        U!U -  S-  S5      OSn"URQ                  UR>                  URR                  UR*                  UR                  URX                  U"US.5        GME     UR[                  S SS9  []        SS UUUS!.UU	RG                  S"5      URG                  S"5      UUS#.S$.5      S%4$ )&NgradesectionzGrade and section requiredr   School not found     )month   )yearrB   r   z%Y-%mconcepttotalcorrect)total_questionscorrect_answersrH   rI   d            z%b %Y)rB   accuracyc              3   *   #    U  H	  oS    v   M     g7f)rH   N .0ds     r9   	<genexpr>!dashboard_func.<locals>.<genexpr>        8x!$%x   c              3   *   #    U  H	  oS    v   M     g7f)rI   NrQ   rR   s     r9   rU   rV      rW   rX   )r   namer=   streamdescriptionoverall_accuracymonthly_performancec                     U S   $ )Nr]   rQ   xs    r9   <lambda> dashboard_func.<locals>.<lambda>   s
    A&8$9r;   T)keyreversez-Principal dashboard data fetched successfully)total_studentstotal_assessmentsr]   z%Y-%m-%d)
start_dateend_datemonth_labelsmonth_names)r   r   summaryconceptstime_periodr$   )/r   current_userr    r   r,   r-   r   r   r   r[   r   r   r/   r   r0   rB   replacerD   r   r   wherer=   r>   submitted_atr   r2   executescalarsallr   countr   assesment_idisnotscalarstrftimeconcept_detail
setdefaultroundrangeappendrZ   valuessumr\   sortr   )#r   r    r5   r=   r>   r7   all_conceptrf   todaysix_months_agostmt_resultsall_resultsstmt_assessmentsrg   concept_performanceoverall_correctoverall_totalresultsubmission_monthconcept_datarE   rF   rG   r]   rj   rk   immonthlydatarO   all_datatqcqoveralls#                                      r9   dashboard_funcr   M   s    I##IDHHWEhhy!G:C@@y)F0#663E==IK:9WUNLL&E;@;;?U]]Q]7PUP]P]ZZ\Q Q^ QN 56<<#--:#))U2#++w6#00NB	L **$$\2::<@@BKdjj)D)G)GHIOO#--:#))U2#++w6#0066t<	 

**+;<CCEOM!..77@"11L"&&y1G $$Wa0E"&&y!4GU"Mw&O**7B7BB $%!<
  ()9:;LMQVVM()9:;LMQXXM 2 $ MZuo=DaH_` "B+L1b"27++/EMMAM.u}}AU[[^A%5 HU H
 	AJJw/01::g./  LA&**7<<<@@BGDHH.2Ehh0!4G<Augo4a8qHNNQH=>  '**7<<<CCE8x888x88/1%bC+q**LL]]nn".. '#*
 	 0 94HB,!2 0

 !(11*=z2(&	
  	 r;   c                     [         R                  n U R                  n[        [        R
                  [        R                  5      R                  [        R                  U:H  5      R                  5       n[        R                  R                  U5      R                  5       nU(       d  [        SS5      $ 0 nU H&  u  pVUR                  U/ 5      R                  U5        M(     [!        SSUS.5      S4$ )NzGrade and section are not foundr@   Tz)Grades and sections fetched successfully!)r   r   r   r$   )r   ro   r    r   r	   r=   r>   rq   distinctr   r2   rs   ru   r   r|   r   r   )r   r    stmtr   r   r=   r>   s          r9   all_grades_funcr      s    I##I,$$l&:&:;AA)+hj 	 ZZ%))+F?EED r"))'2 ! >  		 r;   c                     [         R                  n U R                  n[        R                  " 5       nU(       a  UR                  S5      OS nU(       d  [        SS5      $ [        [        5      R                  [        R                  U:H  5      n[        R                  R                  U5      R                  5       nU(       d  [        SS5      $ [        [        R                   5      R                  [        R                  U:H  [        R"                  U:H  5      R%                  5       n[        R                  R                  U5      R'                  5        Vs/ s H  owS   PM	     nnU(       d  [        SS5      $ [)        X5R*                  5      n	[        [,        5      R                  [,        R                  U:H  [,        R"                  U:H  5      n
[        R                  R                  U
5      R/                  5       R'                  5       n/ nU GH!  n[        [0        R2                  " [        R                  5      5      R                  [        R                  U:H  [        R"                  U:H  [        R                   U:H  5      n[        R                  R                  U5      R5                  5       nU Vs/ s H  nUR                   U:X  d  M  UPM     nn0 nU H|  nUR6                   Hi  nUR                  S5      nUR9                  USSS	.5        UU   S
==   UR                  S
S5      -  ss'   UU   S==   UR                  SS5      -  ss'   Mk     M~     / nSnSnU	 H  nUR                  UR:                  SSS	.5      nUS
   (       a  US   US
   -  S-  nUU-  nUS-  nOSnUR=                  UR:                  [?        US5      U(       a  [?        SU-
  S5      OS[A        US
   5      S.5        M     U(       a  [?        UU-  S5      OSnUR=                  UU[C        U5      UUS.5        GM$     URE                  S S9  [G        SSUUR*                  US.5      S4$ s  snf s  snf )Nr=   zGrade is requiredr   r?   r@   r   z No sections found for this graderE   )rF   rG   rF   rG   rJ   rC   rK   )rE   correct_percentwrong_percentisAttempted)r>   rf   assessments_submittedaverage_masteryconcept_analysisc                     U S   $ )Nr>   rQ   r`   s    r9   rb   'section_progress_func.<locals>.<lambda>)  s    )r;   )rd   Tz*Section-wise progress fetched successfully)r   r   r=   r[   section_analysisr$   )$r   ro   r    r   r,   r-   r   r   r
   rq   r   r   r2   rs   scalar_one_or_noner	   r>   r=   r   ru   r   r[   r   rt   r   rv   ry   r{   r|   rZ   r   r}   boollenr   r   )r   r    r5   r=   stmt_schoolr7   stmt_sectionsrowsectionsall_conceptsr   r   r   r>   stmt_studentsrf   rsection_resultsconcept_summarycrZ   r   accuracy_sum	attemptedr   accavg_masterys                              r9   section_progress_funcr      s   I##ID!%DHHW4E1377%++KNNi,GHKZZ,??AF0#66<//066)+e# hj  #%**"4"4]"C"G"G"IJ"I3A"IHJ@#FF4UMMJL56<<#--:#))U2L **$$\2::<@@BKtzz,//:;AA""i/%'  G+

 ++M:AAC&1JkQYY'5I1kJ A%%uuY'**411KL%g.!%%2CC.%i0AEE)Q4GG0	 & ! 	A"&&qvvq/IJDG}Ig6#=#Q	##66#(a=8;sSy!!4#DM2	%    =FeL94a81,%(%9* 0!
 	Q ` 45?--,  	 C K. Ks   Q!4Q&Q&N)#flaskr   r   r   r   srcr   
src.modelsr   r	   r
   
sqlalchemyr   r   src.utils.responser   src.services.principalsr   src.services.schoolsr   src.services.conceptsr   src.services.studentsr   src.lib.bcryptr   r   src.lib.jwtr   r   r   r:   r   r   r   rQ   r;   r9   <module>r      sG    4 4  M M # - > 2 C G ; & ';|qh.Yr;   