a
    Ài[   ã                   @   s  d Z ddlZddlT ddlT e e¡ZddlmZm	Z	m
Z
mZmZ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mZmZmZ ddlmZmZ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-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP dd	lQmRZRmSZSmTZTmUZUmVZV dd
lWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZa ddlbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZv ddlwmxZxmyZymzZzm{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‡mˆZˆm‰Z‰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–m—Z—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£ ddl¤m¥Z¥m¦Z¦ ddl§Z§ddl¨Z¨dZ©dd„ Zªdd„ Z«e ¬d¡ e ­d¡ dS )a7  
BaoLife Functions Module - Refactored Structure

This module serves as the main entry point and backward compatibility layer
for all game functions. The code has been refactored into logical modules:

- database/ - Database operations and save/load functions
- core/ - Core model classes (playerClass, personClass, etc.)
- character/ - Character creation, management, and appearance
- relationships/ - Relationship management and dating
- education/ - School, college, and extracurricular management
- jobs/ - Occupation and career management
- health/ - Health, habits, and weight management
- stats/ - Stats updates, moods, finances, and event checking
- shop/ - Store items and purchases
- utils/ - Helper functions and game speed validation

For backward compatibility, all functions are re-exported from this module.
é    N)Ú*)
Úconnect_to_databaseÚget_database_connectionÚ
insertGameÚsaveGameÚsaveGameAsyncÚloadGameÚloadGameAsyncÚ	loadGamesÚsaveConversationMessageÚmarkConversationAsRead)
ÚlocationClassÚActivityRecordÚEducationRecordÚ
dailyEventÚplayerClassÚpersonClassÚoneTimeEventÚscheduleDaysÚ	schedulerÚrelationshipClass)Úvalidate_game_speedÚget_speed_button_valuesÚlog_speed_change)ÚgetFromArrayÚ	randArrayÚ
find_by_idÚ
find_whereÚfindCharactersÚfindÚfind_where_testÚrandÚremove_text_before_first_colonÚordinal_suffixÚ
getWeekDayÚupcoming_saturdayÚ
get_seasonÚgenerate_random_dateÚparseLocationsÚgetOppositeSexÚcreate_jwt_tokenÚ_unpickle_health_conditionÚ_reduce_health_condition)ÚsetBirthdayÚgetPersonDescriptionÚgetOpenAIDescriptionÚ
set_avatarÚget_lastnameÚget_firstnameÚget_partnerÚ	add_childÚget_youngestChildÚadd_parentsÚadd_older_siblingsÚadd_grandparentsÚ
add_friendÚget_random_classmateÚget_random_friendÚget_random_characterÚget_random_familyÚget_allFamilyÚcreate_characterÚcreate_classmatesÚcreate_coworkersÚ
get_personÚget_relationshipÚupdate_relationshipÚ	updateBioÚ	setValuesÚcharacterSetup)Úget_hair_colorÚget_hair_typeÚget_facial_hairÚget_accessoryÚget_skin_color)
ÚupdateAffinityÚhandleRelationshipsÚ
getRelDataÚromanceÚgetActiveRelationshipÚbreakUpÚpartnerGiftÚ	dateNightÚDateIdeaÚgetDateIdeas)ÚElementarySchoolClassÚHighSchoolClassÚCollegeClassÚCollegeMajorClassÚ
FocusClassÚExtraCurricularÚ
getSchoolsÚgetCollegesÚ	getMajorsÚ
getFocusesÚrandomFocusÚupdate_focusÚgetFocusÚgetExtraCurricularsÚrandomExtraCurricularÚsetEducationÚhandleEducationÚsetExtracurricularÚapplyForExtracurricularÚquitExtraCurricular)ÚJobLevelÚOccupationClassÚgetOccupationsÚ	randomJobÚsetJobÚ	handleJobÚapplyForJobÚquitJob)Ú
HabitClassÚHealthConditionÚ	setHabitsÚ	quitHabitÚstopQuitHabitÚhandleHabitChangesÚgetWeightTypeÚhandleWeightÚhandleHealthÚhandleDeathÚhandleHungerÚ	mealEventÚupdateDeathChanceÚgetHealthConditions)ÚconnectÚcheckDilemmasÚcheckEventsÚcheckDayEventsÚcheckTutorialEventsÚscheduleCompleteÚ	updateAgeÚsetLikesDislikesÚhandleUpdatesÚparseOneTimeEventsÚhandleMoodsÚhandleFinancesÚgetPeakEnergy)Ú	StoreItemÚInAppPurchaseItemÚgetStoreItemsÚpurchaseItemÚgetInAppPurchaseItemsÚpurchaseInAppItem)Úget_dailyPlanÚgetIntradayActivityzlichun.lichunWebsocketc              	   Ã   s¶   t d|  d | ƒ ddtdtƒ › �dœ}d|dd	œi}d
| › �}tjdd�4 I d H šF}|j|||d�I d H }t |j|jƒ |j|jfW  d   ƒI d H  S 1 I d H s¨0    Y  d S )Nzsending push notification for z with message Ú0Ú10zbearer )zapns-expirationzapns-priorityz
apns-topicÚauthorizationZapsÚdefault)ZalertZsoundz0https://api.development.push.apple.com/3/device/T)Zhttp2)ÚheadersÚjson)ÚprintÚ	BUNDLE_IDr*   ÚhttpxZAsyncClientÚpostÚstatus_codeÚcontent)Zdevice_tokenÚmessagerš   Zpayload_dataÚurlÚclientÚresp© r¦   ú*/var/www/lichun.app/lichun/ws/functions.pyÚsend_push_notification  s     
üþÿ
r¨   c                 Ã   sn   t  dd¡dkrjddlm} ddlm} || ƒ}|| |ƒI d H  tdƒ t| jd|j	› d|j
› �ƒI d H  d S )Nr   éd   )ÚsendCharacterMessage)r<   zattempting notificationzNew message from Ú )ÚrandomÚrandintÚconversationEventsrª   Ú	functionsr<   rœ   r¨   ZdeviceTokenÚ	firstnameÚlastname)Úplayerrª   r<   Ú	characterr¦   r¦   r§   ÚsendRandomCharacterMessage  s    r´   z>Functions module loaded successfully with refactored structureznAll submodules imported: database, core, character, relationships, education, jobs, health, stats, shop, utils)®Ú__doc__ÚloggingÚ	dayEventsÚeventsÚ	getLoggerÚ__name__ÚloggerZdatabase.db_operationsr   r   r   r   r   r   r	   r
   r   r   Zcore.modelsr   r   r   r   r   r   r   r   r   r   Zutils.game_speedr   r   r   Zutils.helpersr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   Zcharacter.character_managerr-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   Zcharacter.appearancerH   rI   rJ   rK   rL   Z"relationships.relationship_managerrM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   Zeducation.education_managerrW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   Zjobs.job_managerrk   rl   rm   rn   ro   rp   rq   rr   Zhealth.health_managerrs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r€   Zstats.stats_managerr�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   Zshop.shop_managerrŽ   r�   r�   r‘   r’   r“   ÚintradayActivityr”   r•   rž   r¬   r�   r¨   r´   ÚinfoÚdebugr¦   r¦   r¦   r§   Ú<module>   s0   
00	Tt!0X(@< 
