Ë
    cç(jÄ  ã                   ó®  — d dl mZmZmZmZmZmZmZmZ d dl	m
Z
mZ d dlmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZ d dlmZmZ d d	lm Z m!Z!m"Z"m#Z#m$Z$m%Z%  ed
g¬«      Z&de
fd„Z'e&jQ                  ded¬«       ee«       ee«      fdede
defd„«       Z)e&jQ                  ded¬«       edd¬«       edd¬«       ed¬«       edd ¬«       edd¬«       ed¬«       edd¬«       ed d ¬«       ed¬«       ed¬«       ed¬«       ed¬«       ee«       ee«      fde*de*dz  de+dz  d e*dz  d!e*dz  d"e+dz  d#e*dz  d$e*d%e+dz  d&e,d'edz  d(e-e   dz  de
defd)„«       Z.e&jQ                  d*ed+¬«       edd¬«       ed¬«       ee«       ee«      fd,e*d(e-e   dz  de
d-efd.„«       Z/e&ja                  d/ed0¬«       eddd1¬2«       ee«       ee«      fde*de
d-efd3„«       Z1e&ja                  d4ed5¬«       eddd1¬2«       ee«       ee«      fde*de
d-efd6„«       Z2e&jQ                  d7ed8¬«       ee«       ee«      fdede
defd9„«       Z3y):é    )Ú	APIRouterÚDependsÚFileÚFormÚHTTPExceptionÚQueryÚ
UploadFileÚstatus)ÚSessionÚ
joinedload)ÚSessionLocalÚget_dbÚrelease_db_connection)Úrequire_admin_token)ÚUser)ÚMemberSessionProgress)ÚMarkMemberWeekCompleteRequestÚ!MemberSessionProgressListResponseÚMemberSessionProgressOutÚ MemberSessionProgressSaveRequestÚMemberWeeksDetailResponse)Úget_member_weeks_detailÚmark_member_week_complete)Ú"add_member_session_progress_imagesÚcalculate_member_pointsÚlist_member_session_progressÚsave_member_progress_imageÚsave_member_session_progressÚ!serialize_member_session_progresszadmin-member-progress)ÚtagsÚdbc                 ó†  — | j                  t        «      j                  t        t        j                  «      t        t        j
                  «      «      j                  t        j                  |j                  k(  «      j                  «       }t        |xs |«      }t        | |j                  «      }|d   |d<   |d   |d<   |S )NÚassigned_points_totalÚavailable_points)Úqueryr   Úoptionsr   Úassigned_byÚimagesÚfilterÚidÚfirstr   r   Úuser_id)r!   ÚrowÚfullÚdataÚpointss        úF/var/www/html/kelly/kelly-backend/app/routers/admin/member_progress.pyÚ_progress_responser2      s¢   € ð 	�‰Ô&Ó'ß	‰”Ô1×=Ñ=Ó>Ä
