a
    
ÜiÛ}  ã                   @   sd   d Z ddlZddlZG dd„ dƒZG dd„ dƒZdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dS )a3  
Job Management Module

This module contains all job and occupation-related classes and functions for the BaoLife game.
It handles job creation, assignment, performance tracking, promotions, and terminations.

Classes:
    - JobLevel: Represents a level/position within an occupation
    - OccupationClass: Represents a specific occupation with multiple levels

Functions:
    - getOccupations(): Returns all available occupations in the game
    - randomJob(player, person): Assigns a random job to a person
    - setJob(person, jobClass, date): Sets a specific job for a person
    - handleJob(player, person): Updates job performance and handles promotions/terminations
    - applyForJob(player, jobID): Allows player to apply for a specific job
    - quitJob(player, jobID): Allows player to quit their current job
é    Nc                   @   s   e Zd ZdZdd„ ZdS )ÚJobLevelaU  
    Represents a specific level/position within an occupation.

    Attributes:
        id (str): Unique identifier for the job level
        level (str): Name of the position (e.g., "Junior Software Engineer")
        salary (int): Monthly salary for this position
        energy_modifier (int): Energy cost modifier for this position
    c                 C   s"   t  ¡ j| _|| _|| _|| _d S )N)ÚuuidÚuuid4ÚhexÚidÚlevelÚsalaryÚenergy_modifier)Úselfr   r   r	   © r   ú1/var/www/lichun.app/lichun/ws/jobs/job_manager.pyÚ__init__#   s    zJobLevel.__init__N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r      s   	r   c                   @   s   e Zd ZdZddd„ZdS )ÚOccupationClassaÉ  
    Represents an occupation/job with multiple career levels.

    This class inherits from locationClass as occupations are also locations
    where characters spend their time.

    Attributes:
        title (str): Name of the occupation
        description (str): Description of the occupation
        shifts (str): Type of work shifts (e.g., "Day shift", "Rotating shifts")
        hourType (str): Full-time or part-time (default: "full-time")
        requirements (str): Education requirement (e.g., "bachelors_degree", "high_school", "none")
        type (str): Set to "job"
        levels (list): List of JobLevel instances representing career progression
        image (str): URL to occupation image
    Nc                 C   sX   ddl m} t ¡ j| _d| _|| _|| _|| _	|| _
d| _|| _d| _|| _g | _d S )Nr   )ÚlocationClassÚ
occupationz	full-timeÚjob)Úcore.modelsr   r   r   r   r   ÚtypeÚimageÚtitleÚdescriptionÚshiftsÚhourTypeÚrequirementsÚlevelsÚpeople)r
   r   r   r   r   r   r   r   r   r   r   r   ;   s    zOccupationClass.__init__)Nr   r   r   r   r   r   *   s   r   c               *   C   sê  t ddddtdddƒtddd	ƒtd
