
    Z2jH                    >   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 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  ed
g          Z edd           ee          fd:dZ G d de          Z G d de          Z G d de          Z e!                    d           ee          fd;d            Z"e!                    d           e	d            ee          fd<d#            Z#e$                    d$           ee          fd=d&            Z%e!                    d'           e	d(           ee          fd>d+            Z&e!                    d,           e	d            ee          fd<d-            Z'e!                    d. ee          g/           ee          fd;d0            Z(e$                    d.d1 ee          g2           ee          fd?d3            Z)e*                    d4 ee          g/           ee          fd@d6            Z+e,                    d4 ee          g/           ee          fdAd7            Z-e$                    d8 ee          g/           ee          fd;d9            Z.dS )B    )annotations)date)	APIRouterDependsHeaderHTTPExceptionQuery)	BaseModelField)Sessionselect)get_session)GeoChallengeTargetget_admin_session)create_geo_attemptleaderboardplayers	today_geoweekly_convert
challenges)tagsNzX-Admin-Session)defaultaliasx_admin_session
str | Nonesessionr   returnNonec                &    t          ||            d S Nr   )r   r   s     B/home/agent/projects/FamilyDashboard/backend/app/api/challenges.pyrequire_adminr#      s     g/////    c                  l    e Zd ZU ded<   ded<    edd          Zded<    edd          Zded	<   d
S )GeoAttemptRequestint	player_id	target_idr   d   )gelefloatselected_x_percentselected_y_percentN)__name__
__module____qualname____annotations__r   r.   r/    r$   r"   r&   r&      sf         NNNNNN %s 3 3 33333 %s 3 3 3333333r$   r&   c                     e Zd ZU  edd          Zded<    edd          Zded	<   d
ed<   d
ed<    eddd          Zd
ed<    eddd          Zd
ed<   dZ	ded<    eddd          Z
ded<   dZded<   dZded<   dZded<   dS )TargetCreate   x   )
min_length
max_lengthstrnamecity    r   r:   target_typer-   latitude	longitudeg      I@r   r*   r   r+   r,   	x_percent	y_percentNr   canton   r'   
difficulty 	info_textTboolactive
sort_order)r0   r1   r2   r   r<   r3   r@   rD   rE   rF   rH   rJ   rL   rM   r4   r$   r"   r6   r6      s        s333D3333uV;;;K;;;;OOOuTaC888I8888uTaC888I8888FeA!222J2222IFJr$   r6   c                      e Zd ZU  eddd          Zded<    edd          Zded	<   dZd
ed<   dZd
ed<    eddd          Z	d
ed<    eddd          Z
d
ed<   dZded<    eddd          Zded<   dZded<   dZded<   dZded<   dS )TargetUpdateNr7   r8   )r   r9   r:   r   r<   r>   r?   r@   zfloat | NonerA   rB   r   r*   rC   rD   rE   rF   rG   z
int | NonerH   rJ   zbool | NonerL   rM   )r0   r1   r2   r   r<   r3   r@   rA   rB   rD   rE   rF   rH   rJ   rL   rM   r4   r$   r"   rO   rO   -   s         uTaCHHHDHHHH#eDR@@@K@@@@!H!!!!"I""""#eDQ3???I????#eDQ3???I????F"U4A!<<<J<<<< I    F!J!!!!!!r$   rO   z/challenges/playersdictc                     t          |           S r!   )r   r   s    r"   challenge_playersrS   ;   s    7r$   z/challenges/geo/today.r(   r'   c                "    t          ||           S r!   )r   r(   r   s     r"   	geo_todayrV   @   s    Wi(((r$   z/challenges/geo/attemptpayloadc                P    t          || j        | j        | j        | j                  S r!   )r   r(   r)   r.   r/   )rW   r   s     r"   geo_attemptrY   E   s2    gw'8':KWMgip  jD  E  E  Er$   z/challenges/leaderboard)r   
week_startdate | Nonec                "    t          ||           S r!   )r   )rZ   r   s     r"   challenge_leaderboardr]   J   s    w
+++r$   z/challenges/geo/summaryc                J    t          ||                               di           S )Nsummary)r   getrU   s     r"   challenge_summaryra   O   s"    Wi((,,Y;;;r$   z/admin/challenges/targets)dependenciesc                    |                      t          t                                        t          j        t          j                                                            }dd |D             iS )Ntargetsc                6    g | ]}|                                 S r4   )
model_dump).0rows     r"   
<listcomp>z!admin_targets.<locals>.<listcomp>W   s"    999S((999r$   )execr   r   order_byrM   r<   all)r   rowss     r"   admin_targetsrn   T   sZ    <<122;;<N<Y[m[rssttxxzzD99D999::r$      )status_coderb   c                    t          di |                                 }|                    |           |                                 |                    |           d|                                iS )Ntargetr4   )r   rf   addcommitrefresh)rW   r   rr   s      r"   admin_create_targetrv   Z   sl    77'"4"4"6"677FKKNNOOFf''))**r$   z%/admin/challenges/targets/{target_id}r)   c                   |                     t          |           }|t          dddd          |                    d                                          D ]\  }}t          |||           |                    |           |                                 |                    |           d|                                iS )	N  target_not_foundZiel nicht gefundencodemessagerp   detailT)exclude_unsetrr   )	r`   r   r   rf   itemssetattrrs   rt   ru   )r)   rW   r   rr   keyvalues         r"   admin_update_targetr   c   s    [[+Y77F~=O\q4r4rssss((t(<<BBDD $ $
UU####KKNNOOFf''))**r$   c                   |                     t          |           }|t          dddd          d|_        |                    |           |                                 |                    |           d|                                dS )	Nrx   ry   rz   r{   r~   FT)okrr   )r`   r   r   rL   rs   rt   ru   rf   )r)   r   rr   s      r"   admin_delete_targetr   p   s    [[+Y77F~=O\q4r4rssssFMKKNNOOF&"3"3"5"5666r$   z /admin/challenges/weekly-convertc                     t          |           S r!   )r   rR   s    r"   admin_weekly_convertr   |   s    '"""r$   )r   r   r   r   r   r   )r   r   r   rP   )r(   r'   r   r   r   rP   )rW   r&   r   r   r   rP   )rZ   r[   r   r   r   rP   )rW   r6   r   r   r   rP   )r)   r'   rW   rO   r   r   r   rP   )r)   r'   r   r   r   rP   )/
__future__r   datetimer   fastapir   r   r   r   r	   pydanticr
   r   sqlmodelr   r   app.db.sessionr   
