
    Ji                         d dl mZ d dlmZmZ d dlmZ d dlmZmZ d dl	Z	d dl
Z
d dlZdedefdZded	efd
ZdedefdZdede
j"                  fdZdededefdZdedededefdZy)    )Session)funcand_)datetime)ListDictNdbuser_idc                     | j                  t        j                        j                  t        j                  j                  |k(        j                         S N)querymodelsUserfilteridfirst)r	   r
   s     *E:\timesheet\timesheet_new\backend\crud.pyget_userr      s6    88FKK '''(ABHHJJ    usernamec                     | j                  t        j                        j                  t        j                  j                  |k(        j                         S r   )r   r   r   r   r   r   )r	   r   s     r   get_user_by_usernamer   
   s8    88FKK ''(<(<(HIOOQQr   emailc                     | j                  t        j                        j                  t        j                  j                  |k(        j                         S r   )r   r   r   r   r   r   )r	   r   s     r   get_user_by_emailr      s8    88FKK ''(9(9U(BCIIKKr   userc                     t        j                  |j                        }t        j                  |j
                  |j                  |      }| j                  |       | j                          | j                  |       |S )N)r   r   hashed_password)
authget_password_hashpasswordr   r   r   r   addcommitrefresh)r	   r   r   db_users       r   create_userr&      s\    ,,T]];Okkjj'G
 FF7OIIKJJwNr   activity_datac                    ddl m} |j                  dd      dz  |d<   |j                  d      r|j                  d      dk(  r;|j                  dd      }d	|v r%|j                  d	      d   j	                         |d<   | j                  t        j                        j                  t        t        j                  j                  |k(  t        j                  j                  |j                  d
d      k(  t        j                  j                  |j                  dd      k(  t        j                  j                  |j                  dt        j                               k(  t        j                  j                   |j                  dd      k(              j#                         }|rh|j$                  sZ ||      }|j                  d      |_        |j                  d      |_        |j                  d      |_        | j+                          |S  ||      }t        j                  ||j                  d
d      |j                  dd      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  dd      |j                  dd      |j                  dt        j                               |j                  d      |j                  d      |j                  d            }| j-                  |       | j+                          | j/                  |       |S )z2Create a new activity record (prevents duplicates)r   )extract_project_infodurationi  project_namegeneralwindow_title z - application_nameUnknown	timestampproject_typeproject_fileurl	file_pathdatabase_connectionspecific_processdetailed_activitycategoryother)r
   r/   r-   r4   r5   r6   r7   r8   r9   r*   r1   r+   r2   r3   )improved_project_extractorr)   getsplitstripr   r   ActivityRecordr   r   r
   r/   r-   r1   r   nowr*   r   r+   r2   r3   r#   r"   r$   )r	   r'   r
   r)   r-   existing_recordproject_infodb_activitys           r   create_activity_recordrD      s   ? !. 1 1*a @4 GM* ^,0A0A.0QU^0^$((<L ,8,>,>u,Ea,H,N,N,PM.) hhv445<<!!))W4!!22m6G6GHZ\e6ff!!..-2C2CNTV2WW!!++}/@/@hlln/]]!!**m.?.?
A.NN	
 eg  ++/>L+7+;+;N+KO(+7+;+;N+KO(+7+;+;N+KO(IIK (6L ''&**+=yI"&&~r:e$##K0)--.CD&**+=>'++,?@"":w7"":q1##K@!%%n5!%%n5!%%n5K" FF;IIKJJ{r   
start_dateend_datec                 	   ddl m} | j                         j                  }dt	        |      v rB| j                  t        j                  j                  t        j                  t        j                  j                  d      j                  d      t        j                  t        j                  j                        j                  d            j                  t        t        j                  j                   |k(  t        j                  j"                  |k\  t        j                  j"                  |k              j%                  t        j                  j                        j'                         }n?| j                  t        j                  j                  t        j(                  t        j                  j                        j                  d      t        j                  t        j                  j                        j                  d            j                  t        t        j                  j                   |k(  t        j                  j"                  |k\  t        j                  j"                  |k              j%                  t        j                  j                        j'                         }t        d |D              }g }|D ]  }	t+        t-        |	j.                  r|	j.                  j1                  d      ng             }
|
D cg c]  }|s|dk7  s| }
}| j                  t        j                        j                  t        t        j                  j                   |k(  t        j                  j                  |	j                  k(  t        j                  j"                  |k\  t        j                  j"                  |k              j3                  t        j                  j                  j5                               j7                         }|j9                  |	j                  |r|j:                  nd	|	j<                  |dkD  r|	j<                  |z  d
z  nd|
r|
dd ng |r|j>                  nd|r|j@                  nd|r|jB                  nd|r|jD                  nd|r|jF                  nd|r|jH                  nd|r|jJ                  nd|r|jL                  ndd        |jO                  d d       |S c c}w )z+Get activity summary grouped by applicationr   )text
postgresql,urlstotal_durationc              3   4   K   | ]  }|j                     y wr   )rL   ).0results     r   	<genexpr>z'get_activity_summary.<locals>.<genexpr>~   s     AvV**s   Noner:   d   N
   )r/   r9   r*   
percentagerK   r5   r6   r7   r8   r-   r+   r2   r3   c                     | d   S )Nr*    )xs    r   <lambda>z&get_activity_summary.<locals>.<lambda>   s    q}r   T)keyreverse)(
sqlalchemyrH   get_bindr4   strr   r   r?   r/   r   
string_agglabelsumr*   r   r   r
   r1   group_byallgroup_concatlistsetrK   r=   order_bydescr   appendr9   rL   r5   r6   r7   r8   r-   r+   r2   r3   sort)r	   r
   rE   rF   rH   database_urlresults
total_timesummaryrO   rK   r4   sample_records                r   get_activity_summaryro   Y   s    ;;=$$Ls<((((!!22OOF1155s;AA&IHHV**334::;KL
 &%%--8%%//:=%%//8;
 (!!22

#% 	 ((!!22f33778>>vFHHV**334::;KL
 &%%--8%%//:=%%//8;
 (!!22

#% 	 AAAJGC&++))#.2FG#=tssf}t= !6!67>>%%--8%%66&:Q:QQ%%//:=%%//8;	
 (6((11668
9%%' 	 	 & 7 72?..W--HRUV600:=C\]!%D"I24A00tHU=#D#D[_BO > >UYDQ!@!@W[:GM66T:GM66T:GM66T:GM66T
 	 @ LL,dL;NA >s   	S8S8S8)sqlalchemy.ormr   r[   r   r   r   typingr   r   r   schemasr   intr   r]   r   r   
UserCreater&   rD   ro   rV   r   r   <module>ru      s    " !    K K3 KRW R RL' L# L
G 
7#5#5 
;w ;t ;c ;zJW Js J JT\ Jr   