a
    i                     @   s   d Z ddlZddlZddlmZmZmZ G dd dZddd	Zdd
dZ	dddZ
d ddZd!ddZd"ddZd#ddZd$ddZd%ddZd&ddZg dZdS )'a  
Physical Activity Events
Activity events focused on physical fitness and sports (ages 6-100)

Events:
- joinSoccerTeam: Join soccer team with practice schedule (ages 6-18)
- soccerProgress: Progress event for soccer team members
- learnMartialArts: Sign up for martial arts classes (ages 6-40)
- martialArtsProgress: Progress event for martial arts students
- runningHabit: Start a running routine (ages 12-70)
- runningProgress: Progress event for runners
- joinGym: Join a gym with membership options (ages 16-100)
- gymProgress: Progress event for gym members
- yogaClass: Try yoga with regular class option (ages 14-100)
- yogaProgress: Progress event for yoga practitioners
    N)messageFunctionquestionFunctionanswerOptionc                   @   s   e Zd ZdZdddZdS )PhysicalActivityaZ  
    Physical activity definition (similar to ExtraCurricular)

    Attributes:
        id: Unique identifier
        title: Activity name
        type: Activity type ('physical_activity')
        focus: Default focus type
        description: Description of the activity
        energyModifier: Energy cost
        image: Optional image URL
    Nc                 C   s4   t  j| _|| _|| _d| _|| _|| _|| _	d S )NZphysical_activity)
uuiduuid4hexidtitleimagetypefocusdescriptionenergyModifier)selfr
   r   r   r   r    r   ;/var/www/lichun.app/lichun/ws/events/activities/physical.py__init__(   s    zPhysicalActivity.__init__)N)__name__
__module____qualname____doc__r   r   r   r   r   r      s   r   messageFc                 C   s  ddl m}m}m} d}tdd | jjD }|| jvop| op| jjdkop| jjdkop| jj	dkopd	t

 d
 k}	d}|dkrtddddtdddtddddg}
t||| |	|
S |dkr|d dkr| j jd7  _| j jd8  _| j jd7  _tddddd}| jj| | jj||j|j| j | jj|| jdg dd| jj t
d d!d" dd#lm} || j | jd$ nX|d dkr| j jd7  _| j jd8  _| jd% n| j jd8  _| jd& d'S )(z3Join soccer team with practice schedule (ages 6-18)r   )	schedulerActivityRecord
find_wherejoinSoccerTeamc                 s   s   | ]}t |d ddkV  qdS )r
   NSoccer Teamgetattr.0activityr   r   r   	<genexpr>9   s   z!joinSoccerTeam.<locals>.<genexpr>      student     z'Would you like to join the soccer team?answerzYes, join the team!join
   data
energyCostzNo, not interestednor-   zTry out and seetryout   r-      r   Balancedz2School soccer team with regular practice and gamesr
   r   r   r   zSoccer Practice)
twice-week	afternoonweekdayschool   <   locationdurationgetPeakEnergyz5You joined the soccer team! Practice is twice a week.z'You tried out for the team and had fun!z(You decided not to join the soccer team.N)	functionsr   r   r   anyc
activitiesaskedQuestionsageYears
occupationrandomr   r   socialenergyhealthr   appendactivityRecordsr	   r   date	schedulesrandintstats.stats_managerr@   messageQueue	happiness)playerr   r   responser   r   r   fnamealready_membercheckanswerOptionssoccer_activityr@   r   r   r   r   2   sp    








r   c                 C   s  ddl m} d}d}| jjD ]}t|dddkr|} q:qd}|rd| jjD ]}	|	j|jkrJ|	} qdqJ|| jvo|duo|duo| jjdko| jjdkod	t		 d
 k}