app.modelsr   app.services.admin_authr   app.services.challengesr   r   r   r   r   routerr#   r&   r6   rO   r`   rS   rV   postrY   r]   ra   rn   rv   patchr   deleter   r   r4   r$   r"   <module>r      s   " " " " " "       D D D D D D D D D D D D D D % % % % % % % % $ $ $ $ $ $ $ $ & & & & & & ) ) ) ) ) ) 5 5 5 5 5 5 g g g g g g g g g g g g g g		'	'	' #)&=N"O"O"Ow{++0 0 0 0 04 4 4 4 4	 4 4 4    9   " " " " "9 " " " !"")0)=)=     #" #$$$uSzzggk>R>R ) ) ) ) %$) &''?Fw{?S?S E E E E ('E %&&49E$4G4G4G\c\cdo\p\p , , , , '&, %&&',uSzzggkFZFZ < < < < '&< 'ww}7M7M6NOO%,W[%9%9 ; ; ; ; PO;
 (cQ^I_I_H`aaBI'+BVBV + + + + ba+ 5WW]E[E[D\]]RYRYZeRfRf 	+ 	+ 	+ 	+ ^]	+ 6ggmF\F\E]^^;B7;;O;O 7 7 7 7 _^7 /ww}?U?U>VWW,3GK,@,@ # # # # XW# # #r$   