
    eiG                     8    d dl Z d dlZd dlZd dlZ G d d      Zy)    Nc                   6    e Zd ZddZd Zd Zd	dZd	dZd Zy)

GLPIClientNc                 \    || _         || _        || _        d | _        |xr |xr | | _        y N)api_url	app_token
user_tokensession_tokenis_mock)selfr   r   r	   s       3/var/www/html/glpi_dashboard/modules/glpi_client.py__init__zGLPIClient.__init__   s3    "$!#@	@jA    c                 P   | j                   ry| j                  d| j                   d}	 t        j                  | j
                   d|      }|j                          |j                         j	                  d      | _        y# t        $ r}t        d|        Y d }~yd }~ww xY w)	NTzuser_token )	App-TokenAuthorizationz/initSession)headersr
   zError initializing session: F)r   r   r	   requestsgetr   raise_for_statusjsonr
   	Exceptionprint)r   r   responsees       r   init_sessionzGLPIClient.init_session   s    << *4??*;<
	||t||nL$A7SH%%'!)!4!4_!ED 	045	s   AB 	B%B  B%c                 4    | j                   | j                  dS )N)r   zSession-Token)r   r
   )r   s    r   get_headerszGLPIClient.get_headers   s    !//
 	
r   c                 ^    | j                   r| j                  |      S | j                  |      S r   )r   _generate_mock_tickets)r   limits     r   get_ticketszGLPIClient.get_tickets%   s-    <<..u55 **511r   c                 l   ddddddd}g d}g }t         j                   j                         }t        |      D ]  }t        j                  t        |j                               g d	
      d   }|t        j                  t        j                  dd            z
  }|dv r.|t        j                  t        j                  dd            z   }	nd}	|dz   d|dz    ||   |||	t        j                  |      t        j                  dd      d}
|j                  |
        t        j                  |      S )z,Generates realistic mock data for testing UINovozEm Processamento	PlanejadoPendenteSolucionadoFechado)                  )HardwareSoftwareRede
ImpressoraAcesso)
      r4   r4      r5   )weightsr   r6   )days)r-   r.   r)   0   )hoursNzChamado Exemplo r-   )idnamestatus	status_iddate	solvedatecategorypriority)datetimenowrangerandomchoiceslistkeys	timedeltarandintchoiceappendpd	DataFrame)r   count
status_map
categoriesdatarD   ir>   date_creationdate_solvedtickets              r   r    z!GLPIClient._generate_mock_tickets-   s$   $6;:Zgluv
M
##%u 	 AtJOO,='>H`abcdI("4"4&..B:O"PPM F"+h.@.@v~~VWY[G\.]]" !e*1Q3%0$Y/&%("MM*5"NN1a0	F KK)	 , ||D!!r   c                     t        |      }t        ||d   j                  ddg               }||z
  }|dkD  r||z  dz  nd}||||dS )z"Calculates KPIs from the dataframer=   r'   r(   r   d   )totalsolvedopensuccess_rate)lenisin)r   dftotal_ticketssolved_ticketsopen_ticketsr]   s         r   get_kpiszGLPIClient.get_kpisM   sj    BR8 1 1=)2L MNO$~5ANQRAR6<XY #$ (	
 	
r   )NNN)rY   )	__name__
__module____qualname__r   r   r   r"   r    rd    r   r   r   r      s"    B"
2"@
r   r   )r   pandasrN   rC   rF   r   rh   r   r   <module>rj      s       S
 S
r   