|
sdS |j
}|j}|dk rd}|dkrtddddtdddtdddg}t||| |
|S |dkr|d dkrZ| j
d7  _
| j jd8  _| j jd7  _| jd nT|d dkr| j
d7  _
| j jd7  _| jd n| j
d7  _
| jd n|dkrd}|dkrtdd d!dtd"d#dtd$d%dg}t||| |
|S |dkr|d d krR| j
d7  _
| j jd!8  _| j jd7  _| jd& nV|d d#kr| j
d7  _
| j jd7  _| jd' n| j jd7  _| jd( nd)}|dkrtd*d+dtd,d-ddtd.d/dg}t||| |
|S |dkr|d d+kr0| j
d7  _
| j jd7  _| jd0 nf|d d-krz| j
d7  _
| j jd8  _| j jd7  _| jd1 n| j jd7  _| jd2 dS )3z&Progress event for soccer team membersr   )r   soccerProgressNr
   r   r$   r%   r'     r:   zJYou're struggling at soccer practice. Your teammates are way ahead of you.r)   zPractice harder!practicer3   r,   zAsk coach for tipsZcoachr0   zJust do your bestacceptr-   r2   z:You put in extra practice time. Your skills are improving!r+   zAThe coach gives you some helpful pointers. You're getting better!z8You accept your current level and just have fun playing.F   z;You're becoming one of the best players on the soccer team!zTrain even harder!train   zHelp weaker teammateshelpzEnjoy the successZenjoyz3Your dedication pays off! You're now a star player!zHHelping your teammates makes everyone better. You're a true team player!z/You enjoy being good at soccer. It feels great!z=Soccer practice is going well. You're making steady progress.zFocus on teamworkZteamzWork on skillsZskillszJust have funZfunz2Working with your team improves your coordination!z0Extra drills pay off. Your skills are improving!z(Soccer is fun! You enjoy every practice.)rA   r   rC   rD   r   rM   r	   eventsrF   rH   performancer   r   r   rJ   rK   rR   rL   rI   rS   )rT   r   r   rU   r   rV   rZ   r"   activity_recordrecordrX   rd   r   rY   r   r   r   r[   ~   s    
















r[   c                 C   s  ddl m}m} d}tdd | jjD }|| jvo`| o`| jjdko`| jjdko`dt d	 k}d
}|dkrt	dddddt	dddt	dddg}	t
||| ||	S |dkr|d dkr| j jd8  _| j jd7  _| j jd7  _| j jd8  _tddddd}
| jj|
 | jj||
j|
j| j | jj|| jdddgd | jj tdd!d" dd#lm} || j | jd$ nH|d dkr| j jd%7  _| jd& n| j jd%8  _| jd' d(S ))z,Sign up for martial arts classes (ages 6-40)r   r   r   learnMartialArtsc                 s   s   | ]}t |d ddkV  qdS )r
   NMartial Artsr   r    r   r   r   r#      s   z#learnMartialArts.<locals>.<genexpr>r$   (   r'   r(   z>A martial arts dojo is offering beginner classes. Want to try?r)   zYes, sign up!Zsignupr3   d   )r-   r.   	moneyCostz	No thanksr/   r0   zWatch a class firstZwatchr-   r+   ri   	Work Hardz*Martial arts training with regular classesra   r5   zMartial Arts Classr6   eveningZdojor;   r<   r?   z=You signed up for martial arts classes! Training begins soon.r2   z-You watched a class and found it interesting!z1You decided martial arts isn't for you right now.N)rA   r   r   rB   rC   rD   rE   rF   rH   r   r   rJ   rK   rS   moneyr   rL   rM   r	   r   rN   rO   rP   rQ   r@   rR   rI   )rT   r   r   rU   r   r   rV   rW   rX   rY   martial_arts_activityr@   r   r   r   rh      sl    








