
    SLAj                        d dl mZ d dlmZmZmZ d dl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mZmZmZmZmZmZmZ  edg	          Z ed
d           ee          fded
z  de
dd
fdZ G d de          Z G d de          Z  G d de          Z! G d de          Z" G d de          Z# G d de          Z$e%                    d           ee          fdede
de&fd            Z'e(                    d            ee          fd!e)d"ede
de&fd#            Z*e(                    d$           ee          fd!e)d"ede
de&fd%            Z+e(                    d&           ee          fd"e de
de&fd'            Z,e%                    d( ee          g)          d* ee          fd+ed,e)de
de&fd-            Z-e(                    d.           ee          fd"e"de
de&fd/            Z.e(                    d0           ee          fd"e"de
de&fd1            Z/e%                    d2 ee          g)          d* ee          fd+ed,e)de
de&fd3            Z0e%                    d4 ee          g)           ee          fde
de&fd5            Z1e(                    d4d6 ee          g7           ee          fd"e#de
de&fd8            Z2e3                    d9 ee          g)           ee          fd:e)d"e$de
de&fd;            Z4e3                    d< ee          g)           ee          fd!e)d=ed"e!de
de&f
d>            Z5d
S )?    )date)	APIRouterDependsHeader)	BaseModelField)Session)get_sessionget_admin_session)admin_screen_time_rangecreate_earn_ruleearn_screen_timeexchange_coins_for_screen_timelist_earn_ruleslist_screen_timestart_screen_timestop_screen_timeundo_earned_screen_timeupdate_day_allowanceupdate_earn_ruleweekly_reportzscreen-time)tagsNzX-Admin-Session)defaultaliasx_admin_sessionsessionreturnc                 &    t          ||            d S Nr   )r   r   s     C/home/agent/projects/FamilyDashboard/backend/app/api/screen_time.pyrequire_adminr"      s     g/////    c                   .    e Zd ZU eed<   dZedz  ed<   dS )ScreenTimeActionRequestr   Nidempotency_key)__name__
__module____qualname__r   __annotations__r&   str r#   r!   r%   r%   "   s/         
JJJ"&OS4Z&&&&&r#   r%   c                   8    e Zd ZU eed<   eed<   dZedz  ed<   dS )ScreenTimeExchangeRequestchild_idr   Nr&   r'   r(   r)   intr*   r   r&   r+   r,   r#   r!   r.   r.   '   s8         MMM
JJJ"&OS4Z&&&&&r#   r.   c                       e Zd ZU  edd          Zedz  ed<    edd          Zedz  ed<   dZedz  ed<   dZ	e
dz  ed<    edd	          Zedz  ed
<   dS )ScreenTimeAllowanceUpdateNr   r   gebase_minutesbonus_minutesadjustment_minuteslocked   )r   
max_lengthnotes)r'   r(   r)   r   r6   r1   r*   r7   r8   r9   boolr<   r+   r,   r#   r!   r3   r3   -   s         $uTa888L#*888 %dq 9 9 9M3:999%)d
)))FD4Kds;;;E3:;;;;;r#   r3   c                   B    e Zd ZU eed<   eed<   eed<   dZedz  ed<   dS )ScreenTimeEarnRequestr/   rule_idr   Nr&   r0   r,   r#   r!   r?   r?   5   sA         MMMLLL
JJJ"&OS4Z&&&&&r#   r?   c                      e Zd ZU  edd          Zeed<    edd          Zeed<   dZeed<    ed	d
          Z	e
ed<    edd
          Ze
ed<    edd
          Ze
ed<   dZe
dz  ed<   dZeed<   dZe
ed<   dS )EarnRuleCreate   x   )
min_lengthr;   slug   title description   r4   required_minutes
   reward_minutesr   coin_rewardNr/   Tactive
