o
    ¿ÔiR  ã                   @   s<   d dl mZmZmZ d dlmZ d dlmZmZ dd„ ZdS )é    )ÚFlaskÚrequestÚjsonify)Úconnect_to_database)ÚdatetimeÚ	timedeltac               
   C   s.  t j} |  d¡}|  d¡}|r|stddiƒdfS d }d }z_zÚtƒ }|jdd}| d|f¡ | ¡ sTtd	d
iƒdfW W |rD| ¡ nd  |rQ| 	¡ rQ| ¡  S d  S t
 ¡ }d}|dkrÅ| d|f¡ | ¡ r“| d|f¡ | ¡  td	diƒdfW W |rƒ| ¡ nd  |r| 	¡ r| ¡  S d  S | d||f¡ | d|f¡ | ¡  td	diƒdfW W |rµ| ¡ nd  |rÂ| 	¡ rÂ| ¡  S d  S |dkrP| d|f¡ | ¡ }|sötd	diƒdfW W |ræ| ¡ nd  |ró| 	¡ ró| ¡  S d  S |d pý|d }||  ¡ }	|d r|d  ¡ nd}
t|
|	 |ƒ}| d|||d f¡ | d|f¡ | ¡  td	diƒdfW W |r>| ¡ nd  |rM| 	¡ rM| ¡  S d  S |d krÙ| d!|f¡ | ¡ }|s…td	diƒdfW W |rs| ¡ nd  |r‚| 	¡ r‚| ¡  S d  S ||d   ¡ }|d" r˜|d"  ¡ nd}t|| |ƒ}| d#|||d f¡ | d$|f¡ | ¡  td	d%iƒdfW W |rÇ| ¡ nd  |rÖ| 	¡ rÖ| ¡  S d  S td	d&iƒdfW W |ré| ¡ nd  |rø| 	¡ rø| ¡  S d  S  tjjy< } z3|r| ¡ nd  tdd'|› iƒd(fW  Y d }~W |r&| ¡ nd  |r5| 	¡ r5| ¡  S d  S d }~w ty} } z5|rK| ¡ nd  tdd)t|ƒ› iƒd(fW  Y d }~W |rg| ¡ nd  |rv| 	¡ rv| ¡  S d  S d }~ww |r…| ¡ nd  |r”| 	¡ r”| ¡  w d  w )*NÚuser_idÚstatusÚerrorzuser_id and status are requiredi  T)Ú
dictionaryz"SELECT id FROM users WHERE id = %sÚmessagezUser not foundi”  io. ÚactivezvSELECT id FROM user_activity_management 
                WHERE user_id = %s AND is_active = 1 
                LIMIT 1z=UPDATE users SET useractivity_status = 'active' WHERE id = %szUser already activeéÈ   z™INSERT INTO user_activity_management 
                    (user_id, status, last_login_time, is_active) 
                    VALUES (%s, 'active', %s, 1)zNew active sessionéÉ   Zonlinez·SELECT id, updated_at, last_login_time, total_online_time 
                FROM user_activity_management 
                WHERE user_id = %s AND is_active = 1 
                LIMIT 1zNo active sessionÚ
updated_atZlast_login_timeZtotal_online_timer   zÅUPDATE user_activity_management 
                SET status = 'online', 
                    total_online_time = SEC_TO_TIME(%s), 
                    updated_at = %s 
                WHERE id = %sÚidz=UPDATE users SET useractivity_status = 'online' WHERE id = %szOnline time updatedZinactivez«SELECT id, last_login_time, total_active_time 
                FROM user_activity_management 
                WHERE user_id = %s AND is_active = 1 
                LIMIT 1Ztotal_active_timezñUPDATE user_activity_management 
                SET status = 'inactive', 
                    total_active_time = SEC_TO_TIME(%s), 
                    is_active = 0, 
                    last_logout_time = %s 
                WHERE id = %sz?UPDATE users SET useractivity_status = 'inactive' WHERE id = %szSession endedzInvalid statuszDatabase error: iô  zServer error: )r   ÚjsonÚgetr   r   ÚcursorÚexecuteÚfetchoneÚcloseÚis_connectedr   ÚnowÚcommitÚtotal_secondsÚminÚmysqlÚ	connectorÚErrorÚrollbackÚ	ExceptionÚstr)Údatar   r	   Úconnr   Úcurrent_timeZMAX_TIME_SECONDSZactivityZlast_updateZ	time_diffZcurrent_onlineZ
new_onlineZactive_secondsZcurrent_activeÚ
new_activeÚerrÚe© r)   úO/Users/harjaapdhillon/Desktop/newidea/medvista_backend/Services/UserActivity.pyÚmanage_user_activity   sú   

q€üþ_€¢üþR€
¯ûE€¼ú	þ.€ 
Óû!€ àù
þ€ ö	€ ø€"€ €û€&€ €û€ r+   N)	Úflaskr   r   r   Úconfr   r   r   r+   r)   r)   r)   r*   Ú<module>   s    