ddƒtdddƒtdddƒgdd�t ddddtdddƒtddd	ƒtdddƒtdddƒtdddƒgdd�t d d!ddtd"d#dƒtd d$d	ƒtd%d&dƒtd'ddƒtd(ddƒgd)d�t d*d+dd,td*d-dƒtd.d/d	ƒtd0d1dƒtd2d3dƒtd4ddƒgd5d�t d6d7ddtd8d9dƒtd6d:d	ƒtd;ddƒtd<d=dƒtd>ddƒgd?d�t d@dAdBd,tdCd#dƒtdDd$d	ƒtdEd-dƒtdFdGdƒtdHddƒgdId�t dJdKdBdLtdMddƒtdNdd	ƒtdOddƒtdPdQdƒtdRddƒgdSd�t dTdUdd,tdVd#dƒtdTdWd	ƒtdXd9dƒtdYd-dƒtdZd:dƒgd[ƒt d\d]dBd,td^dWdƒtd\d&d	ƒtd_d:dƒtd`dadƒtdbd1dƒgdcƒt dddeddtdfd-dƒtddd/d	ƒtdgd1dƒtdhd3dƒtdiddƒgdjƒt dkdlddLtdmddƒtdkd3d	ƒtdndodƒtdpdqdƒtdrdsdƒgdtƒt dudvddLtdwd/dƒtdud=d	ƒtdxddƒtdydzdƒtd{d|dƒgd}ƒt d~ddBdLtd€d:dƒtd~d�d	ƒtd‚d3dƒtdƒd„dƒtd…dzdƒgd†ƒt d‡dˆddtd‰dWdƒtd‡d-d	ƒtdŠd/dƒtd‹d1dƒtdŒd3dƒgd�ƒt dŽd�dBdtd�d$dƒtdŽdd	ƒtd‘dadƒtd’d“dƒtd”d•dƒgd–ƒt d—d˜ddtd™d&dƒtd—dGd	ƒtdšd�dƒtd›ddƒtdœd�dƒgdžƒt dŸd ddLtd¡d/dƒtdŸd1d	ƒtd¢d3dƒtd£ddƒtd¤d¥dƒgd¦ƒt d§d¨dd,td©d$dƒtd§dd	ƒtdªdadƒtd«d“dƒtd¬d•dƒgd­ƒt d®d¯dBd,td°d9dƒtd®d:d	ƒtd±ddƒtd²d=dƒtd³d´dƒgdµƒt d¶d·ddtd¸d-dƒtd¶d/d	ƒtd¹d1dƒtdºd3dƒtd»ddƒgd¼ƒt d½d¾dBd¿tdÀdÁdƒtd½d#d	ƒtdÂdWdƒtdÃd9dƒtdÄd-dƒgdÅƒt dÆdÇdBd¿tdÈdÉdƒtdÆdÁd	ƒtdÊdËdƒtdÌd#dƒtdÍdÎdƒgdÏƒt dÐdÑdBd¿tdÒdÁdƒtdÐdËd	ƒtdÓd#dƒtdÔdÎdƒtdÕdWdƒgdÖƒt d×dØdd¿tdÙd#dƒtd×dWd	ƒtdÚd9dƒtdÛd-dƒtdÜd:dƒgdÝƒt dÞdßdBd¿tdàdÎdƒtdÞd9d	ƒtdáddƒtdâd/dƒtdãd�dƒgdäƒt dådædd¿tdçdËdƒtdådÎd	ƒtdèd$dƒtdéd&dƒtdêddƒgdëƒt dìdídd¿tdîd#dƒtdìdWd	ƒtdïd9dƒtdðd-dƒtdñd:dƒgdòƒt dódôdd¿tdõdËdƒtdódÎd	ƒtdöd$dƒtd÷d&dƒtdøddƒgdùƒt dúdûdBd¿tdüdÁdƒtdúd#d	ƒtdýdWdƒtdþd9dƒtdÿd-dƒg�d ƒt �d�ddBd¿t�d�ddƒt�ddËd	ƒt�d�ddƒt�ddWdƒt�d�d	dƒg�d
ƒg} | S (  an  
    Returns a list of all available occupations in the game.

    Each occupation includes:
        - Job title and description
        - Education requirements
        - Career progression levels with salaries
        - Work shift types
        - Associated imagery

    Returns:
        list: List of OccupationClass instances representing all available jobs
    zSoftware Engineerz1Develop, test, and maintain software applicationsz	Day shiftÚbachelors_degreezJunior Software EngineeriÐ  é   i¸  é(   zSenior Software Engineeri   é2   zSoftware Engineering Managerip  é<   ZCTOi'  éF   a  https://cdn.discordapp.com/attachments/1106614533402931284/1218751308442501290/craig_vg_software_engineer_corporate_office_cartoon_style_82738406-5fab-4a50-a27f-863601e08dd3.png?ex=6608cd9b&is=65f6589b&hm=8565ea7c04f1de8ab02531da9a3c79607e5915b3a3d4f270594a450b21aad93e&)r   zRegistered NursezAProvide patient care and educate patients about health conditionszRotating shiftszJunior Registered NurseiÜ  zSenior Registered NurseiÄ	  zNurse ManagerzDirector of Nursingiˆ  a  https://cdn.discordapp.com/attachments/1106614533402931284/1218753226258518136/craig_vg_registered_nurse_office_cozy_cartoon_style_androgynous_01b66f1d-c3af-42a9-b475-66d76a6dc286.png?ex=6608cf64&is=65f65a64&hm=4a7fc03f67c83781ac2b7be760b8312c8ef8cd90ac7cf4d8acad8da0ceb360fa&zElementary School Teacherz)Teach students in a specific subject areazAssistant Teacheri   iL  z Senior Elementary School Teacheri  zHead TeacherZ	Principala  https://cdn.discordapp.com/attachments/1106614533402931284/1218754314999431309/craig_vg_elementary_school_teacher_classroom_cute_cozy_cartoon__b098c603-5958-4ce5-9e08-a8f66dac7d21.png?ex=6608d068&is=65f65b68&hm=48e12924c07a2619796effe2809ce1ab6bc85b596e0c272591c5668565e2de01&zPolice Officerz'Maintain public safety and enforce lawsÚhigh_schoolix  ZSergeanti  Z
Lieutenanti˜  ZCaptaini(
  zChief of Policea  https://cdn.discordapp.com/attachments/1106614533402931284/1218755582559911936/craig_vg_police_officer_at_work_cozy_cartoon_style_9c15e689-4dfd-4aa5-9239-f751124cb27a.png?ex=6608d196&is=65f65c96&hm=721d09d328b54239e7376ad531546153d017b0d73435d5d508caa3765c53e149&Ú
Accountantz%Prepare and examine financial recordszJunior Accountanti°  i@  zSenior AccountantzAccounting Manageri`	  zChief Financial Officera  https://cdn.discordapp.com/attachments/1106614533402931284/1218756621971488858/craig_vg_corporate_accountant_office_cozy_cartoon_style_4a49f16b-6796-4d52-aad8-5011adb7090d.png?ex=6608d28e&is=65f65d8e&hm=d507d0ece82ff2310889659ad7d1da427691c2519198ab9142936d7663a928de&ÚChefz&Prepare and cook meals in a restaurantzVariable shiftsz	Line Cookz	Sous Chefz	Head ChefzExecutive Chefi¤  zMaster Chefzøhttps://cdn.discordapp.com/attachments/1106614533402931284/1218756781694652496/craig_vg_chef_kitchen_cartoon_style_972262c1-9427-423c-9dc0-7048bfcabaac.png?ex=6608d2b4&is=65f65db4&hm=e2d358babeccde4c88184cbe7d42dabc03f5b1fa0e0ef7e2353225edd0e52e57&ÚLawyerz&Represent clients in legal proceedingsÚdoctorate_degreeZ	AssociatezSenior AssociateÚPartnerzSenior Partneri¬  zManaging Partnera  https://cdn.discordapp.com/attachments/1106614533402931284/1218758065491284038/craig_vg_lawyer_office_cute_cozy_cartoon_style_075eff79-b3b4-49ff-93a7-a555999f205e.png?ex=6608d3e6&is=65f65ee6&hm=2788d48cf6991bcd5986d945f8baa6766b39bae4619bebddb2bc7ecb21fd028b&zAutomotive MechaniczRepair and maintain vehicleszApprentice Mechaniciè  zMaster MechaniczShop ForemanzService Managera  https://cdn.discordapp.com/attachments/1106614533402931284/1218758042624196718/craig_vg_automotove_mechanic_shop_cute_cozy_cartoon_style_0b0eb986-dcc5-4d8e-9d41-76b56f0e84bc.png?ex=6608d3e0&is=65f65ee0&hm=56e4cf50ab694e4f80425bfb46581a355db6f15bf7a217ec6477a91dc387e871&zSales Representativez1Sell goods or services to businesses or consumerszJunior Sales RepresentativezSenior Sales RepresentativezSales Manageril  zDirector of Salesa  https://cdn.discordapp.com/attachments/1106614533402931284/1218953374079258644/craig_vg_sales_sleek_corporate_office_cozy_cartoon_style_95ad0a28-f265-43f9-899c-24aee7e3398c.png?ex=660989cb&is=65f714cb&hm=cf971f79b3f32f518fe117cfa88fb5c673a1ca8f964b461226f673a811bab0ed&Ú	Architectz/Design buildings and oversee their constructionzJunior ArchitectzSenior ArchitectzPrincipal ArchitectzChief Architecta  https://cdn.discordapp.com/attachments/1106614533402931284/1218758567411322900/craig_vg_architect_corporate_office_cute_cozy_cartoon_style_ebcb7626-07c9-4a00-8b28-9b4710817ff5.png?ex=6608d45d&is=65f65f5d&hm=47264f737b42a371241ac8f76807dbcb9edb1e1efc998c8b973a3c636db5fcae&Ú	Physicianz<Examine patients, diagnose illnesses, and provide treatmentszResident PhysicianzSenior Physiciani€  zDepartment HeadiØ  zChief Medical Officeri0  zþhttps://cdn.discordapp.com/attachments/1106614533402931284/1218953997801750579/craig_vg_doctor_office_cozy_cartoon_style_183f5128-9ddd-46f6-ad7e-5f611e87cfbd.png?ex=66098a60&is=65f71560&hm=9994300ede63da767872bb02cd02f91ee6543d36dc788ea8599352bc8bdad782&ÚDentistz.Diagnose and treat issues with patients' teethzJunior DentistzSenior DentistzHead of Dentistryi  zChief Dental Officerih  a  https://cdn.discordapp.com/attachments/1106614533402931284/1218954312642854912/craig_vg_dentist_ofice_cute_cozy_cartoon_style_0930e6ae-e85a-4472-995b-a121aa93e320.png?ex=66098aab&is=65f715ab&hm=3b6814d4b032980dc11dfd7a538ec9913b9ce59cb89f9eee6f954f6f7b86a74b&Ú
PharmacistzDProvide prescription medications to patients and offer health advicezJunior Pharmacisti4  zSenior PharmacistzPharmacy Manageri  zDirector of Pharmacya  https://cdn.discordapp.com/attachments/1106614533402931284/1218954456482185276/craig_vg_Pharmacist_office_cute_cozy_cartoon_style_9505ece8-fd4d-456b-ae52-88892ad09071.png?ex=66098acd&is=65f715cd&hm=8c5b0cb7a48ffd823ad963c77614234d973a80dc704552639d517e21bedea1a6&Ú	Librarianz2Help patrons find information and conduct researchzAssistant LibrarianzSenior LibrarianzLibrary ManagerzDirector of Library Servicesa  https://cdn.discordapp.com/attachments/1106614533402931284/1218954416086843483/craig_vg_library_desk_cute_cozy_cartoon_style_f349682a-bd39-4011-9658-2cb982c4e50a.png?ex=66098ac3&is=65f715c3&hm=e62fd84ea784e97201f2149a99394ddfbc6feb12da8e7e1d0c3d510ae0071234&Ú
Journalistz<Report news stories for newspapers, magazines, or televisionzJunior JournalistzSenior JournalistZEditoriü  zEditor in ChiefiŒ
  a  https://cdn.discordapp.com/attachments/1106614533402931284/1218954911094407329/craig_vg_journalist_office_cute_cozy_cartoon_style_8b0f9fb3-640b-4b5d-abc8-8561a8e2abe3.png?ex=66098b39&is=65f71639&hm=ceb148f7a309769b7e93be4df2dc9f5468cfdbba57e8f0c5d45a2ff50bf542c5&Ú	Counselorz;Help people manage and overcome mental and emotional issueszJunior CounselorzSenior CounselorzCounseling Services ManagerzDirector of Counseling ServicesiT  a  https://cdn.discordapp.com/attachments/1106614533402931284/1218954956317528104/craig_vg_counselor_office_cute_cozy_cartoon_style_4926711f-1ca8-49dd-bc87-0ad5185421c1.png?ex=66098b44&is=65f71644&hm=42dee89643da1ac89dd6cdb6070c805d3383ce6d6f8c96d27ae709894b6b2e4b&ÚVeterinarianz>Diagnose, treat, and research diseases and injuries in animalszVeterinary InternzSenior VeterinarianzVeterinary Services ManagerzDirector of Veterinary ServicesiH  a	  https://cdn.discordapp.com/attachments/1106614533402931284/1218955149238866061/craig_vg_Veterinarian_office_cute_cozy_cartoon_style_97327cf0-0a74-42c0-91c3-06ceaf207777.png?ex=66098b72&is=65f71672&hm=5ed90f867b15fd2a375332da1828f36afdd5625c949adb788bb36948ee634d81&ZElectricianz>Install, maintain, and repair electrical systems and equipmentzApprentice ElectricianzMaster ElectricianzElectrical SupervisorzElectrical Contractora  https://cdn.discordapp.com/attachments/1106614533402931284/1218955096830902333/craig_vg_Electrician_workspace_cute_cozy_cartoon_style_4e6bfd04-02a2-49bb-a3c1-0c149292e6ca.png?ex=66098b66&is=65f71666&hm=34e72f86570769f336a0606ded7cef2cb2ad87df0d7c344d0457de9cd3e77117&zReal Estate Agentz'Rent, buy, or sell property for clientszJunior Real Estate AgentzSenior Real Estate AgentzReal Estate BrokerzReal Estate Agency Ownerið
  a  https://cdn.discordapp.com/attachments/1106614533402931284/1218955487027134504/craig_vg_real_estate_sales_office_sleek_cute_cozy_cartoon_style_74a66733-7b67-4a53-91df-862b4b132f58.png?ex=66098bc3&is=65f716c3&hm=5f221635151613847ac14cca1b5621506ae48d30cb36248e388467673337252a&zGraphic Designerz+Create visual concepts to communicate ideaszJunior Graphic DesignerzSenior Graphic DesignerzArt DirectorzCreative Directora  https://cdn.discordapp.com/attachments/1106614533402931284/1218955697534926898/craig_vg_graphic_designer_workspace_cute_cozy_cartoon_style_9199c766-61be-4c2c-8743-75c43cd7763c.png?ex=66098bf5&is=65f716f5&hm=2cf933b8153b1e6d6e7659c87520ce4ed2434be3066259211b552ffb165ce948&ZJanitorz%Perform general cleaning of buildingsÚnonezJanitorial AssistantiX  zSenior JanitorzJanitorial SupervisorzJanitorial Managera  https://cdn.discordapp.com/attachments/1106614533402931284/1218956044907184228/craig_vg_janitor_workspace_hallway_cute_cozy_cartoon_style_7833142d-090e-40fe-a18b-cb80c2cac6f0.png?ex=66098c48&is=65f71748&hm=82e0c829876ccabbe1712d4edc601205d91d81e090e8fe53864fcf4e6d76d845&zFast Food WorkerzServe food to customerszFast Food Associateiô  zFast Food Shift Leaderi¼  zFast Food ManagerzFast Food General Manageri„  a	  https://cdn.discordapp.com/attachments/1106614533402931284/1218956084396429493/craig_vg_fast_food_workspace_cute_cozy_cartoon_style_dc2c1155-6230-4aea-9c49-7577b8226e5b.png?ex=66098c51&is=65f71751&hm=b2a2a78a2e9422f7efadf746d677ffba7470411c49fc71c636a0b3a101eaaf16&zRetail Workerz"Assist customers in a retail storezSales AssociatezSenior Sales AssociatezRetail ManagerzStore Ownera  https://cdn.discordapp.com/attachments/1106614533402931284/1218956885718204657/craig_vg_retail_sales_workspace_cute_cozy_cartoon_style_29a7c377-8dc7-43f4-a095-5003e5c12f21.png?ex=66098d10&is=65f71810&hm=876e10137422615e4bf13cc95ce5d79dab1d56976ed8427040c3be61841d4776&zConstruction Laborerz,Perform physical labor at construction siteszJunior Construction LaborerzSenior Construction LaborerzConstruction ForemanzConstruction Managera  https://cdn.discordapp.com/attachments/1106614533402931284/1218956900909973585/craig_vg_construction_site_cute_cozy_cartoon_style_bf1bdff6-6327-45ae-ab81-25df751d0a52.png?ex=66098d14&is=65f71814&hm=fa32a7967dd3ef8678ec362511fd914f883e7aaa26967b54e6c77d5ff17d31f5&zTruck Driverz7Drive a truck or other large vehicle to transport goodszJunior Truck DriverzSenior Truck DriverzTruck Fleet SupervisorzTruck Fleet Managera  https://cdn.discordapp.com/attachments/1106614533402931284/1218957188031053844/craig_vg_semi_truck_driver_cabin_cute_cozy_cartoon_style_666a5835-e588-4f40-9b6c-f6fe9527a3fa.png?ex=66098d58&is=65f71858&hm=abdaff2cac295a2b13c9bc5d1ccffc2faddc3f4a31ee02eca04d5113af320566&zFarm Workerz0Plant, cultivate, and harvest agricultural cropszFarm HelperzSenior Farm WorkerzFarm SupervisorzFarm Managerzÿhttps://cdn.discordapp.com/attachments/1106614533402931284/1218957775200059442/craig_vg_farm_yard_cute_cozy_cartoon_style_55c20653-9e3d-4885-9e57-ac0d34013cb6.png?ex=66098de4&is=65f718e4&hm=eb60818cac6ffaf993d9feb85867ab9695f4c0e61f98e414a38f8cf712ddce1e&Z
Landscaperz7Maintain the appearance of outdoor areas and structureszJunior LandscaperzSenior LandscaperzLandscaping SupervisorzLandscaping Managera  https://cdn.discordapp.com/attachments/1106614533402931284/1218958478345900122/craig_vg_Landscaper_yard_cute_cozy_cartoon_style_98448b52-a2e2-4959-abda-e31a9e6e0227.png?ex=66098e8c&is=65f7198c&hm=15cd527a14f7a2184656a5cd32f910b248f3e2574231adc2406368af06a78df6&zHome Health AidezIAssist people with disabilities, chronic illness, or cognitive impairmentzJunior Home Health AidezSenior Home Health AidezHome Health Care SupervisorzHome Health Care Managera  https://cdn.discordapp.com/attachments/1106614533402931284/1218957917450141806/craig_vg_Home_Health_Aide_space_cute_cozy_cartoon_style_2b783342-6816-4a6f-a26e-98b1db93c6c3.png?ex=66098e06&is=65f71906&hm=3c43be6946b62a5be34fae42214bdfc15ff7ce13187e436e2bdbb5daeb8342b9&zRestaurant Serverz7Take orders and serve food and beverages at restaurantszJunior ServerzSenior ServerzRestaurant Shift ManagerzRestaurant Managera  https://cdn.discordapp.com/attachments/1106614533402931284/1218958313438576661/craig_vg_Restaurant_Server_space_cute_cozy_cartoon_style_b69b355a-c9f3-498f-a8b5-086d7f1ea43a.png?ex=66098e65&is=65f71965&hm=18265011fe826031f60dbf9b2d9cf93c1f991e637edabd68cfea66a11dcc3434&ZCashierz6Handle customer payments in a retail or other businesszJunior Cashieri&  zSenior CashieriR  zShift SupervisorzStore Manageri~  a  https://cdn.discordapp.com/attachments/1106614533402931284/1218958572419940472/craig_vg_cashier_space_cute_cozy_cartoon_style_decf1bb6-a748-4db2-9c7f-4f73544c9dae.png?ex=66098ea2&is=65f719a2&hm=7be215b18f07093c17201c0b747ec0e4ca9a565b2744c84f7f66e5654196d970&)r   r   )Úoccupationsr   r   r   ÚgetOccupationsL   s   




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûô




ûôûô€ € € è   *r7   c                 C   s(   |j dkr$t | j¡}t||| jƒ |S )a  
    Assigns a random job to a person if they are old enough.

    Args:
        player: The player object containing available occupations
        person: The person object to assign a job to

    Returns:
        person: The person object with job assigned (if age > 22)
    é   )ÚageYearsÚrandomÚchoicer6   ÚsetJobÚdate)ÚplayerÚpersonr   r   r   r   Ú	randomJob  s    
r@   c                 C   sP   ddl m} || _| j | j¡ || jj| jj|ƒ}|jd |_| j	 |¡ dS )a‘  
    Sets a specific job for a person and creates an activity record.

    This function:
    - Assigns the job to the person
    - Adds the job to their activities list
    - Creates an activity record starting at the first level

    Args:
        person: The person object to assign the job to
        jobClass: The OccupationClass instance to assign
        date: The date when the job starts
    r   )ÚActivityRecordN)
r   rA   r   Ú
activitiesÚappendr   r   r   r   ÚactivityRecords)r?   ZjobClassr=   rA   Úrecordr   r   r   r<     s    r<   c                 C   sÚ  ddl m} | jjD �]¾}|jdkrt|jƒD �]¢\}}|j|jkr.|}d}|jdkr`|d7 }n|jdkrr|d7 }t	 
d| d| ¡}|j| jjkr¸td	t|j| jƒ d
 t|ƒ ƒ |j|  j|7  _|jdkrÜd|_|jdk rìd|_|jdk�r t|jƒD ]œ\}	}
