
    h                     $    S SK Jr   " S S5      rg)   )get_db_connectionc                   p    \ rS rSr\S	S j5       r\S
S j5       r\S
S j5       r\S 5       r\S 5       r	Sr
g)Staff   Nc                    [        5       nU(       d  / $  UR                  SS9n/ nSnU(       a  US-  nUR                  U5        US-  nUR                  U 5        UR                  U[	        U5      5        UR                  5       nUU(       a7  UR                  5       (       a!  UR                  5         UR                  5         $ $ $ ! [         aX  n[        SU 35        / s SnAU(       a7  UR                  5       (       a!  WR                  5         UR                  5         $ $ $ SnAff = f! U(       a7  UR                  5       (       a!  WR                  5         UR                  5         f f f = f)zKFetch a list of all staff, with a limit, including their default team name.T
dictionary,  
                SELECT 
                    e.pid, 
                    e.first_name, 
                    e.last_name,
                    ug.group_name as team_name
                FROM 
                    hris_core.employee_information_tbl e
                LEFT JOIN
                    intra.tag_group tg ON e.pid = tg.user_id AND tg.workspace_default = 'Y'
                LEFT JOIN
                    intra.user_group ug ON tg.group_id = ug.GID AND ug.workspace_status = 1
                WHERE
                    e.status = 'hired'
             AND tg.group_id = %sz, ORDER BY e.first_name, e.last_name LIMIT %szError fetching all staff: N
r   cursorappendexecutetuplefetchallis_connectedclose	Exceptionprint)limitteam_gidconnr   paramsqueryuserses           */var/www/fran/franai/models/staff_model.pyget_all_staffStaff.get_all_staff   s3    !"I%	[[D[1FFE  00h'CCEMM% NN5%-0OO%E
 ))++

 ,t	  	.qc23I))++

 ,t		 ))++

 ,ts1   A2C 
D(D#D( D+ #D((D+ +A E+c                    [        5       nU(       d  / $  UR                  SS9n/ nSnU (       a  US-  nUR                  U 5        US-  nUR                  U[	        U5      5        UR                  5       nUU(       a7  UR                  5       (       a!  UR                  5         UR                  5         $ $ $ ! [         aX  n[        SU 35        / s SnAU(       a7  UR                  5       (       a!  WR                  5         UR                  5         $ $ $ SnAff = f! U(       a7  UR                  5       (       a!  WR                  5         UR                  5         f f f = f)zYFetch a list of all hired staff for scheduler updates, including their default team name.Tr   r
   r   z# ORDER BY e.first_name, e.last_namez+Error fetching all hired staff for update: Nr   )r   r   r   r   r   r   r   s          r   get_all_hired_staff_for_update$Staff.get_all_hired_staff_for_update2   s'    !"I$	[[D[1FFE  00h'::ENN5%-0OO%E
 ))++

 ,t	  	?sCDI))++

 ,t		 ))++

 ,ts1   A!B5 5
D?DDD DD A Ec                    [        5       nU(       d  / $  UR                  SS9n/ nSnSU  S3nUR                  U5        U(       a  US-  nUR                  U5        US-  nUR                  U[	        U5      5        UR                  5       nUU(       a7  UR                  5       (       a!  UR                  5         UR                  5         $ $ $ ! [         aX  n[        SU 35        / s SnAU(       a7  UR                  5       (       a!  WR                  5         UR                  5         $ $ $ SnAff = f! U(       a7  UR                  5       (       a!  WR                  5         UR                  5         f f f = f)	z<Search for staff by name, including their default team name.Tr   at  
                SELECT 
                    e.pid, 
                    e.first_name, 
                    e.last_name,
                    ug.group_name as team_name
                FROM 
                    hris_core.employee_information_tbl e
                LEFT JOIN
                    intra.tag_group tg ON e.pid = tg.user_id AND tg.workspace_default = 'Y'
                LEFT JOIN
                    intra.user_group ug ON tg.group_id = ug.GID AND ug.workspace_status = 1
                WHERE 
                    CONCAT(e.first_name, ' ', e.last_name) LIKE %s
                    AND e.status = 'hired'
            %r   z	 LIMIT 10zError searching staff by name: Nr   )	namer   r   r   r   r   search_termr   r   s	            r   search_by_nameStaff.search_by_name_   s?    !"I&	[[D[1FFE  dV1+KMM+&00h'[ ENN5%-0OO%E
 ))++

 ,t	  	3A378I))++

 ,t		 ))++

 ,ts1   A8C 
D.D)%D.&D1 )D..D1 1A E1c                 \   [        5       nU(       d  g UR                  SSS9nSnUR                  X045        UR                  5       nUU(       a7  UR	                  5       (       a!  UR                  5         UR                  5         $ $ $ ! [         aV  n[        SU 35         SnAU(       a7  UR	                  5       (       a!  WR                  5         UR                  5         gggSnAff = f! U(       a7  UR	                  5       (       a!  WR                  5         UR                  5         f f f = f)z>Fetch staff details by PID, including their default team name.NT)bufferedr	   a  
                SELECT 
                    e.pid, 
                    e.first_name, 
                    e.last_name,
                    e.company_email, 
                    e.profile_photo_path,
                    p.name as position,
                    ug.group_name as team_name
                FROM 
                    hris_core.employee_information_tbl e
                JOIN 
                    hris_core.position_levels_tbl p ON e.position_id = p.id
                LEFT JOIN
                    intra.tag_group tg ON e.pid = tg.user_id AND tg.workspace_default = 'Y'
                LEFT JOIN
                    intra.user_group ug ON tg.group_id = ug.GID AND ug.workspace_status = 1
                WHERE 
                    e.pid = %s
            zError fetching staff by PID: )r   r   r   fetchoner   r   r   r   )pidr   r   r   userr   s         r   
get_by_pidStaff.get_by_pid   s     !"	[[$4[@FE( NN5&)??$D
 ))++

 ,t	  	1!56))++

 ,t		 ))++

 ,ts*   5B 
C(C# C+ #C((C+ +A D+c                 `   [        5       nU(       d  / $  UR                  SS9nSnUR                  X045        UR                  5       nUU(       a7  UR	                  5       (       a!  UR                  5         UR                  5         $ $ $ ! [         aX  n[        SU 35        / s SnAU(       a7  UR	                  5       (       a!  WR                  5         UR                  5         $ $ $ SnAff = f! U(       a7  UR	                  5       (       a!  WR                  5         UR                  5         f f f = f)zAFetch all hired staff for a specific team, including their email.Tr   a  
                SELECT 
                    e.pid, 
                    e.first_name, 
                    e.last_name,
                    e.company_email
                FROM 
                    hris_core.employee_information_tbl e
                JOIN
                    intra.tag_group tg ON e.pid = tg.user_id AND tg.workspace_default = 'Y'
                WHERE
                    e.status = 'hired' AND tg.group_id = %s
            z"Error fetching staff by team GID: N)r   r   r   r   r   r   r   r   )r   r   r   r   r   r   s         r   get_all_staff_by_teamStaff.get_all_staff_by_team   s     !"I	[[D[1FE NN5+.OO%E
 ))++

 ,t	  	6qc:;I))++

 ,t		 ))++

 ,ts0   4B 
C*C%!C*"C- %C**C- -A D- )
   N)N)__name__
__module____qualname____firstlineno__staticmethodr   r!   r'   r.   r1   __static_attributes__r3       r   r   r      sh    + +Z * *X , ,\ % %N  r;   r   N)services.mysql_servicer   r   r3   r;   r   <module>r=      s    6R Rr;   