rh   c                 C   s  d}d}| j jD ]}t|dddkr|} q.qd}|rX| j jD ]}|j|jkr>|} qXq>|| jvo|duo|duo| j jdko| j jdkodt d k}	|	sdS |j}
|
d	k rd
}|dkrt	ddddt	dddt	dddg}t
||| |	|S |dkr|d dkrF| jd7  _| j  jd8  _| j  jd7  _| jd nT|d dkr| jd7  _| j  jd7  _| jd n| jd7  _| jd n|
dkrd}|dkrt	ddd dt	d!d"ddt	d#d$dg}t
||| |	|S |dkr|d dkr@| jd%7  _| j  jd 8  _| j  jd%7  _| jd& nf|d d"kr| jd7  _| j  jd8  _| j  jd'7  _| jd( n| j  jd7  _| jd) nd*}|dkrt	d+d,ddt	d-d.dt	d/d0d%dg}t
||| |	|S |dkr|d d,kr@| jd7  _| j  jd8  _| j  jd%7  _| jd1 nd|d d.krz| jd27  _| j  jd%7  _| jd3 n*| jd%7  _| j  jd%8  _| jd4 dS )5z(Progress event for martial arts studentsmartialArtsProgressNr
   ri   r$   rj   r'   r\   r:   zNThe martial arts forms are harder than you expected. You keep making mistakes.r)   Practice at homer]   r3   r,   zAsk sensei for helpZsenseir0   zKeep tryingkeepr-   r2   z6Extra practice helps! Your forms are getting smoother.   z0Your sensei provides guidance. You're improving!   z3Persistence pays off. You're slowly getting better.r_   z9Your sensei says you're ready to test for your next belt!zTrain intensely for testr`      zTake the testtestzWait until readywaitr+   zJYour intense training pays off! You pass the belt test with flying colors!ra   z&You passed! You earned your next belt!z2You'll take the test when you feel more confident.zQYour martial arts training is going well. You're developing discipline and skill.Focus on strengthstrengthzPractice with partnerpartnerzMaster the basicsZbasicsz*Building strength enhances your technique!   z3Partner training improves your reflexes and timing!z3Perfecting the basics makes everything else easier!)rC   rD   r   rM   r	   rc   rF   rH   rd   r   r   rJ   rK   rR   rL   rI   rS   )rT   r   r   rU   rV   rp   r"   re   rf   rX   rd   rY   r   r   r   rq   2  s    













rq   c                 C   s  ddl m}m} d}tdd | jjD }|| jvo`| o`| jjdko`| jjdko`dt d	 k}d
}|dkrt	ddddt	dddt	dddg}	t
||| ||	S |dkr|d dkrj| j jd7  _| j jd8  _tddddd}
| jj|
 | jj||
j|
j| j | jj|| jdddgd| jj tddd dd lm} || j | jd! nH|d dkr| j jd7  _| jd" n| j jd#8  _| jd$ d%S )&z$Start a running routine (ages 12-70)r   rg   runningHabitc                 s   s   | ]}t |d ddkV  qdS )r
   NRunningr   r    r   r   r   r#     s   zrunningHabit.<locals>.<genexpr>rt   r_   r'   r(   z8You're thinking about starting a running routine. Do it?r)   zYes, start running dailydailyr+   r,   zRun occasionallyZ
occasionalr0   zNo, too much effortr/   r-   ra   r~   r4   z,Daily running routine for health and fitnessr5   zMorning RunmorningZoutsiderj   r<   r?   z$You started a daily running routine!z.You'll run occasionally when you feel like it.r2   z'You decided running is too much effort.N)rA   r   r   rB   rC   rD   rE   rF   rH   r   r   rK   rJ   r   rL   rM   r	   r   rN   rO   rP   rQ   r@   rR   rS   )rT   r   r   rU   r   r   rV   Zalready_runningrX   rY   running_activityr@   r   r   r   r}     sh    








r}   c                 C   s  d}d}| j jD ]}t|dddkr|} q.qd}|rX| j jD ]}|j|jkr>|} qXq>|| jvo|duo|duo| j jdko| j jdkodt d k}	|	sdS |j}
|
d	k rd
}|dkrt	ddddt	dddt	dddg}t
||| |	|S |dkr|d dkrF| jd7  _| j  jd8  _| j  jd7  _| jd nV|d dkr| jd7  _| j  jd7  _| jd n| j  jd7  _| jd n|
dkrd}|dkrt	ddddt	dd ddt	d!d"dg}t
||| |	|S |dkr|d dkrR| jd#7  _| j  jd8  _| j  jd7  _| j  jd$7  _| jd% nf|d d kr| jd7  _| j  jd8  _| j  jd#7  _| jd& n| j  jd#7  _| jd' nd(}|dkrt	d)d*ddt	d+d,dt	d-d.dg}t
||| |	|S |dkr|d d*krP| jd#7  _| j  jd8  _| j  jd7  _| jd/ nf|d d,kr| jd07  _| j  jd7  _| jd1 n,| j  jd7  _| j  jd#8  _| jd2 dS )3zProgress event for runnersrunningProgressNr
   r~   rt   r_   r'   r\   r:   zARunning is harder than you thought. You're out of breath quickly.r)   zPush through itpushr3   r,   zSlow down, build graduallyZslowr0   zTake a breakbreakr-   r2   z;Pushing yourself builds endurance! You're getting stronger.r|   z>Building gradually prevents injury. Your stamina is improving!z8Taking a break helps you recover and come back stronger.z4You're in great running shape! Consider a challenge?zTrain for 5K raceracera   zIncrease distancedistancezMaintain current levelmaintainr+   rv   z9You completed your first 5K race! What an accomplishment!z=Increasing your distance challenges you and builds endurance!z3You enjoy your current routine. Consistency is key!zBYour running routine is going well. You're making steady progress.zFocus on speedspeedzRun with a friendfriendzEnjoy the sceneryZsceneryz0Speed work improves your cardiovascular fitness!ru   zBRunning with a friend makes it more fun and keeps you accountable!z8Running in nature brings peace and clarity to your mind.)rC   rD   r   rM   r	   rc   rF   rH   rd   r   r   rJ   rK   rR   rL   rS   rI   stress)rT   r   r   rU   rV   r   r"   re   rf   rX   rd   rY   r   r   r   r     s    














r   c                 C   s  ddl m}m} d}tdd | jjD }|| jvo`| o`| jjdko`| jjdko`dt d	 k}d
}|dkrt	dddddt	ddddt	dddt	dddg}	t
||| ||	S |dkr|d dkr| j jd8  _| j jd7  _| j jd8  _tddddd }
| jj|
 | jj||
j|
j| j | jj|| jd!d"d#gd$| jj td%d&d' dd(lm} || j | jd) n|d dkrH| j jd8  _| j jd7  _tdd*d+d,d }
| jj|
 | jj||
j|
j| j | jj|| jd!d-d#gd$| jj td.d/d' dd(lm} || j | jd0 nH|d dkrt| j jd17  _| jd2 n| j jd18  _| jd3 d4S )5z0Join a gym with membership options (ages 16-100)r   rg   joinGymc                 s   s   | ]}t |d ddkV  qdS )r
   NGym Membershipr   r    r   r   r   r#   S  s   zjoinGym.<locals>.<genexpr>   rk   r'   r(   z,The local gym is offering memberships. Join?r)   zYes, full membership!full2   r+   r-   rl   r.   zYes, basic planbasicrv   r-   rl   zNo, workout at homehomer0   zNot interestedr/   r-   r3   r   rm   z<Full gym membership with access to all equipment and classesr%   r5   zGym Workoutzthrice-weekrn   Zgym-   Z   r<   r?   z/You got a full gym membership! Time to get fit.r4   z6Basic gym membership with access to standard equipmentrt   r6   r:   r;   zYou got a basic gym membership!r2   zYou'll workout at home instead.zYou decided not to join a gym.N)rA   r   r   rB   rC   rD   rE   rF   rH   r   r   ro   rK   rJ   r   rL   rM   r	   r   rN   rO   rP   rQ   r@   rR   rS   )rT   r   r   rU   r   r   rV   rW   rX   rY   gym_activityr@   r   r   r   r   L  s    











r   c                 C   s  d}d}| j jD ]}t|dddkr|} q.qd}|rX| j jD ]}|j|jkr>|} qXq>|| jvo|duo|duo| j jdko| j jdkodt d k}	|	sdS |j}
|
d	k rd
}|dkrt	dddddt	dddt	dddg}t
||| |	|S |dkr|d dkrX| jd7  _| j  jd8  _| j  jd8  _| j  jd7  _| jd nT|d dkr| jd7  _| j  jd7  _| jd n| jd7  _| jd n(|
dkrd}|dkrt	d d!d"d#t	d$d%dd#t	d&d'dg}t
||| |	|S |dkr|d d!krb| jd7  _| j  jd"8  _| j  jd7  _| j  jd7  _| jd( nf|d d%kr| jd7  _| j  jd8  _| j  jd7  _| jd) n| j  jd7  _| jd* nd+}|dkrt	d,d-dd#t	d.d/dt	d0d1dd#g}t
||| |	|S |dkr|d d-krd| jd7  _| j  jd8  _| j  jd7  _| jd2 nt|d d/kr| jd7  _| j  jd7  _| j  jd7  _| jd3 n*| jd47  _| j  jd8  _| jd5 dS )6zProgress event for gym membersgymProgressNr
   r   r   rk   r'   r\   r:   zEYou're not seeing the gym results you hoped for. Feeling discouraged?r)   zHire a personal trainerZtrainerr3   r   zWatch technique videosvideosr0   z
Keep at itrs   r-   ra   r+   zTA trainer shows you proper form and creates a plan. You're making real progress now!rt   r2   z2Learning proper technique makes a huge difference!r|   z0Consistency is key. You're building good habits.r_   z4You're in great shape! The gym is really paying off!zTrain for competitionZcompeterv   r,   zTry advanced workoutsadvancedzMaintain and enjoyr   z3Training for competition pushes you to new heights!z,Advanced workouts challenge you in new ways!z0You love your current fitness level and routine!z<Your gym workouts are going well. Seeing steady improvement!ry   rz   zJoin a classclasszTry new equipmentZ	equipmentz+Building strength transforms your physique!z%Group classes are motivating and fun!	   z<Trying new equipment keeps your workouts fresh and engaging!)rC   rD   r   rM   r	   rc   rF   rH   rd   r   r   ro   rJ   rK   rR   rL   rS   rI   )rT   r   r   rU   rV   r   r"   re   rf   rX   rd   rY   r   r   r   r     s    













r   c                 C   s  ddl m}m} d}tdd | jjD }|| jvo`| o`| jjdko`| jjdko`dt d	 k}d
}|dkrt	ddddt	dddt	ddddg}	t
||| ||	S |dkr|d dkr| j jd8  _| j jd7  _| j jd7  _| jd n|d dkr| j jd8  _| j jd7  _| j jd8  _tddddd}
| jj|
 | jj||
j|
j| j | jj|| jd d!d"gd#| jj td$d%d& dd'lm} || j | jd( n| j jd8  _| jd) d*S )+z0Try yoga with regular class option (ages 14-100)r   rg   	yogaClassc                 s   s   | ]}t |d ddkV  qdS )r
   NYogar   r    r   r   r   r#   ,  s   zyogaClass.<locals>.<genexpr>   rk   r'   r(   z-A friend invites you to try a yoga class. Go?r)   zYes, try it out!r1   r2   r,   zNo, not my thingr/   r0   zSign up for regular classesZregularrj   r   r-   r3   r+   zYou tried yoga and loved it!ra   r   r4   z?Regular yoga classes for flexibility, strength, and mindfulnessr5   z
Yoga Classr6   rn   Z
yogastudior   r;   r<   r?   z'You signed up for regular yoga classes!zYou decided yoga isn't for you.N)rA   r   r   rB   rC   rD   rE   rF   rH   r   r   rJ   rS   rI   rR   rL   ro   r   r   rM   r	   r   rN   rO   rP   rQ   r@   )rT   r   r   rU   r   r   rV   rW   rX   rY   yoga_activityr@   r   r   r   r   %  sn    







r   c                 C   s
  d}d}| j jD ]}t|dddkr|} q.qd}|rX| j jD ]}|j|jkr>|} qXq>|| jvo|duo|duo| j jdko| j jdkodt d k}	|	sdS |j}
|
d	k rd
}|dkrt	ddddt	dddt	dddg}t
||| |	|S |dkr|d dkrF| jd7  _| j  jd8  _| j  jd8  _| jd nd|d dkr| jd7  _| j  jd7  _| jd n*| jd7  _| j  jd7  _| jd nX|
dkrd}|dkrt	ddddt	d d!d"d#t	d$d%dg}t
||| |	|S |dkr|d dkr`| jd7  _| j  jd8  _| j  jd7  _| j  jd8  _| jd& n|d d!kr| jd'7  _| j  jd"8  _| j  jd(7  _| j  jd(7  _| jd) n,| j  jd*8  _| j  jd7  _| jd+ nd,}|dkr.t	d-d.ddt	d/d0ddt	d1d2dg}t
||| |	|S |dkr|d d.kr| jd7  _| j  jd8  _| j  jd'7  _| jd3 n|d d0kr| jd7  _| j  jd8  _| j  jd7  _| jd4 n:| jd'7  _| j  jd(8  _| j  jd7  _| jd5 dS )6z%Progress event for yoga practitionersyogaProgressNr
   r   r   rk   r'   r\   r:   zRSome of the yoga poses are challenging. You're not as flexible as others in class.r)   rr   r]   r+   r,   z Ask instructor for modificationsmodifyr0   zBe patient with yourselfZpatientr-   r3   z4Home practice helps you build flexibility gradually!rt   r2   z@Your instructor shows you modifications that work for your body!z;Yoga is about progress, not perfection. You're doing great!r_   z@You've become quite skilled at yoga! Your practice has deepened.zTry advanced classesr   zLearn to teach yogaZteach   r   zDeepen meditation practiceZmeditatezCAdvanced yoga challenges you in new ways and brings profound peace!r|   ra   zQYou completed yoga teacher training! Now you can share this practice with others!rv   z>Deepening your meditation brings incredible peace and clarity!zLYour yoga practice is going well. You're feeling more flexible and centered.zFocus on flexibilityZflexibilityzBuild strength posesrz   zEmphasize mindfulnessZmindfulnessz2Working on flexibility opens up new poses for you!z9Strength-building poses transform your practice and body!z2Mindful yoga brings deep peace and mental clarity!)rC   rD   r   rM   r	   rc   rF   rH   rd   r   r   rJ   r   rR   rL   rI   rS   rK   ro   )rT   r   r   rU   rV   r   r"   re   rf   rX   rd   rY   r   r   r   r   q  s    













r   )
r   r[   rh   rq   r}   r   r   r   r   r   )r   FF)r   FF)r   FF)r   FF)r   FF)r   FF)r   FF)r   FF)r   FF)r   FF)r   rH   r   Zevents.baser   r   r   r   r   r[   rh   rq   r}   r   r   r   r   r   __all__r   r   r   r   <module>   s   
L
i
K
h
I
i
n
k
L
n