|
j|jjk�r|	t|jƒd k �r|j|	d  |_d|_d|j|	d  j d |j d }| j |¡ | j |d|| dd|jddddƒ
¡  �q �q|jdk r.tdƒ d|_| j d|j d ¡  qq.qdS )a+  
    Updates job performance and handles promotions/terminations.

    This function:
    - Updates performance based on focus level (Work Hard, Balanced, Slack Off)
    - Handles promotions when performance > 90
    - Handles terminations when performance < 10
    - Adds appropriate messages to player's message queue

    Performance modifiers:
    - Work Hard: +2
    - Balanced: 0
    - Slack Off: -1

    Args:
        player: The player object (for message queue and occupations list)
        person: The person whose job performance to update
    r   )ÚmessageFunctionr   z	Work Hardé   z	Slack Offéÿÿÿÿé   zupdating performance: z - éd   éZ   z*You have been promoted to the position of z at Ú.Z	promotionTZ	Promotioné
   ZfiredFz%You have been fired from your job as N)ÚeventsrF   ÚcrB   r   Ú	enumeraterD   r   Úfocusr:   ÚrandintÚprintÚstrÚperformancer   r   Úlenr   ÚmessageQueuerC   r   r   )r>   r?   rF   r   ÚindexÚitemrE   Zperf_modifierZperf_updateÚir   Úmessager   r   r   Ú	handleJob,  sD    



