Ë
    Íµ&jb  ã            	       óL  — d dl mZmZ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 d dlmZmZmZmZmZ d dlmZmZmZmZmZmZmZ  edg¬	«      Zej=                  d
ed¬«       ee	«       ee«      fdedefd„«       Zej=                  ded¬«       ee	«       ee«       eddd¬«      fdedededz  fd„«       Z ejC                  deejD                  d¬«       ee	«       ee«      fdededefd„«       Z#ej=                  ded¬«       ee	«       ee«      fdedefd„«       Z$y) é    )Ú	APIRouterÚDependsÚHTTPExceptionÚQueryÚstatus)ÚSession)Úget_db)Úrequire_user_token)ÚUser)ÚMemberPointsOutÚRewardClaimListResponseÚRewardClaimOutÚRewardClaimRequestÚRewardListResponse)Úcreate_reward_claimÚlist_rewardsÚlist_user_reward_claimsÚserialize_rewardÚserialize_reward_claimÚcalculate_member_pointsÚget_member_pointszuser-rewards)Útagsz/list-rewardsz,List rewards for the user app (newest first))Úresponse_modelÚsummaryÚdbÚuserc                 óò   — t        | «      }|D �cg c]  }t        |«      ‘Œ }}t        | |j                  «      xs t	        | |j                  «      }t        t        |«      ||d   |d   |d   ¬«      S c c}w )NÚavailable_pointsÚassigned_points_total)ÚtotalÚrewardsr   Útotal_pointsr   )Úfetch_rewardsr   r   Úidr   r   Úlen)r   r   r!   ÚrÚ
serializedÚpointss         úC/var/www/html/kelly/kelly-backend/app/routers/user_panel/rewards.pyr   r      s€   € ô ˜BÓ€GÙ/6Ó7©w¨!Ô" 1Õ%¨w€JÐ7Ü˜r 4§7¡7Ó+ÒSÔ/FÀrÈ4Ï7É7Ó/S€FÜÜ�*‹oØØÐ 2Ñ3ØÐ3Ñ4Ø$Ð%<Ñ=ôð ùò 8s   �A4z/list-reward-claimsz.List reward claims for the logged-in user onlyNr   z'Optional: pending | accepted | rejected)ÚaliasÚdescriptionÚstatus_filterc                 ó<  — |r=|j                  «       j                  «       }|dvrt        t        j                  d¬«      ‚t        | |j                  |¬«      }|D �cg c]   }t        j                  t        |«      «      ‘Œ" }}t        t        |«      |¬«      S c c}w )N>   ÚpendingÚacceptedÚrejectedz2status must be one of: pending, accepted, rejected©Ústatus_codeÚdetail)r,   )r    Úclaims)ÚstripÚlowerr   r   ÚHTTP_400_BAD_REQUESTr   r$   r   Úmodel_validater   r   r%   )r   r   r,   r4   Úcr'   s         r)   Úlist_my_reward_claimsr:   0   s’   € ñ Ø%×+Ñ+Ó-×3Ñ3Ó5ˆØÐ CÑCÜÜ"×7Ñ7ØKôð ô % R¨¯©ÀÔN€FÙTZÓ[ÑTZÈq”.×/Ñ/Ô0FÀqÓ0IÕJÐTZ€JÐ[Ü"¬¨Z«ÀÔLÐLùò \s   Á%Bz/claim-rewardz-Claim a reward product for the logged-in user)r   r2   r   Úbodyc           	      óZ  — 	 t        ||| «      }t        |«      S # t        $ �r}t        |xs d«      }d|j                  «       v rt	        t
        j                  d|dœ¬«      |‚d|j                  «       v rt	        t
        j                  |¬«      |‚d|v rsdd l}|j                  d	|«      }t        |«      d
k\  rt        |d   «      nd }t        |«      dk\  rt        |d
   «      nd }	t	        t
        j                  d||	|dœ¬«      |‚t	        t
        j                  |¬«      |‚d }~ww xY w)NÚ zalready claimedÚalready_claimed)ÚerrorÚmessager1   zphone numberÚInsufficientr   z\d+é   é   Úinsufficient_points)r?   Ú	availableÚ	requestedr@   )r   Ú
ValueErrorÚstrr6   r   r   r7   ÚreÚfindallr%   ÚintÚHTTP_404_NOT_FOUNDr   )
r;   r   r   ÚclaimÚeÚmsgrI   ÚnumsrE   rF   s
             r)   Úclaim_rewardrQ   J   s1  € ð VÜ# B¨¨dÓ3ˆô@ " %Ó(Ð(øô? ó VÜ�!’'�r‹lˆØ §	¡	£Ñ+ÜÜ"×7Ñ7à.Ø"ñôð ðð ˜SŸY™Y›[Ñ(Ü¬F×,GÑ,GÐPSÔTÐZ[Ð[Ø˜SÑ ãà—:‘:˜f cÓ*ˆDÜ(+¨D«	°Qªœ˜D ™Gœ¸DˆIÜ(+¨D«	°Qªœ˜D ™Gœ¸DˆIÜÜ"×7Ñ7à2Ø!*Ø!*Ø"ñ	ôð ðô ¬×(AÑ(AÈ#ÔNÐTUÐUûð=Vús   ‚ š
D*¤DD%Ä%D*z/pointsz@Get current assigned and available points for the logged-in userc                 óh   — t        | |j                  «      xs |j                  dddœ}t        di |¤ŽS )Nr   )Úuser_idr   r   © )r   r$   r   )r   r   Údatas      r)   Ú
get_pointsrV   y   s4   € ô ˜R §¡Ó)Òt¸¿¹Ð[\ÐrsÑ-t€DÜÑ"˜TÑ"Ð"ó    )%Úfastapir   r   r   r   r   Úsqlalchemy.ormr   Úapp.databaser	   Úapp.dependenciesr
   Ú
app.modelsr   Úapp.schemasr   r   r   r   r   Úapp.services.admin_servicer   r   r#   r   r   r   r   r   ÚrouterÚgetrH   r:   ÚpostÚHTTP_201_CREATEDrQ   rV   rT   rW   r)   Ú<module>rc      s«  ðß DÕ DÝ "å Ý /Ý ÷õ ÷÷ ñ ñ 
˜Ð(Ô	)€ð ‡�ØØ%Ø:ð ó ñ ˜&“/ÙÐ+Ó,ñØðà
òóð
ð  ‡�ØØ*Ø<ð ó ñ ˜&“/ÙÐ+Ó,Ù %ØØØ=ô!ñMØðMà
ðMð ˜‘:òMóð
Mð* ‡�ØØ!Ø×'Ñ'Ø;ð	 ó ñ ˜&“/ÙÐ+Ó,ñ&)Ø
ð&)àð&)ð ò&)óð&)ðR ‡�ØØ"ØNð ó ñ ˜&“/ÙÐ+Ó,ñ#Øð#à
ò#óñ
#rW   