ÔK`×KgÑKgÓ@hÓ	iß	‰Ô%×(Ñ(¨C¯F©FÑ2Ó	3ß	‰‹ð	 	ô -¨Tª[°SÓ9€DÜ$ R¨¯©Ó5€FØ$*Ð+BÑ$C€DÐ	 Ñ!Ø%Ð&8Ñ9€DÐ	ÑØ€Kó    z/save-member-session-progresszHSave assigned points, feedback, and completion for a member week/session)Úresponse_modelÚsummaryÚbodyÚadminc                 ó¢   — 	 t        ||| «      }t        ||«      S # t        $ r*}t        t        j                  t        |«      ¬«      |‚d }~ww xY w)N©Ústatus_codeÚdetail)r   Ú
ValueErrorr   r
   ÚHTTP_404_NOT_FOUNDÚstrr2   )r6   r!   r7   r-   Úes        r1   Úsave_progressr@   +   sS   € ðYÜ*¨2¨u°dÓ;ˆô ˜b #Ó&Ð&øô ò YÜ¬×(AÑ(AÌ#ÈaË&ÔQÐWXÐXûðYús   ‚ ›	A¤%A	Á	Az(/save-member-session-progress-with-imagez?Save member week/session progress with an optional image upload.é   )ÚgeN)ÚdefaultrB   )rC   Fr,   Úweek_idÚ	week_nameÚ
week_indexÚ
session_idÚsession_nameÚsession_numberÚassigned_pointsÚfeedbackÚis_completedÚimager(   c              ƒ   ó2  K  — t        | |||||||||	¬«
      }g }|r/|j                  |D �cg c]  }|sŒ|j                  sŒ|‘Œ c}«       |
r|
j                  r|j                  |
«       |j                  }t        |«       g }|D ]$  }|j                  t        |«      ƒ d {  –—† «       Œ& t        «       }	 |j                  t        |«      }|€t        t        j                  d¬«      ‚t        ||||r|d   nd ¬«      }t        |«      dkD  rt        ||j                  |dd  ¬«       t!        ||«      |j#                  «        S c c}w 7 Œ¨# t$        $ r*}t        t        j                  t'        |«      ¬«      |‚d }~ww xY w# |j#                  «        w xY w­w)N)
r,   rD   rE   rF   rG   rH   rI   rJ   rK   rL   zAdmin not foundr9   r   )Ú
image_pathrA   ©Úprogress_idÚimage_paths)r   ÚextendÚfilenameÚappendr*   r   r   r   Úgetr   r   r
   r=   r   Úlenr   r2   Úcloser<   r>   )r,   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   r(   r!   r7   r6   Úupload_filesÚfÚadmin_idrR   Úwrite_dbÚ
admin_userr-   r?   s                          r1   Úsave_progress_with_imager^   <   s†  è ø€ ô* ,ØØØØØØ!Ø%Ø'ØØ!ô€Dð &(€LÙØ×Ñ©ÓC© 1²!¸¿
»
šQ¨ÑCÔDÙ�—’Ø×Ñ˜EÔ"Ø�x‰x€HÜ˜"ÔØ€KÛˆØ×ÑÔ!;¸AÓ!>×>Õ?ð ä‹~€HðØ—\‘\¤$¨Ó1ˆ
ØÐÜ¬F×,EÑ,EÐN_Ô`Ð`Ü*ØØØÙ)4�{ 1’~¸$ô	
ˆô ˆ{Ó˜aÒÜ.Ø c§f¡f¸+ÀaÀb¸/õô " (¨CÓ0ð 	�‰Õùò7 Dð ?ùô" ò YÜ¬×(AÑ(AÌ#ÈaË&ÔQÐWXÐXûðYûð 	�‰ÕüsY   ‚)F«E³EÁ EÁAFÂ!E

Â"FÂ7A=E Ä4FÅ	E?Å%E:Å:E?Å?F ÆFÆFz#/add-member-session-progress-imageszDAppend one or more images to an existing member_session_progress rowrQ   Ú_c              ƒ   ó  K  — |st        t        j                  d¬«      ‚t        |«       g }|D ]4  }|sŒ|j                  sŒ|j                  t        |«      ƒ d {  –—† «       Œ6 |st        t        j                  d¬«      ‚t        «       }	 t        || |¬«       |j                  t        | «      }|st        t        j                  d¬«      ‚t        ||«      |j                  «        S 7 Œ�# |j                  «        w xY w­w)NzSend at least one image filer9   rP   zProgress row not found)r   r
   ÚHTTP_400_BAD_REQUESTr   rT   rU   r   r   r   rV   r   r=   r2   rX   )rQ   r(   r!   r_   ÚpathsrZ   r\   r-   s           r1   Úadd_progress_imagesrc   }   sÔ   è ø€ ñ Ü¬×(CÑ(CÐLjÔkÐkÜ˜"ÔØ€EÛˆÚ�—“Ø�L‰LÔ9¸!Ó<×<Õ=ð ñ Ü¬×(CÑ(CÐLjÔkÐkÜ‹~€HðÜ*¨8ÀÐZ_Õ`Ø�l‰lÔ0°+Ó>ˆÙÜ¬F×,EÑ,EÐNfÔgÐgÜ! (¨CÓ0à�‰Õð =ùð 	�‰Õüs5   ‚2DµDÁDÁC+
Á1DÂAC- ÃDÃ-C?Ã?Dz/list-member-session-progressz:List saved points, feedback, and completion for one memberzMember user id)rB   Údescriptionc           	      ó~   — t        || «      }t        t        |«      |D �cg c]  }t        |«      ‘Œ c}¬«      S c c}w )N)ÚtotalÚprogress)r   r   rW   r   )r,   r!   r_   Úrowsr-   s        r1   Úlist_progressri   œ   s?   € ô (¨¨GÓ4€DÜ,Ü�$‹iÙDHÓIÁD¸SÔ3°CÕ8ÀDÑIôð ùâIs    :
z/member-weeks-detailzGGet member weeks and sessions with live progress for admin details pagec                 ó   — t        || «      S ©N)r   )r,   r!   r_   s      r1   Úmember_weeks_detailrl   ­   s   € ô # 2 wÓ/Ð/r3   z/mark-member-week-completez?Mark or unmark all sessions in a week as completed for a memberc                 ó   — t        || |«      S rk   )r   )r6   r!   r7   s      r1   Úmark_week_completern   º   s   € ô % R¨¨uÓ5Ð5r3   )4Úfastapir   r   r   r   r   r   r	   r
   Úsqlalchemy.ormr   r   Úapp.databaser   r   r   Úapp.dependenciesr   Ú