$

"$

r\   c                 C   sV   | j D ]J}|j|krt| j|| jƒ | j d|j d ¡ ddlm	} || |ƒ} qdS )aY  
    Allows the player to apply for a specific job.

    This function:
    - Finds the job by ID in available occupations
    - Sets the job for the player's character
    - Creates coworkers for the new job
    - Adds a confirmation message

    Args:
        player: The player object
        jobID: The unique ID of the job to apply for
    z%You have applied for the position of rL   r   )Úcreate_coworkersN)
r6   r   r<   rO   r=   rW   rC   r   Úcharacter.character_managerr]   )r>   ÚjobIDr   r]   r   r   r   ÚapplyForJobj  s    

r`   c                 C   sˆ   | j D ]|}|j|kr| jjD ]}|j|jkr| jj |¡ q| jjD ]}|j|jkrD| jj |¡ qDd| j_| j d|j	 d ¡ qdS )aQ  
    Allows the player to quit their current job.

    This function:
    - Finds the job by ID
    - Removes it from activities list
    - Removes the activity record
    - Sets occupation to 'unemployed'
    - Adds a confirmation message

    Args:
        player: The player object
        jobID: The unique ID of the job to quit
    Z
unemployedzYou have quit your job as rL   N)
r6   r   rO   rB   ÚremoverD   r   rW   rC   r   )r>   r_   r   ÚactivityrE   r   r   r   ÚquitJob€  s    

rc   )r   r:   r   r   r   r7   r@   r<   r\   r`   rc   r   r   r   r   Ú<module>   s   "   ;>