sort_orderr'   r(   r)   r   rF   r+   r*   rH   rJ   rL   r1   rN   rO   r/   rP   r=   rQ   r,   r#   r!   rB   rB   <   s         s333D#333!444E3444K!E"333c333%q111NC111uQ1---K---HcDjFDJr#   rB   c                   6   e Zd ZU  eddd          Zedz  ed<    eddd          Zedz  ed<   dZedz  ed<    edd	          Z	e
dz  ed
<    edd	          Ze
dz  ed<    edd	          Ze
dz  ed<   dZe
dz  ed<   dZedz  ed<   dZe
dz  ed<   dS )EarnRuleUpdateNrC   rD   )r   rE   r;   rF   rG   rH   rJ   r4   rL   rN   r   rO   r/   rP   rQ   rR   r,   r#   r!   rT   rT   H   s        uTaCHHHD#*HHHdqSIIIE3:III"Kt"""#(5!#<#<#<cDj<<<!&t!:!:!:NC$J:::#eDQ777Kt777HcDjFD4K!Jd
!!!!!r#   rT   z/screen-timer   c                 "    t          ||           S r    )r   )r   r   s     r!   get_screen_timerV   T   s    GT***r#   z/screen-time/{child_id}/startr/   payloadc                 :    t          || |j        |j                  S r    )r   r   r&   r/   rW   r   s      r!   post_start_screen_timerZ   Y   s    Whg>UVVVr#   z/screen-time/{child_id}/stopc                 .    t          || |j                  S r    )r   r   rY   s      r!   post_stop_screen_timer\   ^   s    GXw|<<<r#   z/screen-time/exchangec                 D    t          || j        | j        | j                  S r    )r   r/   r   r&   rW   r   s     r!   post_screen_time_exchanger_   c   s    )'73CW\SZSjkkkr#   z/admin/screen-time)dependencies   startdaysc                 $    t          || |          S r    )r   rb   rc   r   s      r!   get_admin_screen_timerf   h   s    "7E4888r#   z/screen-time/earnc                 P    t          || j        | j        | j        | j                  S r    )r   r/   r@   r   r&   r^   s     r!   post_screen_time_earnrh   m   s#    GW%5wV]Vmnnnr#   z/screen-time/earn/undoc                 D    t          || j        | j        | j                  S r    )r   r/   r@   r   r^   s     r!   post_screen_time_earn_undorj   r   s    "7G,<gow|\\\r#   z/admin/screen-time/reportc                 $    t          || |          S r    )r   re   s      r!   get_admin_screen_time_reportrl   w   s    %...r#   z/admin/screen-time/earn-rulesc                      t          |           S r    )r   )r   s    r!   get_admin_earn_rulesrn   |   s    7###r#      )status_coder`   c                 F    t          ||                                           S r    )r   
model_dumpr^   s     r!   post_admin_earn_rulers      s    GW%7%7%9%9:::r#   z'/admin/screen-time/earn-rules/{rule_id}r@   c                 L    t          || |                    d                    S NT)exclude_unset)r   rr   )r@   rW   r   s      r!   patch_admin_earn_rulerw      s%    GWg.@.@t.@.T.TUUUr#   z+/admin/screen-time/{child_id}/{target_date}target_datec                 N    t          || ||                    d                    S ru   )r   rr   )r/   rx   rW   r   s       r!   patch_admin_screen_timerz      s(    ;@R@Rae@R@f@fgggr#   )6datetimer   fastapir   r   r   pydanticr   r   sqlmodelr	   app.db.sessionr
   app.services.admin_authr   app.services.screen_timer   r   r   r   r   r   r   r   r   r   r   r   routerr+   r"   r%   r.   r3   r?   rB   rT   getdictrV   postr1   rZ   r\   r_   rf   rh   rj   rl   rn   rs   patchrw   rz   r,   r#   r!   <module>r      s         . . . . . . . . . . % % % % % % % %       & & & & & & 5 5 5 5 5 5                            
	(	(	( #)&=N"O"O"Ow{++0 04Z00 
0 0 0 0' ' ' ' 'i ' ' '
' ' ' ' '	 ' ' '< < < < <	 < < <' ' ' ' 'I ' ' '	 	 	 	 	Y 	 	 		" 	" 	" 	" 	"Y 	" 	" 	" N3:7;3G3G + +$ + +D + + + + ,--_f_fgr_s_s W WS W3J WU\ Wx| W W W .-W +,,^e^efq^r^r = =C =2I =T[ =w{ = = = -,= $%%U\U\]hUiUi l l'@ l7 lnr l l l &%l  0F0F/GHH34Q\I]I] 9 9 9S 9w 9bf 9 9 9 IH9  !!MTWU`MaMa o o#8 o7 ofj o o o "!o %&&RYRYZeRfRf ] ](= ] ]ko ] ] ] '&] 'ww}7M7M6NOO:;PWPWXcPdPd / / /C /g /im / / / PO/ +77=;Q;Q:RSS,3GK,@,@ $ $' $T $ $ $ TS$ ,#WWUbMcMcLdeeELW[EYEY ; ;. ;7 ;^b ; ; ; fe; 7ww}G]G]F^__T[T[\gThTh V V3 V V' Vmq V V V `_V ;77S`KaKaJbccu|u|  ~I  vJ  vJ h hc h hG` hkr h  OS h h h dch h hr#   