app.modelsr   Úapp.models_adminr   Úapp.schemasr   r   r   r   r   Ú!app.services.admin_member_servicer   r   Úapp.services.admin_servicer   r   r   r   r   r   Úrouterr2   Úpostr@   Úintr>   ÚboolÚlistr^   rc   rV   ri   rl   rn   © r3   r1   Ú<module>r~      s¤  ðß \× \Ó \ß .ç DÑ DÝ 0Ý Ý 2÷õ ÷ a÷÷ ñ 
Ð0Ð1Ô	2€ð˜7ó ð ‡�Ø#Ø+ØVð ó ñ ˜&“/ÙÐ-Ó.ñ	'Ø
*ð	'àð	'ð ò	'óð
	'ð ‡�Ø.Ø+ØMð ó ñ ˜ ”?Ù t°Ô2Ù ¨Ô.Ù!¨$°1Ô5Ù!¨$°1Ô5Ù#¨DÔ1Ù!%¨d°qÔ!9Ù¨¨aÔ0Ù¨Ô-Ù eÔ,Ù#¨DÔ1Ù&*°4Ô&8Ù˜&“/ÙÐ-Ó.ñ9Øð9à�4‰Zð9ð �T‰zð9ð �d‘
ð	9ð
 �d‘
ð9ð ˜‘*ð9ð ˜$‘Jð9ð ð9ð �D‰jð9ð ð9ð ˜Ñð9ð �Ñ˜tÑ#ð9ð 	ð9ð ò9óð
9ðx ‡�Ø)Ø+ØRð ó ñ ˜C A”Ù&*°4Ô&8Ù˜&“/ÙÐ)Ó*ñ	Øðà�Ñ˜tÑ#ðð 	ðð ò	óð
ð4 ‡�Ø#Ø4ØHð ó ñ ˜ Ð0@ÔAÙ˜&“/ÙÐ)Ó*ñ	Øð	àð	ð ò	óð
	ð ‡�ØØ,ØUð ó ñ ˜ Ð0@ÔAÙ˜&“/ÙÐ)Ó*ñ0Øð0àð0ð ò0óð
0ð ‡�Ø Ø,ØMð ó ñ ˜&“/ÙÐ-Ó.ñ6Ø
'ð6àð6ð ò6óñ
6r3   